Sobre a Amostra Coordinated Request Reply JMS

A Amostra Coordinated Request Reply JMS contém o Coordinated Request Reply JMS Application. Esse aplicativo tem uma referência de biblioteca à Biblioteca de Coordinated Request Reply.

A amostra Coordinated Request Reply JMS demonstra como usar o nó JMSReceive. As seções a seguir descrevem os fluxos de mensagens e o processamento que eles desempenham.

Fluxo de Mensagens Pedido

O fluxo de mensagens Pedido executa o seguinte processamento:

  1. Lê uma mensagem do JMS que contém uma carga útil XML
  2. Salva os detalhes originais de ReplyToQ uma mensagem do JMS separada para recuperação subsequente pelo fluxo de mensagens Resposta
  3. Converte a mensagem no formato CWF equivalente.
  4. Cria uma mensagem do JMS que contém a mensagem transformada
  5. Define os detalhes de ReplyToQ para serem a entrada do fluxo de mensagens Resposta.
  6. Envia a mensagem para o fluxo de mensagens Resposta de Backend.

O fluxo de mensagens de Solicitação contém os seguintes nós:

O fluxo de mensagens de Solicitação contém um nó JMSInput, dois nós de subfluxos, um nó Compute um nó JMSOutput.

O nó JMSInput GetRequestMsg lê a mensagem XML. A mensagem de entrada está em um formato XML autodefinido, sendo assim, você não tem a necessidade de especificar um conjunto ou formato de mensagens para ela ser analisada com sucesso.

O subfluxo StoreOriginalJMSHeader_Sub encapsula o armazenamento dos valores ReplyToQ e ID de Correlação em uma mensagem JMS. O ID de Mensagem está sendo copiado para o ID de Correlação. Essa encapsulação é feita por duas razões: permitir o processamento lógico, para ser facilmente reutilizado em outros fluxos de mensagens, e para permitir que implementações alternativas sejam substituídas. Por exemplo, uma implementação alternativa que usa um nó de banco de dados pode ser criada.

O subfluxo TransformXMLtoMRM_Sub copia os cabeçalhos de mensagem a partir da mensagem de entrada para a árvore de mensagens de saída e executa a conversão da mensagem de entrada do formato XML para o formato CWF ao configurar o conjunto, tipo e formato da mensagem para a mensagem de saída.

O nó Compute SetReplyTo_CorrelID desempenha 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 ID de Correlação como o ID de Mensagem.
  4. Define ReplyToQ para que a nova mensagem seja aquela da fila de entrada para o fluxo de mensagens Resposta.

O nó OutputRequestMsg JMSOutput grava a mensagem de saída JMS.

Fluxo de Mensagens Resposta de Backend

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

  1. Lê uma mensagem JMS.
  2. Inclui o momento em que a mensagem foi modificada para a carga útil da mensagem.
  3. Grava uma mensagem JMS.

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

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

O nó JMSInput 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ó JMSInput.

O nó Compute Modify_CompletionTime desempenha 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 a partir do WebSphere Message Broker e o reformata.
  3. Inclui o horário reformatado na árvore de mensagens de saída.

O nó PutReplyMsg JMSReply grava a mensagem de saída JMS.

Fluxo de Mensagens Resposta

O fluxo de mensagens Resposta executa o seguinte processamento:

  1. Lê uma mensagem JMS que contém uma mensagem no formato CWF.
  2. Converte a mensagem no formato XML equivalente.
  3. Obtém os detalhes ReplyToQ da mensagem de solicitação original ao ler a mensagem JMS que era usada para armazenar essas informações no fluxo de mensagens de Solicitação. Esta ação é desempenhada pelo nó JMSReceive.
  4. Cria uma mensagem JMS que contém a mensagem transformada e o valor recuperados ReplyToQ.

O fluxo de mensagens Resposta consiste em um dos seguintes nós:

O fluxo de mensagens de Resposta contém um nó JMSInput, dois nós de subfluxos e um nó JMSReply.

O nó JMSInput 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ó JMSInput.

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 fluxo RestoreOriginalJMSHeader_sub contém o nó JMSReceive.

O subfluxo RestoreOriginalJMSHeader_Sub encapsula a recuperação dos valores ReplyToQ e ID de Correlação. Ele usa um nó JMSReceive para ler a mensagem JMS que contém os valores de ReplyToQ e ID de Correlação que foram especificados na mensagem de solicitação original e os copia para a mensagem de resposta. Um nó Compute vem antes do nó JMSReceive no fluxo. No nó Compute, a propriedade ID de Correlação do nó JMSReceive é substituída na variável de ambiente pelo ID de Correlação da mensagem de resposta. O nó JMSReceive é configurado para selecionar a mensagem correspondente pelo seu ID de Correlação e para copiar a solicitação original JMSHeader no JMSHeader da mensagem que está sendo processada para direcionar a mensagem de resposta do aplicativo estabelecido para o aplicativo do solicitante correto. O nó JMSReceiver também recupera a carga útil da mensagem JMS que foi usada para armazenar os valores originais do ReplyToQ.

Para obter informações adicionais sobre o nó JMSReceive, consulte Nó JMSReceive na documentação do WebSphere Message Broker.

O nó PutOriginalReply JMSReply grava a mensagem de saída JMS.

Mensagem de Teste

A mensagem de teste usada na amostra Resposta de Pedido Coordenado é 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>
</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>

Voltar para Home da Amostra