A amostra Coordinated Request Reply Global Cache contém o aplicativo Coordinated Request Global Cache e o aplicativo Coordinated Request Reply Backend. Esses aplicativos têm uma referência de biblioteca para a biblioteca de Coordinated Request Reply.
A amostra Coordinated Request Reply Global Cache demonstra o uso de um cache global para armazenar informações para uso por dois fluxos de mensagens, um fluxo de solicitação e um fluxo de resposta que estão executando no aplicativo Coordinated Request Reply Global Cache. Um fluxo de mensagens de BackendReplyApp executando no aplicativo Coordinated Request Reply Backend simula um aplicativo estabelecido nesta amostra. As seções a seguir descrevem os detalhes dos fluxos de mensagens e o processamento que executam.
O fluxo de mensagens de Solicitação executa o seguinte processamento:
O fluxo conclui as seguintes ações primeiro:
O fluxo conclui a seguinte ação em seguida:
O fluxo de mensagens de Solicitação contém os seguintes nós:
O nó MQInput GetRequestMsg lê a mensagem XML. A mensagem recebida está em um formato XML autodefinido, portanto você não precisa especificar um conjunto ou formato de mensagens para que ela seja analisada com sucesso.
O nó UpdateCacheAtFlowEnd FlowOrder controla a ordem de processamento.
Primeiro, o subfluxo TransformXMLtoMRM_Sub copia os cabeçalhos de mensagem da mensagem de entrada para a árvore de mensagens de saída e converte a mensagem de entrada do formato XML para o formato CWF configurando o conjunto, tipo e formato da mensagem para a mensagem de saída.
O nó de Cálculo SetReplyTo conclui as seguintes ações:
O nó MQReply OutputRequestMsg grava a mensagem de saída WebSphere MQ.
Em seguida, o nó de Cálculo Java StoreOriginalMQMD salva o MQMD no cache global, preservando o ReplyToQ e ReplyToQMgr para uso pelo fluxo de resposta. O MsgId é usado como uma chave para armazenar os dados no cache global para recuperação posterior. Os dados são colocados no cache só depois que o fluxo de mensagens principal conclui o processamento com êxito.
O fluxo de mensagens de Resposta Backend conclui o seguinte processamento:
O fluxo de mensagens Resposta Backend contém os seguintes nós:
O nó MQInput GetRequestMsg lê a mensagem CWF. O conjunto de mensagens, o formato e o domínio que são necessários para analisar a mensagem recebida são especificados no nó MQInput.
O nó de Cálculo Modify_CompletionTime conclui as seguintes ações:
O nó MQReply PutReplyMsg grava a mensagem de saída do WebSphere MQ, copiando o MsgId da mensagem de solicitação para o campo CorrelId na resposta.
O fluxo de mensagens de resposta executa o seguinte processamento:
O fluxo de mensagens Resposta contém os seguintes nós:
O nó MQInput GetBackendReply lê a mensagem CWF. O conjunto de mensagens, o formato e o domínio que são necessários para analisar a mensagem recebida são especificados no nó MQInput.
O subfluxo TransformMRMtoXML_Sub copia os cabeçalhos de mensagem a partir da mensagem de entrada para a árvore de mensagens de saída e converte a mensagem de entrada do formato CWF para o formato CWF.
O nó JavaCompute RestoreOriginalMQMD recupera O MQMD da mensagem de solicitação original, que contém os valores de ReplyToQ e ReplyToQMgr, do cache global. O nó usa o CorrelId (contendo o MsgId da mensagem de solicitação original) como uma chave. O MQMD existente na mensagem é substituído pelo MQMD dessa solicitação original.
O nó MQReply PutOriginalReply grava a mensagem de saída WebSphere MQ.
O RemoveMQMDFromCache remove os dados MQMD da mensagem do cache global. O cache é limpo só depois que o fluxo de mensagens principal conclui o processamento com êxito.
A mensagem de teste usada na amostra do Coordinated Request Reply with Global Cache é uma mensagem XML simples que contém detalhes de fatura para um cliente. Essa amostra converte a mensagem XML no formato CWF. O valor do campo CompletionTime é o único valor que é alterado pela amostra. O seguinte exemplo mostra a mensagem:
<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>
</Fatura>
<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>
</Fatura>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>