Coordinated Request Reply JMS サンプルには Coordinated Request Reply JMS アプリケーションが含まれています。 このアプリケーションには、Coordinated Request Reply ライブラリーへのライブラリー参照が含まれています。
Coordinated Request Reply JMS サンプルでは、JMSReceive ノードの使用方法を示します。 以下のセクションでは、メッセージ・フローと、メッセージ・フローが実行する処理を示します。
Request メッセージ・フローでは、以下の処理を実行します。
Request メッセージ・フローには、以下のノードが含まれています。
GetRequestMsg JMSInput ノードは XML メッセージを読み取ります。 着信メッセージは自己定義型 XML 形式であるため、メッセージが正常に解析されるようにメッセージ・セットやメッセージ・フォーマットを指定する必要はありません。
StoreOriginalJMSHeader_Sub サブフローは、JMS メッセージへの ReplyToQ 値と相関 ID 値の保管をカプセル化します。 メッセージ ID が相関 ID の中にコピーされます。 カプセル化する理由は 2 つあります。 まず、処理ロジックを他のメッセージ・フローで簡単に再利用できるようにするためです。 さらに、代替インプリメンテーションに置き換えることができるようにするためです。 例えば、データベース・ノードを使用する代替インプリメンテーションを作成できます。
TransformXMLtoMRM_Sub サブフローは、入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーして、出力メッセージのメッセージ・セット、タイプ、および形式を設定することにより入力メッセージを XML 形式から CWF に変換します。
SetReplyTo_CorrelID Compute ノードは、以下のアクションを実行します。
OutputRequestMsg JMSOutput ノードは、JMS 出力メッセージを書き出します。
Backend Reply メッセージ・フローでは、以下の処理を実行します。
Backend Reply メッセージ・フローには、以下のノードが含まれています。
GetRequestMsg JMSInput ノードは CWF メッセージを読み取ります。 着信メッセージを解析するために必要なメッセージ・セット、フォーマット、およびドメインは、JMSInput ノードで指定されます。
Modify_CompletionTime Compute ノードは、以下のアクションを実行します。
PutReplyMsg JMSReply ノードは、JMS 出力メッセージを書き出します。
Reply メッセージ・フローでは、以下の処理を実行します。
Reply メッセージ・フローは、以下のノードから構成されています。
GetBackendReply JMSInput ノードは CWF メッセージを読み取ります。 着信メッセージを解析するために必要なメッセージ・セット、フォーマット、およびドメインは、JMSInput ノードで指定されます。
TransformMRMtoXML_Sub サブフローは、入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーして、入力メッセージを CWF 形式から XML に変換します。
RestoreOriginalJMSHeader_Sub サブフローは、ReplyToQ 値と 相関 ID 値の取り出しをカプセル化します。 このサブフローは、JMSReceive ノードを使用して、元の要求メッセージで指定された ReplyToQ と相関 ID の値が入った JMS メッセージを読み取り、これらの値を応答メッセージにコピーします。フロー内で JMSReceive ノードの前に Compute ノードがあります。 Compute ノード内で、JMSReceive ノードの相関 ID プロパティーは、環境変数で応答メッセージの相関 ID によってオーバーライドされます。 JMSReceive ノードは、従来のアプリケーションから適切なリクエスター・アプリケーションに応答メッセージを送信するために、その相関 ID によって対応するメッセージを選択し、処理されるメッセージの JMSHeader に元の要求 JMSHeader をコピーするように構成されています。 また、JMSReceive ノードは、ReplyToQ の元の値を保管するために使用された JMS メッセージのペイロードの取り出しも行います。
JMSReceive ノードの詳細については、WebSphere Message Broker の資料にある『JMSReceive ノード』を参照してください。
PutOriginalReply JMSReply ノードは、JMS 出力メッセージを書き出します。
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>