Coordinated Request Reply WebSphere MQ サンプルについて

Coordinated Request Reply WebSphere MQ サンプルには Coordinated Request Reply MQ アプリケーションが含まれています。 このアプリケーションには、Coordinated Request Reply ライブラリーへのライブラリー参照が含まれています。

Coordinated Request Reply WebSphere MQ サンプルは、MQGet ノードの使用法を示します。 以下のセクションでは、メッセージ・フローの詳細と、メッセージ・フローが実行する処理を示します。

Request メッセージ・フロー

Request メッセージ・フローでは、以下の処理を実行します。

  1. XML ペイロードが入った WebSphere MQ メッセージを読み取ります。
  2. 元の ReplyToQ および ReplyToQMgr の詳細を別の WebSphere MQメッセージに保管し、後で Reply メッセージ・フローが 取り出せるようにします。
  3. メッセージを等価の CWF 形式に変換する
  4. 変換されたメッセージの入った WebSphere MQ メッセージを作成します。
  5. ReplyToQ および ReplyToQMgr の詳細を、Reply メッセージ・フローの入力に設定します。
  6. Backend Reply メッセージ・フローにメッセージを送信します。

Request メッセージ・フローには、以下のノードが含まれています。

Request メッセージ・フローには 1 つの MQInput ノード、2 つのサブフロー・ノード、1 つの Compute ノード、および 1 つの MQOutput ノードが含まれています。

GetRequestMsg MQInput ノードは XML メッセージを読み取ります。 着信メッセージは自己定義型 XML 形式であるため、メッセージが正常に解析されるようにメッセージ・セットやメッセージ・フォーマットを指定する必要はありません。

StoreOriginalMQMD_Sub サブフローは、WebSphere MQ メッセージでの ReplyToQ 値と ReplyToQMgr 値の保管をカプセル化します。 このカプセル化により、以下のことが可能になります。

TransformXMLtoMRM_Sub サブフローは、入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーして、出力メッセージのメッセージ・セット、タイプ、および形式を設定することにより入力メッセージを XML 形式から CWF に変換します。

SetReplyTo Compute ノードは、以下のアクションを実行します。

  1. 入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーします。
  2. 入力メッセージから出力メッセージ・ツリーにメッセージ本体をコピーします。
  3. 新しいメッセージの ReplyToQ が、Reply メッセージ・フローの入力キューのものになるように設定します。

OutputRequestMsg MQReply ノードは、WebSphere MQ 出力メッセージを書き出します。

Backend Reply メッセージ・フロー

Backend Reply メッセージ・フローでは、以下の処理を実行します。

  1. WebSphere MQ メッセージを読み取ります。
  2. メッセージが変更された時刻を、メッセージのペイロードに追加します。
  3. WebSphere MQ メッセージを書き出します。

Backend Reply メッセージ・フローには、以下のノードが含まれています。

Backend Reply メッセージ・フローには 1 つの MQInput ノード、Compute ノード、および MQReply ノードが含まれています。

GetRequestMsg MQInput ノードは CWF メッセージを読み取ります。 着信メッセージを解析するために必要なメッセージ・セット、形式、およびドメインは、MQInput ノードで指定されます。

Modify_CompletionTime Compute ノードは、以下のアクションを実行します。

  1. 入力メッセージ全体を出力メッセージ・ツリーにコピーします。
  2. WebSphere Message Broker から現在時刻を入手して、再フォーマットします。
  3. 出力メッセージ・ツリーに再フォーマットの時間を追加します。

PutReplyMsg MQReply ノードは、WebSphere MQ 出力メッセージを書き出します。

Reply メッセージ・フロー

Reply メッセージ・フローでは、以下の処理を実行します。

  1. CWF 形式のメッセージが入った WebSphere MQ メッセージを読み取ります。
  2. メッセージを等価の XML 形式に変換します。
  3. 元の要求メッセージの ReplyToQ および ReplyToQMgr の詳細を入手します。 それを行うために、この情報を Request メッセージ・フローに保管するのに使われた WebSphere MQ メッセージを読み取ります。 このアクションは MQGet ノードによって実行されます。
  4. 変換されたメッセージと、取り出された ReplyToQ 値および ReplyToQMgr 値とが入った WebSphere MQ メッセージを作成します。

Reply メッセージ・フローには、以下のノードが含まれています。

Reply メッセージ・フローには 1 つの MQInput ノード、2 つのサブフロー・ノード、および 1 つの MQReply ノードが含まれています。

GetBackendReply MQInput ノードは CWF メッセージを読み取ります。 着信メッセージを解析するために必要なメッセージ・セット、形式、およびドメインは、MQInput ノードで指定されます。

TransformMRMtoXML_Sub サブフローは、入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーして、入力メッセージを CWF 形式から XML に変換します。

RestoreOriginalMQMD_Sub サブフローは、ReplyToQ 値と ReplyToQMgr 値の取り出しをカプセル化します。 このサブフローは、元の要求メッセージで指定された ReplyToQ と ReplyToQMgr の値が入った WebSphere MQ メッセージを読み取り、これらの値を応答メッセージにコピーします。 読み取りを実行するために MQGet ノードを使用します。 MQGet ノードは、従来のアプリケーションから適切なリクエスター・アプリケーションに応答メッセージを送信するため、相関 ID によって対応するメッセージを選択し、処理されるメッセージの MQMD に元の要求 MQMD をコピーするように構成されています。 また、MQGet ノードは、ReplyToQ と ReplyToQMgr の元の値を保管するために使用された WebSphere MQ メッセージのペイロードの取り出しも行います。

PutOriginalReply MQReply ノードは、WebSphere MQ 出力メッセージを書き出します。

テスト・メッセージ

Coordinated Request Reply サンプルで使用されるテスト・メッセージは、顧客の送り状明細が入った単純な XML メッセージです。 このサンプルは XML メッセージを CWF 形式に変換します。 サンプルによって変更される値は、CompletionTime フィールド値だけです。 以下の例は、メッセージを示しています。

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial>
<Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code>
<Code>01</Code>
<Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36</Price>
<Quantity>01</Quantity>
</Item>
<Balance>80</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

サンプルのホームに戻る