要求-応答フロー内での MQGet ノードの使用

上記を実現するために MQGet ノード内で行われる処理について詳しくは、 MQGet ノードのメッセージ処理を参照してください。このタイプのフローの構成について詳しくは、Coordinated Request Reply サンプルのサンプルを参照してください。

概要

このページでは、要求-応答フローでの MQGet ノードの使用方法を紹介し、 ノードが入力メッセージを (設定した LocalEnvironment および入力パラメーターに応じて) 処理して 出力メッセージを構成する方法を説明しています。

2 つのアプリケーションの間での要求-応答フローによって、1 つのアプリケーションが他方にメッセージを要求できます。以下の図に、このタイプのフローを示します。

この画像については、下記のテキストで説明されています。

この図で、要求アプリケーションはメッセージを応答アプリケーションの「要求」入力キューに入れます。次に、応答アプリケーションはメッセージを処理し、要求アプリケーションからの元のメッセージで指定した「応答」キューに応答を送信します。

これらのアプリケーションのうちいずれか 1 つが置換または拡張され、他方が変更されない場合、2 つのアプリケーションの間でメッセージを変換する必要があります。 これを行う際、以下の図で示すように、両方の間にブローカーを挿入できます。

この画像については、下記のテキストで説明されています。

これでキュー別名または類似装置が構成され、要求アプリケーションが「要求応答の調整」ブローカー・メッセージ・フローの入力キューに要求メッセージを入れることができます。前の例では、このメッセージは応答アプリケーションの入力キューに直接入れられました。「要求応答の調整」フローは応答アプリケーションに対して適切なフォーマットにメッセージを変換して、その入力キューにメッセージを渡します。これはまた、元の要求アプリケーションの応答先キューの詳細を保管し、応答アプリケーションから受け取る応答メッセージに対してこれらを復元することで、要求アプリケーションに正しく送ることができます。

MQGet ノードはフロー内のどこにでも配置でき、その入力ターミナルにおいて、先行ノードから伝搬した入力ツリーを受け取ります。次に、構成済みの WebSphere MQ キューから取得したメッセージを使用して、結果ツリーを構築します。最後に、入力ツリーと結果ツリーを使用して出力ツリーを構築してから、これを出力先に伝搬します。出力先は warning ターミナルまたは failure ターミナルで、ノードの構成と Get 操作の結果に依存します。

フローの構成方法について詳しくは、Coordinated Request Reply サンプルにあるサンプルを参照してください。

LocalEnvironment の使用方法

先行ノードから伝搬した LocalEnvironment は、MQGet ノードによって読み取られ、更新されます。

  • MQGMO 構造は、${inputMQParmsLocation}.MQGMO.* から読み取られます。
  • MQ の完了コードおよび理由コードは、${outputMQParmsLocation}.CC および .RC に入れられます。
  • MQGMO ツリーがローカル環境に存在する場合、 それはノードが使用する値によって更新されて、ダウンストリームに伝搬されます。
  • ${inputMQParmsLocation}.MQMD が存在する場合、MQGET 呼び出し自体に 渡された MQMD (入力メッセージに指定された値またはノードによって生成された値を含む) は、 そのロケーションに配置され、そのロケーションにすでに存在していたものは削除されます。

${inputMQParmsLocation} は、「要求プロパティー」タブの MQGet ノード・プロパティーの Input MQ Parameters Location 内の値セットです。

${outputMQParmsLocation} は、「結果プロパティー」タブの MQGet ノード・プロパティーの Output MQ Parameters Location 内の値セットです。

これらのプロパティーについての詳細は、MQGet ノードを参照してください。

要約すると、以下のようになります。
${inputMQParmsLocation}
  • QueueName: MQGet ノード・プロパティーの Queue Name に対する指定変更 (オプション)。
  • InitialBufferSize: MQGet ノード・プロパティーの Initial Buffer Size に対する指定変更 (オプション)。
  • MQGMO.*: MQGet ノードが使用する MQ Get メッセージ・オプション (オプション)。
${outputMQParmsLocation}
  • CC: MQ Get 呼び出し完了コード。
  • RC: MQ Get 呼び出し結果コード。
  • MQGMO.*: MQ Get メッセージ・オプション (${inputMQParmsLocation} 内に存在する場合に使用)。
  • MQMD: 受信メッセージに対する MQ メッセージ記述子。

MQGet 呼び出し用の MQMD が構成される方法

  • 入力 MQMD を指定しない場合、「WebSphere MQ アプリケーション・プログラミング・リファレンス」で説明されているとおり、デフォルトの MQMD が使用されます。
  • 入力 MQMD を指定した場合、それは以下の 2 つの方法のどちらかで使用されます。
    • 属性「完全入力 MQMD の使用」が設定されている場合、入力 MQMD の全体が使用されます。
    • 属性「完全入力 MQMD の使用」が設定されていない場合、デフォルトの MQMD が準備されて、チェック・ボックス「messageID」または「correlID」 が設定されている場合は入力 MQMD からそれぞれの ID がそこにコピーされます。

以下の図は、MQGet ノードが WebSphere MQ への呼び出しに 使用する MQMD を構成する方法について、さらに詳しく示しています。

この図については、上記のテキストで説明されています。

出力メッセージ・ツリーが構成される方法

以下の図は、直前のノードからの入力ツリーと MQGet 呼び出しからの結果ツリーとを結合して、 出力メッセージ・ツリーが構成される方法を示しています。

この図については、上記のテキストで説明されています。

ここに例を示します。 MQGet ノード・プロパティーは、以下のリストのように構成されています。
copyMessage
copyEntireMessage
generateMode
message
outputDataLocation
OutputRoot.XML.A
resultDataLocation
ResultRoot.XML.C
この例で、出力ツリーは以下の順序で構成されます。
  1. 入力ツリーの全体が出力ツリーにコピーされます。 それには、子 A および A の子 B を含む XML ブランチも含まれます。
  2. 結果ツリーから、XML ブランチの子 C および C の子 D が出力ツリーの位置 OutputRoot.XML.A に入れられます。 A の以前の内容 (値および子) は失われて、C の内容に置き換わります。 それには、すべての値および子 (この例では子 D) が含まれます。
  3. 出力ツリーの位置の名前は、A のままです。
以下の図は、これを視覚的に示しています。

この図については、上記のテキストで説明されています。

メッセージ・ツリーの例

上で概要を示した規則に従ってメッセージ・ツリーが構成される方法を示すいくつかの例を、以下に示します。

表 1. Input、LocalEnvironment、および MQGet の例
以下のような組み立てのメッセージでは: MQGet が戻すメッセージは以下のとおりです。
InputRoot
MQMD
{input message mqmd}
MQRFH2
{input message mqrfh2}
XMLNS
{input message body}
InputLocalEnvironment
MQ
GET
MQGMO
MatchOptions = MQMO_MATCH_CORREL_ID
MQMD (子はなし)
MyData
MQMD
{input mqmd} (CorrelID = {バイナリーで表記した正しい相関 ID})
変更の始まり
ResultRoot
MQMD
{result message mqmd}
MQRFH2
{result message mqrfh2}
XML
{result message body}
変更の終わり
表 2. MQGet ノード・プロパティーの詳細設定に応じて、結果として生じる出力メッセージ・ツリーの例
設定が以下の場合: 結果として生じる出力メッセージの組み立ては、以下のようになります。
inputMQMDLocation
InputLocalEnvironment.MyData.MQMD
copyMessage
copyEntireMessage
copyLocalEnv
copyEntireLocalEnvironment
generateMode
messageAndLocalEnvironment
outputDataLocation
InputLocalEnvironment.MyData.ReturnedMessage
OutputRoot
MQMD
{input message mqmd}
MQRFH2
{input message mqrfh2}
XMLNS
{input message body}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo used for get}
MQMD
{mqmd used for get}
CC = 0
RC = 0
MyData
MQMD
{input mqmd} (CorrelID = {バイナリーで表記した正しい相関 ID})
ReturnedMessage
MQMD
{result message mqmd}
MQRFH2
{result message mqrfh2}
XML
{result message body}
resultDataLocation
ResultRoot.XML
OutputRoot
MQMD
{input message mqmd}
MQRFH2
{input message mqrfh2}
XMLNS
{input message body}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo used for get}
MQMD
{mqmd used for get}
CC = 0
RC = 0
MyData
MQMD
{input mqmd} (CorrelID = {バイナリーで表記した正しい相関 ID})
ReturnedMessage (ResultRoot.XML からの属性および値を含む)
{result message body}

このツリーは、${resultDataLocation} から ${outputDataLocation} への 割り当てを行った結果として、有効に生じたものです。 ソース・エレメントの値、および属性を含むすべての子は、コピーされています。

copyLocalEnv
none
OutputRoot
MQMD
{input message mqmd}
MQRFH2
{input message mqrfh2}
XMLNS
{input message body}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo used for get}
MQMD
{mqmd used for get}
CC = 0
RC = 0
MyData
ReturnedMessage (ResultRoot.XML からの属性および値を含む)
{result message body}

入力 MQ パラメーターのロケーションの下に MQMD エレメントがあったので、 このツリーには、OutputLocalEnvironment で get に使用される MQMD があります。 入力ツリーがコピーされなくても、MQMD エレメントが存在するために、 get に使用される MQMD は出力ツリーに配置されます。

outputDataLocation
<ブランク>
copyLocalEnv
copyEntireLocalEnvironment
OutputRoot
MQMD
{result message mqmd}
MQRFH2
{result message mqrfh2}
XMLNS
{result message body}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo used for get}
MQMD
{mqmd used for get}
CC = 0
RC = 0
MyData
MQMD
{input mqmd} (CorrelID = {バイナリーで表記した正しい相関 ID})

この場合、copyMessage の設定値は最終的な出力ツリーには影響を与えません。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac34680_