Resolving problems when you use callable flow nodes
Diagnose problems with callable flows by validating messages and running commands.
Before you begin
About this task
If problems occur when you develop callable flows, complete the following checks.
Validate messages before they reach the CallableFlowInvoke node
About this task
The CallableFlowInvoke node parses the incoming message in full so that it is in a suitable format to send to the CallableInput node. Therefore, you must validate the message before it reaches the CallableFlowInvoke node. If the call fails due to a parsing failure, the message is rolled back with an exception.
Binary Large Object (BLOB) messages do not need to be parsed. Therefore, if you do not want to parse the message data before the CallableFlowInvoke node, you can send data to the callable flow by using the BLOB parser.
Ensure that application and endpoint name pairs are unique on a single integration server
About this task
Application and endpoint name pairs must be unique on a single integration server. You can have multiple callable flows that share the same application and endpoint names, but they must be in different integration servers. In this case, the Switch server acts as a load balancer.
Similarly, if you are splitting processing between App Connect Enterprise and App Connect Enterprise as a Service, any callable flows with the same application and endpoint names must be in different integrations in the cloud.
Check that the Switch server is running
About this task
The Switch server is a special integration server that runs in a special integration node called ACESWITCH_NODE_V12. This server routes data between your callable flows. You cannot deploy anything to this server. If your callable flows are deployed to different integration servers, you run the iibcreateswitchcfg command to create configuration files for the Switch server and for the agents that enable your flows to use the Switch server securely. You run the iibswitch command to create and start the Switch server by using the generated configuration file (switchserver.json).
mqsilist ACESWITCH_NODE_V12
If the
Switch server is running, you see the following
response:BIP1286I: Integration server 'ACESWITCH_SERVER' on integration node 'ACESWITCH_NODE_V12' is running.
For more information about the mqsilist command, see mqsilist command
iibswitch start
iibcreateswitchcfg /output filepath
iibswitch create switchserver /config filepath\switchserver.json
For more information about the iibswitch command, see iibswitch command.
For more information about the iibcreateswitchcfg command, see iibcreateswitchcfg command.
Determine the status of the switch server for callable flows
About this task
You can view the status of the switch server by running the following command (do not replace
ACESWITCH_NODE_V12
or ACESWITCH_SERVER
with the name of an
integration node or integration server):
mqsireportproperties ACESWITCH_NODE_V12 -e ACESWITCH_SERVER -o ComIbmIIBSwitchManager -r
The output of this command also includes details of the callable flows that have are registered in this switch server, and the details of the callable flow invoke nodes that have are registered in this switch server. For more information about the mqsireportproperties command, see mqsireportproperties command.
Check that your callable flows are registered
About this task
mqsireportproperties integrationNodeName -e integrationServerName -o CallableFlowManager -r
The
following example shows a typical
response:callable-flow-manager
name='CallableFlowManager'
identifier='CallableFlowManager'
type='CallableFlowManager'
delayReplyUntilFlowCommit='false'
disableRemoteInputRegistration='false'
redeployMessageTimeout='5'
remoteRetryTimeout='60'
retryLocalDuringDeploy='true'
retryRemoteUntilTimeout='true'
detailed
registrations
callableFlow
applicationName='app2'
endpointName='callableEndpoint1'
inputNodeRegistered='0x0000000006AF8480'
invokeNodeCount='1'
queueDepth='0'
callableFlow
applicationName='app4'
endpointName='callableEndpoint2'
inputNodeRegistered='0x0000000000000000'
invokeNodeCount='1'
queueDepth='0'
A message flow that calls a callable flow contains a CallableFlowInvoke node. Therefore, if a calling flow is deployed to the server, the invoke node count is 1. The mqsireportproperties command also specifies the application name and endpoint name that the calling flow is using to call the callable node.
A callable flow contains a CallableInput node. If a callable flow is deployed to the server, the inputNodeRegistered value is greater than zero. The mqsireportproperties command also specifies the name of the application that contains the callable flow, and the endpoint name that is set on the CallableInput node of the callable flow.
If both the calling and the callable flow are deployed to the same integration server, the invokeNodeCount value is 1, and the inputNodeRegistered has a value that is greater than zero. In the example, the inputNodeRegistered value indicates that a callable flow with an endpoint name of callableEndpoint1 is deployed to this server in an application called app2. The invokeNodeCount value of 1 indicates that the flow that calls this callable flow is also deployed to this server. However, the inputNodeRegistered value is zero for the callable flow in application app4 with an endpoint name of callableEndpoint2, but the invoke node count is 1. Therefore, the calling flow is deployed to this server, but the callable flow is not.