メッセージ・フローには、
組み込みノード
やユーザー定義ノードを組み込むのとまったく同じ仕方で、
サブフローを組み込むことができます。
また、同じ仕方でそれらを他のノードに接続することもできます。
サブフローは一度定義すれば、複数のメッセージ・フローで使用できるので (複数のメッセージ・フロー・プロジェクトでも使用可)、サブフローには以下の利点があります。
- 開発時間を再利用および削減できます。
- 特定の機能を達成するための一貫性のある方法で、メッセージ・フローの保守容易性を増大させます (サブフローは、プログラミング・マクロ、または一度作成されると多くの箇所で使用されるインライン・コードに類似したものと考えてください)。
- 柔軟性が得られます。
サブフロー内のノードのプロパティーのいくつかまたはすべてをプロモートする場合、サブフローを特定のコンテキストに合わせることができます (例えば、出力キュー情報を更新することによって)。
ただし、サブフローは単一のノードではないので、それを組み込めばメッセージ・フロー内のノード数が増えて、パフォーマンスに影響を与えるかもしれないことを覚えておく必要があります。
サブフローの使用については、次の例をご覧ください。
- メッセージ・フローの中に、エラーとなるメッセージのために共通の宛先を設けるサブフローを定義することができます。

Passthrough ノードは、実行時にサブフローをバージョン管理できるようにするために使用します。Passthrough ノードを使用すると、メッセージ・フローまたはサブフローにラベルを追加できます。このラベルと、バージョン管理システムからのキーワード置換とを併用すると、デプロイ済みのメッセージ・フローに組み込まれているサブフローのバージョンを識別できます。このラベルは自分独自の目的のために使用できます。ラベルに正しいバージョン・キーワードを組み込んでいる場合は、以下のようにラベルの値を参照できます。
- ブローカー・アーカイブ (BAR) ファイルに保管されているものを、mqsireadbar コマンドを使用して
- 特定のブローカーに最後にデプロイされたものを、Message Brokers Toolkit から、デプロイされたメッセージ・フローのプロパティーによって
- 実行時に (メッセージ・フローのユーザー・トレースを使用可能にしている場合)
このノードが out ターミナルに伝搬するメッセージは、in ターミナルで受信したメッセージと同一です。
例えば、いくつかのメッセージ・フローに組み込まれるエラー処理サブフローを開発している場合に、このサブフローを変更する必要が生じるかもしれません。
しかし、初めは、この変更済みバージョンを、組み込み先のメッセージ・フローのサブセットにだけ導入したいと思うかもしれません。
Passthrough ノードのインスタンスに、組み込んだサブフローのバージョンを識別する値を設定することができます。

サブフローの使用例が、Error Handler サンプルおよびCoordinated Request Reply サンプルに示されています。
Error Handler サンプルでは、サブフローを使用してエラーについての情報をトラップし、情報をデータベースに保管します。Coordinated Request Reply サンプルでは、処理ロジックを他のメッセージ・フローで再利用しやすくし、代替インプリメンテーションを置換できるようにするために、サブフローを使用して ReplyToQ および ReplyToQMgr 値の保管を WebSphere MQ メッセージ内でカプセル化します。