メッセージ・フロー・ノードは、メッセージ・フローの処理ステップです。
これは、メッセージを受信し、メッセージに対してアクションのセットを実行し、オプションでメッセージ・フロー内の次のノードにメッセージを渡します。 メッセージ・フロー・ノードは、組み込みノード、ユーザー定義ノード、またはサブフロー・ノードのいずれかにできます。
1 つのメッセージ・フロー・ノードには、特定の数の入力点および出力点があり、これらをターミナルといいます。 メッセージ・フロー内のメッセージの経路を定義するために、複数のターミナル間の接続を作成できます。
WebSphere Message Broker が提供するすべての組み込みノードについては、組み込みノードを参照してください。
メッセージは Input ノードが受け取り、サブフローの定義に応じて処理します。 それには、Warehouse ノードを介して保管されることや、(例えば MQOutput ノードを介して) 他のメッセージ・ターゲットに配送されることが含まれる場合があります。 必要であれば、メッセージを Output ノードを介してメイン・フローに戻し、処理を続けることもできます。
サブフローはメイン・フローに組み込まれているとき、固有のアイコンを持つ単一のサブフロー・ノードによって表されます。アイコンと共に、サブフロー定義に含めた Input ノードと Output ノードを表す ターミナルの正確な数が表示されます。
サブフローの最も一般的な使用方法は、メッセージ・フロー内の多くの場所で必要となる処理を提供すること、または複数のメッセージ・フロー間で共有されるようにすることです。例えば、サブフロー内にエラー処理をコーディングすること、または監査証跡を提供する (メッセージ全体を保管して、トレース・エントリーを記述する) サブフローを作成することができます。
サブフローの使用例が、Error Handler サンプルおよびCoordinated Request Reply サンプルに示されています。Error Handler サンプルでは、サブフローを使用してエラーについての情報をトラップし、情報をデータベースに保管します。Coordinated Request Reply サンプルでは、処理ロジックを他のメッセージ・フローで再利用できるようにし、代替インプリメンテーションを置換できるようにするために、サブフローを使用して ReplyToQ および ReplyToQMgr 値の保管を WebSphere MQ メッセージ内でカプセル化します。
ノードは、すべての出力ターミナルに対する出力メッセージを常に生成するとは限りません。 受信したメッセージに基づき、またはノードの操作結果に基づいて、ノードは通常、1 つのターミナルに対して 1 つの出力を生成します。例えば、Filter ノードは通常、真のターミナルまたは偽のターミナルのいずれかに対して 1 つのメッセージを送信しますが、この両方には送りません。
複数のターミナルが接続されている場合、ノードはそれぞれのターミナルに対して出力メッセージを送りますが、現在のターミナルの処理が完了して初めて、次のターミナルに対して送信します。 メッセージの更新内容は以前に実行したノードには伝搬されず、更新を行ったノードの後に続くノードにのみ伝搬されます。 メッセージが複数の出力ターミナルの間で伝搬される順番はブローカーによって決定されるため、この順番は変更できません。 この規則の唯一の例外は、FlowOrder ノードの場合です。このノードでは、メッセージが各ターミナルに伝搬される順番をターミナルが指示します。
メッセージ・フローのすべてのパス (つまり、すべての出力ターミナルから接続されたすべてのノード) が完了して初めて、メッセージ・フローは新規メッセージを受け入れて処理することができます。
Airline Reservations サンプルは、XML_Reservation サンプルの環境変数を使用して、データベース表から取得された情報を保管し、その情報をメッセージ・フロー内のノード・ダウンストリームに渡します。