Coordinated Request Reply Global Cache サンプルについて

Coordinated Request Reply Global Cache サンプルには、Coordinated Request Global Cache アプリケーションと Coordinated Request Reply Backend アプリケーションが含まれています。 両方のアプリケーションに、Coordinated Request Reply ライブラリーへのライブラリー参照が含まれています。

Coordinated Request Reply Global Cache サンプルは、Coordinated Request Reply Global Cache アプリケーションで実行される 2 つのメッセージ・フロー (要求フローと応答フロー) が使用する情報を保管するためのグローバル・キャッシュの使用法を示します。 このサンプルでは、Coordinated Request Reply Backend アプリケーションで実行される BackendReplyApp メッセージ・フローが従来のアプリケーションをシミュレートします。以下のセクションでは、メッセージ・フローの詳細と、メッセージ・フローが行う処理を記述します。

Request メッセージ・フロー

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

  1. フローは、XML ペイロードが入った WebSphere MQ メッセージを読み取ります。
  2. FlowOrder ノードは、処理の順序を制御します。
  3. このフローは、最初に以下のアクションを完了します。

    フローは、次に以下のアクションを完了します。

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

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

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

UpdateCacheAtFlowEnd FlowOrder ノードは、処理の順番を制御します。

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

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

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

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

次に StoreOriginalMQMD Java Compute ノードが MQMD をグローバル・キャッシュに保存して、応答フローで使用できるように ReplyToQ と ReplyToQMgr を保持します。 後で取り出せるように、データをグローバル・キャッシュに保管するためのキーとして MsgId が使用されます。 メイン・メッセージ・フローが処理を正常に完了した後だけ、データがキャッシュに入れられます。

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 出力メッセージを書き出して、要求メッセージの MsgId を応答の CorrelId フィールドにコピーします。

Reply メッセージ・フロー

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

  1. フローは、CWF 形式のメッセージが入った WebSphere MQ メッセージを読み取ります。
  2. フローは、メッセージを等価の XML 形式に変換します。
  3. JavaCompute ノードは、グローバル・キャッシュから要求フロー MQMD を取り出すことによって、元の要求メッセージの ReplyToQ と ReplyToQMgr の詳細情報を取得します。
  4. フローは、変換されたメッセージと、取り出された ReplyToQ 値および ReplyToQMgr 値とが入った WebSphere MQ メッセージを作成します。
  5. フローは、グローバル・キャッシュから MQMD データを削除します。

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

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

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

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

RestoreOriginalMQMD JavaCompute ノードは、ReplyToQ 値と ReplyToQMgr 値の入った元の要求メッセージ MQMD を、グローバル・キャッシュから取り出します。 このノードは、CorrelId (元の要求メッセージ MsgId が含まれる) をキーとして使用します。 メッセージ内の既存の MQMD は、この元の要求 MQMD に置き換えられます。

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

RemoveMQMDFromCache は、グローバル・キャッシュのメッセージから MQMD データを削除します。 キャッシュがクリアされるのは、メイン・メッセージ・フローが処理を正常に完了した後だけです。

テスト・メッセージ

Coordinated Request Reply Global Cache サンプルで使用されるテスト・メッセージは、顧客の送り状明細が入った単純な 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>

サンプルのホームに戻る