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 メッセージ・フローには、以下のノードが含まれています。
GetRequestMsg MQInput ノードは XML メッセージを読み取ります。 着信メッセージは自己定義型 XML 形式であるため、メッセージが正常に解析されるようにメッセージ・セットやメッセージ・フォーマットを指定する必要はありません。
UpdateCacheAtFlowEnd FlowOrder ノードは、処理の順番を制御します。
最初に TransformXMLtoMRM_Sub サブフローが、入力メッセージから出力メッセージ・ツリーにメッセージ・ヘッダーをコピーして、出力メッセージのメッセージ・セット、タイプ、および形式を設定することにより入力メッセージを XML 形式から CWF に変換します。
SetReplyTo Compute ノードは、以下のアクションを完了します。
OutputRequestMsg MQReply ノードは、WebSphere MQ 出力メッセージを書き出します。
次に StoreOriginalMQMD Java Compute ノードが MQMD をグローバル・キャッシュに保存して、応答フローで使用できるように ReplyToQ と ReplyToQMgr を保持します。 後で取り出せるように、データをグローバル・キャッシュに保管するためのキーとして MsgId が使用されます。 メイン・メッセージ・フローが処理を正常に完了した後だけ、データがキャッシュに入れられます。
Backend Reply メッセージ・フローは、以下の処理を完了します。
Backend Reply メッセージ・フローには、以下のノードが含まれています。
GetRequestMsg MQInput ノードは CWF メッセージを読み取ります。 着信メッセージを解析するために必要なメッセージ・セット、形式、およびドメインは、MQInput ノードで指定されます。
Modify_CompletionTime Compute ノードは、以下のアクションを完了します。
PutReplyMsg MQReply ノードは WebSphere MQ 出力メッセージを書き出して、要求メッセージの MsgId を応答の CorrelId フィールドにコピーします。
Reply メッセージ・フローは、以下の処理を完了します。
Reply メッセージ・フローには、以下のノードが含まれています。
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>