「WebSphere MQ のメッセージ・スプリッター: 一方向 (XML 用)」パターンの要求フロー
このパターンは単一のメッセージ・フローを使用します。
- 入力ノードには整形式の XML メッセージが必要であり、XMLNSC パーサーを使用するように構成されています。着信メッセージにドメインを変更する MQRFH2 ヘッダーが含まれている場合、エラーが発生し、メッセージがバックアウトされます。
- メッセージの妥当性検査はオプションであり、「必要な妥当性検査」パターン・パラメーターで指定されます。
妥当性検査はすぐに行われるのではなく、各エレメントが抽出されるときに実行されます。
- メッセージ・フローはトランザクションとして実行され、すべての必要なエレメントが正常に抽出されてキューに書き込まれない限り、コミットされません。
- このフローの主な制御は、Propagate Element Compute ノードで行われます。このノードは、ローカル変数を作成し、入力のコピーである可変ツリーを保持します。
このフローは、メッセージ・ツリー全体をループ処理して、コンテナー・タグ内の子エレメントに達すると、これを先の方へ伝搬します。
各エレメントが選択されると、メモリー使用量を減らすために前のエレメントは削除されます。
- メッセージの構造はパターン・パラメーターによって決定され、メッセージがこの構造に準拠していない場合、エラーが生成されます。
- メッセージにコンテナー・パス、つまり、処理するすべてのエレメント用のコンテナーが含まれているかどうか検査が行われます。
このコンテナー・パスが *:* として指定されている場合、コンテナーはその名前に関係なくルート・タグであると見なされ、ルートの子であるメッセージ・エレメントは抽出されます。
- 「メッセージ・エレメント名」パターン・パラメーターが *:* である場合、コンテナーの子であるすべてのエレメントが処理されます。
その他の値が指定されている場合、「メッセージ・エレメント名」と一致するタグを持つメッセージ・エレメントのみが抽出されます。
抽出されたメッセージ・エレメントはさらに処理するために渡されます。
- メッセージ・フローには MessageProcessor サブフローが含まれていますが、これにはデフォルトで Passthrough ノードしか含まれていないため、何も影響はありません。
サブフローが含まれているのは、標準ツールを使用することによって、パターンの構造を全く変更せずにパターン・インスタンスをカスタマイズできる場所を提供するためです。
- メッセージは経路サブフローに渡され、経路サブフローはそれを正しい WebSphere MQ キューに送信します。
経路の検出に失敗したり、例外が発生したりした場合、失敗状況が設定され、制御は Failure ノードに送られます。
- 「正しくないメッセージ・アクション」が「保管」である場合、Failure ノードは MQOutput ノードに接続され、メッセージを保存します。
制御は Compute ノードに戻され、次のエレメントを抽出します。
- 「正しくないメッセージ・アクション」が「キャンセル」である場合、Failure ノードは接続されず、Compute ノードはユーザー・エラーを生成して、フローがバックアウトします。
- すべてのエレメントが処理されたために次のエレメントに移動できず、パターン・パラメーターによりロギングが必要とされている場合には、ログ・サブフローが呼び出されます。
この時点で、メッセージ・フローは常に正常に停止し、トランザクションがコミットされます。
ロギングで発生したエラーはキャッチされ、Trace ノードに書き込むことによって処理されます。
- 「ルーティング」パラメーターが「経路の検索」に設定され、「キャッシュの最新表示」パターン・パラメーターがキャッシュの最新表示が必要であることを指定している場合、メイン・フローには、「キューの最新表示」パターン・パラメーターで定義されるキューから読み取る 2 番目の Input ノードが含まれます。
このキューに送信されるメッセージは、共有変数 CacheQueueTable.valid をクリアするため、キャッシュは次の検索の前に最新表示されます。