FlowInvoker - Invoke a Flow of another user

Invokes a flow specified.
In the flow invoked, this component's input stream and parameter can be used.

Stream Information

InputFormatAll
Number of Inputs1
Description Same type of stream as input stream of an invoked flow.
OutputFormatAll
Description When PassStream is "false", output stream is one of the invoked flow.
If the invoked flow ends with End component, the input stream of this component is output regardless of the setting of PassStream.PassStream.

Component Properties

NameData TypeMappingDescription
UserNamestringIn & Out Specifies a user name of the owner of invoked flow.
If empty, the flows of the owner of this flow is invoked.
FlowstringIn & Out Specifies a flow to be invoked.
A flow name can be specified like "<Project Name>.<Flow Name>"
When "UserName" is empty, a project name is omittable like "<Flow Name>". In that case, the flow in the same project is invoked.
ReturnValuestringOut Can refer the return value of invoked flow.
PassStreamstreamPassThrough- Select if the input stream of this component is output or not.
true [true] - The input stream of this component is output.
false [false] - Outputs the output stream of invoked flow.
ExecuteUserInfogroup- Information of executing user.
ExecuteUserstringIn & Out Specifies a user name to execute a flow.
If empty, no executing user.
PasswordpasswordIn & Out Specifies a password pf a user to execute a flow.
ParamcategoryIn    Specifies parameters of a flow to be invoked.
The values can be exchanged by using the public variables of the invoked flow.
The values are set to the public variables with the same name. A parameter name is case sensitive.
Data type should be the same as the one defined in the invoked flow.
(The type conversion is done as automatically as possible. But especially, it is necessary to note it in the Binary type.)

Exceptions

TypeParameterStream for error handling flowError
Code
Description
Exception None This component's input stream - When the stream type is different from the one defined in invoked flow
- When the invoked flow raises error

How to execute another user's flow

If you want to execute another user's flows, those function have to be set executable by user who wants to execute.
If you set those user name to the "Allow executable user" property of the project or the flow, those user can execute that flow.

You can specify multiple users with separameter ",". Wildcard "*" also can be used for all users under the some domains.

Example
ValueAllowed users
/user1, /user2only /user1 and /user2
/domain1/*All users who belong to /domain1
/*All users

When you specify "/*" in the project, all flows of that project is allowed to be execute by all users.
(When you specify same value in the flow, only that flow is allowed to be executed.)
Wildcard cannot be use for intermidiate domain like "/*/user1". Wildcard cannot be use for part of user name like "/user*".

Difference between SubFlow and FlowInvoker

Both SubFlow component and FlowInvoker component can invoke another flow like subroutine. But there are many differences in the operations in a detailed part.
Please use an appropriate component properly according to the situation.

SubFlowFlowInvoker
TransactionAccording to the setting of Start component, sub-flow's transaction becomes a part of transactions of caller flow. A different another transaction at each call.
A transaction of caller flow is different from transactions at each call.
Caller flow waits the end of called flow. But the transaction is not terminated.
SessionThe session under execution is all the same.
The session variable is shared.
The subsession of each owner of the executed flow is made.
The session id of subsession is "<parent session ID>-<branch>".
The life time of subsession is the same as parent session.
If the parent session is the same, subsession executed by same user is the same and the session variables are shared during the session.
The session variables and stream saved by StreamPut component cannot be shared by different users.
RequestThe request under execution is all the same.
The request variable is shared.
Different request at each call.
Request variables are initialized every time.
The request ID at each call is quot;<Parent request ID>-<branch枝番>".
Mapping of flow nameCannot be mapped.Can set both owner and name of the flow dynamically.
Next FlowNext flow is ignored in sub-flowNext flow is executed and return the parent flow.
Execute userSame as the parent flow.Can set user name and password dynamically.
User InterfaceFlow can be set by Select Flow dialog. The output stream and parameters are set automatically when setting flow. Sets flow name and parameter manually.
(By "Replace component" of right click menu, convert from Subflow component to FlowInvoker component. Then, parameters are set automatically.)
DebugCan use debugger and step into subflow.In debugger, FlowInvoker component is retrieved as a single component. Cannot step in the invoked flow.
When executed by profile mode, logs of invoked flow are output in FlowProfile.log. But it cannot be refered in the Designer.

The flow invoked by FlowInvoker is executed in the same thread as the one of parent flow.
Therefore, the owner of flow that begins requesting and the flow executing it now can be different in flow-ctrl and the monitor tool, etc.