Adding connections between nodes

Use the IBM Integration API when developing message flow applications to add connections between nodes.

Pattern authoring

You can connect both subflow and built-in nodes. The first example shows you how to connect two built-in nodes. The second example shows you how to connect a built-in node to a subflow node.
To use the terminals of a subflow node, you must link the subflow node with the subflow message flow by using the setSubFlow() method of the subflow node object. For example, if you have assigned your subflow message flow to message flow instance sub1 and you have assigned your subflow node to subflow node instance sfNode, you must use the following statement to link the subflow node with the subflow message flow:
sfNode.setSubFlow(sub1);
The following example shows you how to connect two built-in nodes:
  1. A MQInput node and a Collector node are created.
  2. The getInputTerminal() method is used to create a dynamic Input terminal called NEWIN on the Collector node.
  3. The Input terminal is connected to the Output terminal of the MQInput node by using the connect() method of the message flow object mf1.
File msgFlow = new File("main.msgflow");
MessageFlow mf1 = FlowRendererMSGFLOW.read(msgFlow);
MQInputNode mqinNode = new MQInputNode();
mqinNode.setNodeName("My Input Node");
mqinNode.setQueueName("INPUTQ");
CollectorNode colNode = new CollectorNode();
colNode.getInputTerminal("NEWIN");
mf1.connect(mqinNode.OUTPUT_TERMINAL_OUT, colNode.getInputTerminal("NEWIN")); 

To use a static terminal on a node, you must use the appropriate constant defined for it in the IBM Integration API. These constants are listed in the IBM Integration API javadoc, see IBM Integration API.

The following example shows you how to connect a subflow node to a built-in node. You must load the subflow message flow and link it to a subflow node. You must use the getInputTerminal(), getInputTerminals(), getOutputTerminal() or getOutputTerminals() method to access the terminal on the subflow node to which you want to connect. The example code completes the following steps:
  1. The main message flow, main.msgflow, and a Compute node in the main message flow are loaded into memory.
  2. The subflow message flow, subflow.msgflow, and the subflow node in the main message flow are loaded into memory.
  3. The setSubFlow() method of the subflow node is used to link the subflow message flow sub1 to the subflow node sfNode.
  4. The getOutputTerminal() method is used to get the Process terminal of the subflow node. The connect() method of the message flow object is used to connect this terminal to the Input terminal of the Compute node.
File msgFlow = new File("main.msgflow");
MessageFlow mf1 = FlowRendererMSGFLOW.read(msgFlow);
ComputeNode compNode = (ComputeNode)mf1.getNodeByName("My Compute Node");
File subFlow = new File("subflow.msgflow");
MessageFlow sub1 = FlowRendererMSGFLOW.read(subFlow);
SubFlowNode sfNode = (SubFlowNode)mf1.getNodeByName("My Subflow Node");
sfNode.setSubFlow(sub1);
mf1.connect(sfNode.getOutputTerminal("Process"), compNode.INPUT_TERMINAL_IN);
The following example is the same as the previous example for connecting two build-in nodes, but for pattern authoring:
MessageFlow mf1 = patternInstanceManager.getMessageFlow("MyFlowProject", "main.msgflow");
MQInputNode mqinNode = new MQInputNode();
mqinNode.setNodeName("My Input Node");
mqinNode.setQueueName("INPUTQ");
CollectorNode colNode = new CollectorNode();
colNode.getInputTerminal("NEWIN");
mf1.connect(mqinNode.OUTPUT_TERMINAL_OUT, colNode.getInputTerminal("NEWIN")); 
The following example is the same as the previous example for using static terminals on a node, but for pattern authoring:
MessageFlow mf1 = patternInstanceManager.getMessageFlow("MyFlowProject", "main.msgflow");
ComputeNode compNode = (ComputeNode)mf1.getNodeByName("My Compute Node");
MessageFlow sub1 = patternInstanceManager.getMessageFlow("MyFlowProject", "subflow.msgflow");
SubFlowNode sfNode = (SubFlowNode)mf1.getNodeByName("My Subflow Node");
sfNode.setSubFlow(sub1);
mf1.connect(sfNode.getOutputTerminal("Process"), compNode.INPUT_TERMINAL_IN);