Sobre a Amostra Coordinated Request Reply Global Cache

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.

Fluxo de Mensagens de Solicitação

O fluxo de mensagens de Solicitação executa o seguinte processamento:

  1. O fluxo lê uma mensagem do WebSphere MQ que contém uma carga útil XML.
  2. Um nó FlowOrder controla a ordem de processamento.
  3. 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 fluxo de mensagens de Request contém um nó MQInput, um nó FlowOrder, um nó JavaCompute, um nó de subfluxo, um nó Compute e um nó MQOutput.

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:

  1. Copia os cabeçalhos de mensagens da mensagem de entrada para árvore de mensagens de saída
  2. Copia o corpo da mensagem da mensagem de entrada para árvore de mensagens de saída.
  3. Configura o ReplyToQ para que a nova mensagem seja aquela da fila de entrada para o fluxo de mensagens Resposta.

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.

Fluxo de Mensagens Resposta de Backend

O fluxo de mensagens de Resposta Backend conclui o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ.
  2. Inclui o horário em que a mensagem foi modificada na carga útil da mensagem.
  3. Grava uma mensagem do WebSphere MQ

O fluxo de mensagens Resposta Backend contém os seguintes nós:

O fluxo de mensagens Resposta de Backend contém um nó MQInput, um nó Compute e um nó MQReply.

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:

  1. Copia a mensagem de entrada inteira para a árvore de mensagens de saída.
  2. Obtém o horário atual do WebSphere Message Broker e o reformata
  3. Inclui o horário reformatado na árvore de mensagens de saída.

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.

Fluxo de Mensagens Resposta

O fluxo de mensagens de resposta executa o seguinte processamento:

  1. O fluxo lê uma mensagem do WebSphere MQ que contém uma mensagem no formato CWF.
  2. O fluxo converte a mensagem no formato XML equivalente.
  3. Um nó JavaCompute obtém os detalhes de ReplyToQ e ReplyToQMgr da mensagem de solicitação original recuperando o MQMD do fluxo de solicitação do cache global.
  4. O fluxo cria uma mensagem do WebSphere MQ que contém a mensagem transformada e os valores recuperados de ReplyToQ e ReplyToQMgr.
  5. O fluxo remove os dados MQMD do cache global.

O fluxo de mensagens Resposta contém os seguintes nós:

O fluxo de mensagens de Resposta contém um nó MQInput, um nó de subfluxo, dois nós JavaCompute e um nó MQReply.

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.

Mensagem de Teste

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>

Voltar para o início da Amostra