You can include subflows in your message flows in exactly
the same way as you include built-in
or user-defined nodes.
You can also connect them to
other nodes in the same way. Because you can define a subflow once, and use
it in more than one message flow (and even in more than one message flow project),
a subflow can provide benefits:
- Reuse and reduced development time.
- A consistent way of achieving a particular function, and increased maintainability
of your message flows (consider a subflow as analogous to a programming macro,
or to inline code that is written once but used in many places).
- Flexibility. If you promote some or all of the properties of the nodes
in the subflow, you can tailor a subflow to a specific context (for example,
by updating the output queue information).
However, you must remember that a subflow is not a single node, and
its inclusion increases the number of nodes in the message flow, which might
affect its performance.
Consider these examples of subflow use:
- You can define a subflow that provides a common destination
for messages that result in an error within the message flow.

Use the Passthrough node to
enable versioning of a subflow at run time. The Passthrough node allows you
to add a label to your message flow or subflow. By combining this label with
keyword replacement from your version control system, you can identify which
version of a subflow is included in a deployed message flow. You can use this
label for your own purposes. If you have included the correct version keywords
in the label, you can see the value of the label:
- Stored in the broker archive (BAR) file, using the mqsireadbar command
- As last deployed to a particular broker, on the properties of a deployed
message flow in the Message Brokers Toolkit
- In the run time, if you enable user trace for that message flow.
The message that it propagates on its out terminal is the same message
that it received on its in terminal. For example, if you develop an error
processing subflow to include in several message flows, you might want to
modify that subflow. However, you might want to introduce the modified version
initially to just a subset of the message flows in which it is included. Set
a value for the instance of the Passthrough node that identifies which version
of the subflow you have included.

The use of subflows is demonstrated in the Error Handler sample and
the Coordinated Request Reply sample. The Error Handler
sample uses a subflow to trap information about errors and store the information
in a database. The Coordinated Request Reply sample uses a subflow to encapsulate
the storage of the ReplyToQ and ReplyToQMgr values in a WebSphere MQ message
so that the processing logic can be easily reused in other message flows
and to allow alternative implementations to be substituted.