Use the CallableFlowAsyncInvoke node in conjunction with a paired CallableFlowAsyncResponse node to split message flow processing asynchronously. The CallableFlowAsyncInvoke node issues a call to the CallableInput node of a message flow in another location and then completes. When the called message flow completes processing, data is returned to the paired CallableFlowAsyncResponse node.
You can split message flows asynchronously so that you can do processing in different locations, by using the CallableFlowAsyncInvoke and CallableFlowAsyncResponse nodes. For information about how to call message flows asynchronously, see Developing asynchronously callable message flows.
You can split your processing between different locations in IBM® Integration Bus, or between IBM Integration Bus and IBM Integration Bus on Cloud. You can split flows between different applications in an integration server or between different integration servers, which can be on different integration nodes. A calling flow processes information in one location, then calls another flow in a different location. A separate response flow is also running in the same location as the calling flow. The calling flow includes a CallableFlowAsyncInvoke node, which calls a CallableInput node in a second (callable) flow.
You specify an endpoint name on the CallableFlowAsyncInvoke node of the calling flow. The CallableFlowAsyncInvoke node calls the correct callable flow by specifying the application that contains the callable flow, and the endpoint name that is specified on the CallableInput node. When the callable flow has completed processing, the CallableReply node sends the information to the paired CallableFlowAsyncResponse node in the separate response flow that is in the same location as the calling flow.
When you pass a message into the main calling message flow, the CallableFlowAsyncInvoke node sends the contents of the message body and local environment folders to the CallableInput node of the callable flow. The CallableFlowAsyncInvoke node parses the incoming message in full, so that it is in a suitable format to send to the CallableInput node. Therefore, you should validate the message before it reaches the CallableFlowAsyncInvoke node. If the message fails validation at this point, it can be rolled back.
When the CallableFlowAsyncInvoke node has sent the incoming message to the callable flow, it completes, propagating to any node that is connected to its output terminal.
You can share data between the flow that contains the CallableFlowAsyncInvoke node and the flow that contains the CallableFlowAsyncResponse node, by storing and retrieving data in the UserContext folder in the Environment. For more information, see Sharing data between a calling flow and a response flow.
The CallableFlowAsyncInvoke node is contained in the Callable Flow drawer of the palette, and is represented in the IBM Integration Toolkit by the following icon:
When you have put an instance of the CallableFlowAsyncInvoke node into a message flow, you can configure it; see Configuring a message flow node. The properties of the node are displayed in the Properties view. All mandatory properties for which you must enter a value (those that do not have a default value defined) are marked with an asterisk.
Terminal | Description |
---|---|
In | The input terminal. |
Failure | The output terminal to which the message is routed if a failure is detected during processing. |
Out | The output terminal, if connected, propagates the input message when the callable flow has been sent the input message data. |
The following tables describe the node properties. The column headed M indicates whether the property is mandatory (marked with an asterisk if you must enter a value when no default is defined); the column headed C indicates whether the property is configurable (you can change the value when you add the message flow to the BAR file to deploy it).
Property | M | C | Default | Description |
---|---|---|---|---|
Node name | No | No | The node type (CallableFlowAsyncInvoke) | The name of the node. |
Short Description | No | No | A brief description of the node. | |
Long Description | No | No | Text that describes the purpose of the node in the message flow. |
Property | M | C | Default | Description | mqsiapplybaroverride command property |
---|---|---|---|---|---|
Unique identifier | Yes | Yes | A unique value prefixed with the node name. | The unique identifier value is used to match this node with a CallableFlowAsyncResponse node, to which the called flow’s CallableReply node will send the response. | asyncResponseCorrelator |
Target Application | Yes | Yes | The name of the application that contains the
message flow that you want to call. The application name is case sensitive. |
targetApplication | |
Target Endpoint Name | Yes | Yes | The Endpoint Name property
that is set on the message flow that you want to call. This property is case sensitive and must match the Endpoint Name property on the CallableInput node of the flow that you want to call. |
targetEndpointName | |
Request timeout (sec) | No | Yes | 120 | The time within which the callable flow must be called, in seconds. If the callable flow is not called within the specified time, an error message is issued. | requestTimeout |
Call Preference | No | No | Prefer local calls | Specifies how the CallableFlowAsyncInvoke node
locates a callable flow. Select one of the following options:
|
Property | M | C | Default | Description |
---|---|---|---|---|
Events | No | No | None | Events that you have defined for the node are
displayed on this tab. By default, no monitoring events are defined
on any node in a message flow. Use Add, Edit,
and Delete to create, change or delete monitoring
events for the node; see Configuring monitoring event sources by using monitoring properties for details. You can enable and disable events that are shown here by selecting or clearing the Enabled check box. |
Setting | Description |
---|---|
requestTimeout | Overrides the Request timeout (secs) property
on the node; for example:
|
callPreference | Overrides the Call Preference property on
the node. Set this property to RemoteOnly or PreferLocal;
for example:
|
targetApplication | Overrides the Target Application property
on the node; for example:
|
targetEndpointName | Overrides the Target Endpoint Name property
on the node; for example:
|
You can share data between the flow that contains the CallableFlowAsyncInvoke node and the flow that contains the CallableFlowAsyncResponse node, by storing and retrieving data in the UserContext folder in the Environment. For more information, see Sharing data between a calling flow and a response flow.