メッセージ・フローには、
組み込みノード
やユーザー定義ノードを組み込むのとまったく同じ仕方で、
サブフローを組み込むことができます。
また、同じ仕方でそれらを他のノードに接続することもできます。
サブフローは一度定義すれば、複数のメッセージ・フローで使用できるので (複数のメッセージ・フロー・プロジェクトでも使用可)、サブフローには以下の利点があります。
- 開発時間を再利用および削減できます。
- 特定の機能を達成するための一貫性のある方法で、メッセージ・フローの保守容易性を増大させます (サブフローは、プログラミング・マクロ、または一度作成されると多くの箇所で使用されるインライン・コードに類似したものと考えてください)。
- 柔軟性が得られます。
サブフロー内のノードのプロパティーのいくつかまたはすべてをプロモートする場合、サブフローを特定のコンテキストに合わせることができます (例えば、出力キューまたはデータ・ソース情報を更新することによって)。
ただし、サブフローは単一のノードではないので、それを組み込めばメッセージ・フロー内のノード数が増えて、パフォーマンスに影響を与えるかもしれないことを覚えておく必要があります。
サブフローの使用については、次の例をご覧ください。
- エラーが発生した場合、いくつかのメッセージ・フローに適用される、共通の処置シーケンスを提供するサブフローを定義することができます。
例えば、Warehouse ノードを介してメッセージをデータベースに書き込み、それをエラー・リカバリー・ルーチンによる処理のためのキューに入れる、という共通のエラー・ルーチンを作成することができます。
複数のメッセージ・フローにおいて、または 1 つのメッセージ・フロー内の数か所で、このルーチンを使用すれば、リソースを効率的かつ整合した仕方で使用でき、エラーが発生するたびにそのようなルーチンを再作成する必要をなくすことができます。
- いくつかの異なるメッセージ・フローを移動するメッセージに対して実行する、共通の計算を作成することができます。
例えば、データベースの通貨為替レートにアクセスし、いくつかの異なる通貨価格の計算にそれらを適用することができます。
適切なメッセージ・フローのそれぞれに、通貨計算サブフローを組み込むことができます。

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

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