経路サブフローの動作は、「ルーティング」パターン・パラメーターの値によって次のように異なります。
「ルーティングなし」が選択されている場合、単一の MQOutput ノードが作成され、このノードが「出力キュー・マネージャー」および「出力キュー」パターン・パラメーターの値で構成されます。 ルーティング・フローは、Passthrough ノードを含むサブフローです。 Failure ノードは、このサブフローに他のすべての種類のルーティング・サブフローとの一貫性を持たせるために組み込まれています。
経路を定義する、以下の 4 つのパラメーターから成るグループです。
定義される経路ごとに、経路サブフローおよび MQOutput ノードの Output ターミナルが作成され、接続されます。
条件 KeyLocation = Key Value が満たされている場合、経路サブフローには、Output ターミナルをルーティングするフィルターで構成される Route ノードが含まれます。 メッセージ・エレメントがどの経路にも一致しない場合、環境変数にエラーが記録され、メッセージは Failure ターミナルに渡されます。
「経路の指定」を使用して、複数の経路を指定できます。
この値が選択されている場合、経路サブフロー用に単一の Output ターミナルが作成され、このターミナルは、宛先リストを取るように構成された単一の MQOutput ノードに接続されます。
ルーティング・サブフローは、CacheQueueTable.valid 共有行変数の値が NULL に設定されているかどうか確認することにより、キャッシュの最新表示が必要かどうかを確認します。 フローが開始するときに、「キャッシュの最新表示」も使用可能になっており、最新表示メッセージが「最新表示キュー」に送信済みである場合、値は NULL に設定されます。 最新表示メッセージはこの値を NULL に設定します。
キャッシュの最新表示が必要な場合、(「ルーティング・データ・ソース」パターン・パラメーターで指定されている) データ・ソースの ROUTING_TABLE テーブルが検索されて、このフローのルーティング・コンテキストに一致するすべての行が検出されます。 ルーティング・コンテキストは「ルーティング・コンテキスト」パターン・パラメーターによって定義され、ROUTING_CONTEXT フィールドがこのパラメーターとマッチするような行がメモリー内のキャッシュに読み取られます。 キャッシュが不整合状態にある間の検索を防ぐために、これは自動的に実行されます。
キャッシュ・データの構造は次のとおりです。
VARIABLE1, VARIABLE2, QUEUE_MANAGER, QUEUE_NAME
検索は、パターン・パラメーターとして定義された ESQL 式を使用して、メッセージ・エレメントから 1 つまたは 2 つのキー値を抽出することによって実行されます。 以下の形式のステートメントを使用して、パターン・パラメーターを定義します。
SET KEY = <pattern parameter>
ルーティング・データから (1 つまたは複数の) 行を選択するために単一のキーが指定される場合、以下の WHERE 節を使用します。
WHERE S.VARIABLE1 = KEY1
2 番目のキーが指定されている場合、選択に使用される WHERE 節は以下のとおりです。
WHERE S.VARIABLE1 = KEY1 and S.VARIABLE2 = KEY2
この選択によって、キュー・マネージャーおよびキューは MQOutput ノードで使用されるローカル環境の中に設定されます。 複数の行が返される可能性があり、宛先データには、選択されたすべての宛先が含まれます。 一致が見つからない場合、ルーティング・エラーが発生し、経路サブフローの Failure ターミナルにメッセージが渡されます。