Design Flow

Here is the instruction for the elements of a Flow. Before beginning to study this page, you should master the basic knowledge and the basic operation mentioned in the previous part. After reading this page, you'll learn the elements of a Flow, which will help you design a Flow by using Flow Designer.

Flow Elements

The elements of a Flow are as below.

Components

In Flow, the data processing location is component. The essentioal information used for prossessing data with component is set in the component property. Some components need licences, so the icons of the components without licences are grey. If you double click the components in the Flow window of Flow Designer, you will find some componets have their own specific functions, for example, the components that can start the tools related to settings.

In the Flow window, you can connect components with lines according to the processing procedure, then the data will be transmitted along the lines.

フロー

Component Property

You can set a component property by entering values into the inspector directly, and you can also set a mapper or a property formula to set values dynamically while running. Some components have tab pages.

HTTPGet Component Property

フロー

"Help" Documents of Componets

Help documents of the componets are the instructions about input data, output data, component property, error proccesing and supplementary. To open a help document, you can right click the component in the pallet or in the Flow window to open a menu, then click "Help".

フロー

the Start Component and the End Component of a Flow

There must be a start component and an end component in a Flow.

Regarding to the components used to control data processing of a Flow, we will instruct about it in the "The processing in a Flow" later.

You can refer to "Processing flow in a Flow""Start and end a Flow" under the "More topics" on the left for more information about the start component and the end component of a Flow.

Start a Flow

A Flow must start from a start component. There are 2 kinds of start components. They are Start Component and HttpStart Component. The HttpStart Component is used when start a Flow with HTTP. Comparing with the common Start component, it's more convenient to process the form parameters and Cookies. The transaction control of a Flow can be set in the "Transaction" property of a start component.

コンポーネント

End a Flow

To end a Flow, you can use an end component. If the link of the component is unstable, it's because a compile error occured. A Flow will return an output stream as a result. If there are multiple output streams in an end component, an error will occur when the Flow is running.

The end component is a terminal for a loop. If there is a loop in the Flow processing, once the loop reaches the end component, it will soon return to the component where the loop began (Except the Break Component). We will instruct more about loop in the "Loop" later.

コンポーネント

the Components Classified according to the Relationship to the Stream

The components classified according to the relationship to a steam are as below.

Create a Stream

These components always import external datas and output them. To suppor large volumn of data, there are some components which can execute loop. Most of the properties of the imported data are set by the stream variable. If you don't use the input stream, you can connect multiple links to the input side.

コンポーネント

Process a Stream

These components can process input stream and output it. Most of the input stream types and the output stream types are decided. The stream variable can be set by mapper.

コンポーネント

Apply a Stream

These components can process data with input stream. Some components can process multiple streams, such as the component used to send E-mail or ZIP component, so each stream should be set by using the stream variable, instead of the property. Then, you can process data with the set stream.

コンポーネント

Define a Stream

These components always define the formats of the output stream, but some define the input streams'. The stream definitions of these components are copied by the previous components. The stream definition is copied by Flow Designer automatically.

コンポーネント

Process Without Stream

These components can process without input stream, and always output the input stream directly.

コンポーネント

Customized Components

The below 2 kinds of components can be customizend by users.

Streams

Stream is the data transmitted in a Flow. The 9 formats used to process data in the Flow service are called stream types. The specific property that each stream has is called stream property. Moreover, each stream type processes data in a location called field. You can define a name and a data type for each field, and the definitions are called field definitions. In the stream pane of the Flow Designer, you can define the stream property and the field for an output stream of each component. These 2 definitions together are called stream definition. Moreover, it has stream variables as supplementary information.

Regarding to the stream variables, we will instruct about it in "Variables". Moreover, please refer to "Flow Elements""Stream" under "More topics" in the left menu for more information about stream, such as the transmission between the stream types or the transmission between field data types.

Stream Types and Field Definitions

The 9 stream types and the field definitions are as below.

Stream types Stream contents Field definitions
XML The element content and property value of XML name, data type, repetition, node type, display name
CSV The data seperated by delimiter according to the CSV format. filed name, data type
FixedLength The data seperated by the field definitions field name, data type, starting position, length, point position
Record The record column processed by RDB field name, data type
ParameterList Parameter data field name, data type (The array can be defined.)
MIME Stream itself The single stream of Binary Type.
HTML Stream itself The single stream of String Type.
Text Stream itself The single stream of String Type.
Binary Stream itself The single stream of Binary Type.

Memo

"Any" only exists in the output stream type of Start component and SubFlow component. "Any" means the undefined status of a stream. The component following these components should be able to input any type of the stream without processing them.

Stream Pane

If the stream type is Text, there is no field definition for it, because it's a single stream.

ストリーム

If the stream type is CSV, the field name and the data type will be defined.

ストリーム

Field Data Types

The basic field data types are as below.

Integer The integer from -9223372036854775808 to 9223372036854775807.
Decimal numbers with infinite precision
String The string up to 2147483647 characters.
Binary The byte sequence up to 2147483647 bytes.
Double The floating point from -1.79769313486231570e+308 to +1.79769313486231570e+308.
DateTime It's A.D. The format is month/day/year/hour/minute/second/1/1000 second.
Example:January 1st, 1970,00:00:00
Boolean True or (true) or false (false)

※PackedDecimal Type and ZonedDecimal Type can be used in FixedLength Stream. To resolve the virtual point for inputing data, Zone・Pack is recommended, so in this application program Decimal Type is adopted.

※The array of string can be used for ParameterList Stream.

Stream Property

Every stream type has its property. There are settings for the created data and the parameter used to create data in a property.

Inspector

プロパティ

Variables

Different with the stream flowing in a Flow, sometimes it's necessary for you to refer to and keep a value. In a Flow, you can refer to and keep the values as variables. To set a variable in the Flow Designer, you can map a value in the variable field of the mapper. To refer to a variable, you can output a value from the variable field by mapping in the mapper, or use property formula or special notation at the component.

Generally speaking, a variable can be set or referred to from a Flow or an arbitrary one of multiple Flows. Different from this variable, there is a local variable which can only be set and referred to with one component, and a stream variable which can only be set and referred to while a stream format is valid. The variables in the Flow Service are as below.

Please refer to"Elements of Flow""Variables" under "More topics" in the left menu for more information about each kind of variable.

Variable pane (Flow variable)

変数ペイン

Variable Types and Their Scopes

The scope of each type of variable in the Flow service is as below.

Variable types Descriptions
Flow variable The variable can be set and referred to at a running Flow.
Initialization When a Flow begins
Valid scope Until the Flow ended.
System variable The variable can be set by a Flow service, such as environment information. It is for reference only.
Local variable The variable can be referred to with a component running in a Flow.
Initialization When a component begins to process
Valid scope Until the component finished processing
Mapper variable The variable can be referred to with the mapper running in a Flow.
Initialization When the mapper begins to process
Valid scope Until the mapper finished processing
Stream variable The variable can be set and referred to while the stream is valid only.
Initialization When a stream is created
Valid scope Until the stream disappeared.
External variable set
Constant It's a variable in an external variable set. It can't be changed, and is shared by multiple Flows and projects. It's for reference only.
Request variable It's a variable in an external variable set. It can be set and referred to for being shared by multiple Flows and projects while the request is valid.
※ Request means a series of a Flow processing from the Flow begins until the Flow ends, including SubFlow, Exception Flow and running Flow.
Initialization When a request begins
Valid scope Until the request finished.
Session variable It's a variable in an external variable set. It can be set and referred to for being shared by multiple Flows and projects while a session is valid.
Initialization When a session begins
Valid scope Until the session finished.
Application variable It's a variable in an external variable set. It can be set and referred to for being shared by multiple Flows and projects forever.
※ A variable value is saved in a file named "external variable name.xvar.data". The value will be kept after restarting the Flow Service.
Initialization When an external variable set is saved
When initialize by editting
Valid scope It can be used forever.

Mappers

The Mapper component used to map data is called Mapper. You can double click a mapper in the Flow Designer to open a mapper window. In the window, you can map data by connecting the fields of input stream and output stream.

Screen of the Mapper Window

The elements of a mapper window are as below.

Name Descriptions
Input field Here are the input stream fields input into the Mapper component, the component proverty connected to the input side of the mapper, and kinds of variables.
Mapping area Create a connection between the input side to the output side.
Mapper function It can process the data from the input field or create data. You can drag it from the pallet and put it into the mapping area to use it.
Descriptions You can write descriptions anywhere of the mapping area.
Link lines They are lines for connecting the input field, the output field and the mapper function.
Layers It can seperate the mapping (connection) into multiple ones to show the mapping.
Operation buttons They are the buttons for operating in the mapper.
There are 5 types as below.
Add layer  It's used to add layers.
Delete layer  It's used to delete layers.
Edit layer It'd used to edit the definitions of layers.
Layer list  It's a dialog box used to show the layer list.
Simulator  It's a simulator of the mapper.
Return to Flow It's used to return to a Flow.
Output field Here shows the output stream fields output from the Mapper Component, the component proverties connected to the output side of the Mapper Component, and kinds of variables.

Memo

Please refer to "Elements of Flow""Mapper" under "More topics" on the left side menu for more information about input/output fields and mapper operations.

Pallet

Once open the mapping window, you will see a pallet where there were components shown in the Flow window. In the pallet, there are tabs for kinds of mapper functions used to convert data. You can drag out a mapper function icon from here and put it to the mapping area, then drag the icon to change the place. You can also drag out lines from the right point or the left point to connect it to the other mapper function icons or input/output fields.

Mapper Functions

As same as the functions in programming, a mapper function operates with multiple parameters and returns results. A mapper function has its property which is set during designing to map. The number of the parameter is decided by each function. The property values of some functions are used as default parameters. Some functions will output multiple return values. Moreover, the functions are executed by each record only once.

In the mapping window, the order by which connect the input field to the function is considered as a parameter. The order can be changed after having connected.

マッパー関数

Function Property

To set a function property, you can enter a value directly by the inspector, or you can also set a value dynamically during the funcion is running. Under the "Link" item, there is an input link list. You can change the input order here.

To set a property value, you can enter a value into the blank directly, or you can select a value from a pull-down menu. Moreover, you can replace a property with a value input by a link. According to the order by which the links were put, you can replace the corresponding properties with the links. Please refer to the "Input" part in the "Help" document of each function for the relationship between the input orders and the corresponding property. If the property can be replaced with a link, there will be an icon shown on the right of the blank. If the property has been replaced, the icon will change into the icon.

Left Function property

マッパー関数

Mapper Function Types Classified according to the Number of Input/Output Values

Mapper function types classified according to the number of input/output value are as below.

The functions whose number of input values is decided.

The number of the input value is decided by the function definition.

マッパー関数

The function which has no input value

The function outputs a value from the property value without using any input value.

マッパー関数

In the mapping above, the values set in field1 and field2 are same. When there are multiple records, the values of each records are different with each other.

The functions whose number of input value is undefined

The number of the input value for the functions is not decided. You can enter multiple values.

マッパー関数

The functions whose input value is only one

Most of the mapper functions can only output one value.

The functions which can output multiple values

Split Function can output 2 values. Except this one, you can set the number of the output value for the other functions according to the properties.

マッパー関数

Customized Functions

There are 2 types for the customized functions.

Connections

Connection is connecting information used in a Flow, such as database, Internet protocol. Connection settings is used to create a connection name for connecting information, such as server name, port number, usename, password, and define it. Having defined it, you can refer to connecing information by a component easily. You can define some components' properties directly without using any connecting information to connect.

Please refer to "Elements of Flow""Connections" under "More topics" in the left side menu for more information about connecions, for example, the definition of each connection type.

Connection Types

The connection types are as below.

Connection types Connection information
database RDB, Notes, XMLDB (Tamino, Neocore, Luxeon)
Internet HTTP, FTP, SMTP, POP3, IMAP4
Others Queue, JNDI

Connection Types and the Management

Connections can be managed by the Flow Designer and the Management Console. There are 2 kinds of connections, which are user connection and system connection. The system connection can only be created and changed from the Management Console.

Connection types Descriptions Create・change
User connection The connection can only be used by the created users. the Flow Designer
the Management Console
System connection The connection can be used by the all uses created in the Flow Service. the Management Console

How to Create a Flow Connected with a Connection Definition

You can create a Flow by following the steps below, to connect with a connection definition.

Test to Create, Save, Connect Connections

You can create a connection name for a connection definition, and test to create, save, connect the connection in the Flow Designer or in the Management Console.

Connection pane

コネクション

the Management Console

コネクション

Memo

If the test succeeded, the Flow can be used.
If the test failed, you should check the related files and the connection content.

Put a Component to Connect in a Flow

The components for connecting are under the tabs of "database", "Internet", "Others".

"Database" tab

コネクション

Select a Connection Name in the Component Property

Click the "Connection" property to open a pull-down menu, then you will see the created connections. Then you can select one from them.

Property of the RDBGet Component

コネクション

Connection Pool

You can create a pool for the database connection which always cost much to connect. Then you can use the connection pool once you run a component, instead of connecting for everytime. You can select whether to use the connection pool or not in the connection settings of RDB.

Memo

The settings for a connection pool can be done in the "Flow engine" window of the Management Console. The path is "Settings"-"Service"-"Flow".

  • Connection pool size (The initial value is 20.)
  • Connection pool time-out period (The initial value is 7200 seconds.)
  • The times of reusing connection (The initial value is 100.)

Requests

Requst means a process from a Flow begins until the Flow ends, including a series of processings, such as SubFlow or NextFlow. A request is executed in single thread from start to end. After the specified time, to execute another Flow, the Flow executed by the component under the "Schedule" tab, such as the Timer Component, will be another request, and be executed in parallel in multi-thread.

Regarding to more information about the timer processing by SubFlow, NextFlow, Timer Component, we'll instruct about it in "SubFlow", "Next Flow", "Timer" later.

Session

Session is a run-time information existing across requests, and can be recognized by Session ID. In a Flow, the information managed by session is as below.

Execution user The user who executes the Flow
Session variale The variable can be set and referred to with a same session across running Flows.
Connection information The connection information used in a Flow, including database and Internet protocol.

Sesstion is always used when it's necessary to manage status, such as login or logout by a Web application. If the Session ID of the request is as same as the current session, the current session will be used in the request. If these 2 Session IDs are different, a new session will be created. If the "session" property of a Flow is specified as "Close when finish", a session will be returned when the request finishes. If it's specified as "Keep", the session will be kept until the Flow is time out.

Transaction

The transaction in a Flow is used to prevent from the processing of each component being inconsistent with each other when an error happens in a Flow. Transacting is a status that prevent from processings in a Flow being inconsisitent with each other. "Transacting" can be set in the property of the Start Component.

For more information about transaction, please refer to "Element of Flow""Transaction" under "More topics" in the left side menu.

External Files of a Project

In order to keep data by Flow or make designning more easy, the Flow Designer can create, save and use the 3 kinds of external files as below, besides project files. The external files can be managed under the home directory as same as project files.

External Variable Set

External variable set is a location to make a variable group to be shared by multiple Flows and projects. The extension is ".xvar". The file is called external variable set file.

Shared variable group is a location to define and save each variable with a constant or a request variable or a session variable or an application variable in an external variable set. To use the variables in a Flow, you can declare the external variable set in the Flow. Declaration is to drag the external variable from the tree pane to anywhere of the Flow window.

Function Library

Function library is a location to collect multiple functions. The extension is ".xmp". The file is called function library file.

Function can define mapper function libraries as functions by using mapper function just as to define a subroutine, then can be called from a mapping window. The function called out from a mapper is called subfunction, which also can be considered as a subflow's mapper version. To use subfunction in mapper, you should drag a subfunction of function library shown as a tree from tree pane, and put it to anywhere of mapping window, or drag a SubFunction mapper function from pallet to mapping window, and specify a created name for it.

Stream Definition Set

Stream definition is definition information consist of stream property and stream's field definition. Stream definition set is a location to collect multiple stream definitions. The extension is "xsf". The file is stream definition set file.

If you want to use a stream definition for multiple components, you can create a stream definition set with the stream definition previously. When create a Flow, you can select a stream definition from a stream definition set in stream panes of components to set a definition information easily. Moreover, having set a synchronization for a stream definition, you can change stream definitions of multiple components in batch by synchronizing after changing a stream definition.

Memo

Different with an external variable set and a function library, a stream definition set is a kind of function to help develop when create a Flow in the Flow Designer, so the file is not needed when a Flow is running.

Processing in a Flow

We have instructed about the start component and the end component of a Flow in "The start component and the end component of a Flow" .

Loop

Loop is a kind of action that begins from a component, and repeat the following processing for many times. Having started a loop, the loop runs along components from the component where strated until a LoopEnd Component or an end component, then returns to the component where started to repeat the processing. For example, after the RDBGet Component which releases select sentence to RDB have made a result set, it can select whether to pass the set to a component, or loop each record one by one.

Components where a loop starts

コンポーネント

Caution for executig a loop

  • If a component makes a result set to pass, the whole processing will be done on memory, so the limit value for processing large volumn of data is decided by the physical memory. If the component processes the result set by looping, each record will be processed one by one, so the memory used for processing can be smaller. You can't start a loop at a component whose processing is parallelism, because a loop will lead to a run-time error.
  • Even if there is only one pending component, it can't begin to loop yet. In other words, a loop can't beging from a parallelism status.

Conditional Branching

Component that has connector in the right of its icon can output stream from right point or bottom point to branch according to the condition. The processing like this is called "branching".

Branching components only execute either of the branches. Which branch will be executed is decided by the condition set.

Conditional branching components

コンポーネント

Branch Meeting

The BranchEnd Componet is used to get branches meet. If the definitions of the input streams are same, you can map data by putting a mapper for the next step. If the definitions are different, you can't map data. During mapping, to reflect the modified field definition of input stream to the BranchEnd Component, you can right click the component to open a menu, then select "Updata stream definition" from the menu to update.

コンポーネント

You can end a Flow by describing processing for each branch.

コンポーネント

Parallelling

If you want to do different processings for the stream output from a component, you can connect multiple components to the component directly. The branching like this is called "parallelling". Once click the component where parallelling started, 2 blue icons will be shown to refer the operating order.

コンポーネント

Execution Order of the Componenst

The execution order from the component where paralleling started is that the components except the next running objects are in pending status. The Flow runs in order until either of the status as below.

The result when a Flow reach the component where parallel state ends

コンポーネント

SubFlow

SubFlow is another Flow like a subroutione called from one Flow. The called Flow is SubFlow, and the place where the SubFlow is called from is a caller Flow. You can call a Flow in the same project or in another project from a caller Flow. You can put a SubFlow Component in a caller Flow, and specify to call which Flow of which project for its property. Data can be transmitted between a caller Flow and a SubFlow.

For more information about the input/output stream and the parameter of a SubFlow, please refer to "Processing in a Flow""SubFlow" under "More topics" in the left side menu.

Memo

If we consider the relationship between Flows as a parent-child relationship, SubFlow is like a child in this relationship. So "SubFlow" is not a special Flow. A SubFlow begins from a Start Component, and can end with any end component (except NextFlow Component).

NextFlow

After a Flow has finished processing from start to end, you can continue to call out another Flow. The called Flow is "Flow to execute next" or "Next Flow", and the place where a Next Flow is called from is a caller Flow. To specify a Next Flow, you can end a caller Flow with a NextFlow Component, and select a Flow to execute next in the "Flow to execute next" property. Please refer to the help document of NextFlow Component for more information.

Memo

NextFlow Component is undet the "Control" tab.(All of the end components are under "Control" tab.)

Timer

While a Flow is running, timer can make another Flow running in another thread, without infuencing the former Flow processing data until finish in the former thread. Timer contains a Timer Component and a Schedule Componet. The Timer Component will execute another Flow once the time specified in the property is expired. The Schedule Component can execute a Flow daily or weekly or monthly. Please refer to the help document of each component for more information.

Memo

Components related to Timer are in the pallet under the tab of "Schedule".

Error Processing

When the components in a Flow aren't able to continue processing or failed to process, an error happened. You can specify a post-processing for errors, for example, do nothing, or ignor the error, or call a Flow where has decribed the post-processing (Exception Flow).

For more information about the post-processing and the Exception Flow, please refer to "Processing in a Flow""Error processing" under "More topics" in the left side menu.

 

To the top of this page