Sobre a Amostra Resposta de Pedido Coordenado

A amostra Resposta de Pedido Coordenado é um aplicativo de amostra do fluxo de mensagens baseado no cenário de um aplicativo contemporâneo e estabelecido que se comunica através do uso de mensagens do WebSphere MQ em um padrão de processamento de pedido/resposta.  O aplicativo contemporâneo utiliza mensagens XML autodefinidas e emite uma mensagem de pedido.  O aplicativo estabelecido utiliza mensagens CWF (Custom Wire Format).  Ele recebe uma mensagem de pedido, a processa e entrega uma mensagem de resposta.  Para os aplicativos se comunicarem com êxito, os formatos da mensagem devem ser transformados para as mensagens de pedido e resposta.

A amostra demonstra como a conversão pode ser atingida entre as mensagens XML autodefinidas e as mensagens CWF.  Além disso, a amostra demonstra como é possível armazenar informações em um fluxo de mensagens e recuperá-las em outro.  Na amostra há uma necessidade de preservar ReplyToQ e ReplyToQMgr da mensagem de pedido inicial para uso quando a mensagem de resposta correspondente for recebida.  No cenário, uma mensagem do WebSphere MQ é utilizada para armazenar os detalhes.

O processamento na amostra consiste em três fluxos de mensagens e um conjunto de mensagens.  Os fluxos de mensagens são:

O conjunto de mensagens MSET de Amostra com a definição de mensagem SaleListMessage é utilizado na conversão da mensagem do formato XML para CWF na seção de pedido do processamento e na conversão de CWF para XML na seção de resposta do processamento.

Os detalhes dos fluxos de mensagens e o processamento que eles executam estão descritos abaixo.

Fluxo de Mensagens Pedido

O fluxo de mensagens Pedido executa o seguinte processamento:

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

O Fluxo da Mensagem de Pedido

O nó MQInput GetRequestMsg lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não existe necessidade de especificar um conjunto de mensagens ou formato para ela ser analisada com êxito.

O subfluxo StoreOriginalMQMD_Sub encapsula o armazenamento dos valores ReplyToQ e ReplyToQMgr em uma mensagem do WebSphere MQ.  Isso é feito por duas razões:  Primeiro, para permitir que o processamento lógico seja facilmente reutilizado em outros fluxos de mensagens e, segundo, para permitir que implementações alternativas sejam substituídas.  Por exemplo, uma implementação alternativa que utiliza um nó de banco de dados poderá ser criada.

O nó Compute TransformAndSetReplyTo executa as seguintes ações:

  1. Copia os cabeçalhos de mensagens da mensagem de entrada para árvore de mensagens de saída.
  2. Executa a conversão da mensagem de entrada do formato XML para CWF. 
  3. Define o conjunto de mensagens, o tipo e o formato da mensagem de saída.
  4. Define ReplyToQ para que a nova mensagem seja aquela da fila de entrada para o fluxo de mensagens Resposta.

O nó MQOutput OutputRequestMsg grava a mensagem de saída do WebSphere MQ.

Fluxo de Mensagens Resposta de Backend

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

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

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

O Fluxo da Mensagem de Resposta de Backend

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 que chega são especificados no nó MQInput.

O nó Compute Backend_Computation executa as seguintes ações:

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

O nó MQOutput PutReplyMsg grava a mensagem de saída do WebSphere MQ.

Fluxo de Mensagens Resposta

O fluxo de mensagens Resposta executa o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ que contém uma mensagem no formato CWF.
  2. Converte a mensagem no formato XML equivalente.
  3. Obtém ReplyToQ e ReplyToQ Mgr da mensagem de pedido original lendo a mensagem do WebSphere MQ que foi utilizada para armazenar essas informações no fluxo de mensagens Pedido.  Isso é feito ao utilizar o nó MQGet.
  4. Cria uma mensagem do WebSphere MQ que contém a mensagem transformada e os valores recuperados ReplyToQ e ReplyToQMgr.

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

O Fluxo da Mensagem de Resposta

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 que chega são especificados no nó MQInput.

O nó Compute MapToRequestor executa as seguintes ações:

  1. Copia os cabeçalhos de mensagens da mensagem de entrada para árvore de mensagens de saída.
  2. Executa a conversão da mensagem de entrada do formato CWF para XML.

O subfluxo RestoreOriginalMQMD_Sub encapsula a recuperação dos valores ReplyToQ e ReplyToQMgr. Ele lê a mensagem do WebSphere MQ que contém os valores de ReplyToQ e ReplyToQMgr que foram especificados na mensagem de pedido original e os copia para a mensagem de resposta.  Ele faz a leitura utilizando o nó MQGet.  O nó MQGet está configurado para selecionar a mensagem correspondente por CorrelId e para copiar o MQMD do pedido original para o MQMD da mensagem que está sendo processada.  Isso é feito para direcionar a mensagem de resposta do aplicativo estabelecido para o aplicativo do solicitante correto. O nó MQGet também recupera a carga útil da mensagem do WebSphere MQ que foi utilizada para armazenar os valores originais de ReplyToQ e ReplyToQMgr.

O nó MQOutput PutOriginalReply grava a mensagem de saída do WebSphere MQ.

Mensagem de Teste

A mensagem de teste utilizada na amostra Resposta de Pedido Coordenado é uma mensagem XML simples que contém detalhes de fatura para um cliente.  Durante a execução da amostra, essa mensagem XML é convertida para o formato CWF.  O valor do campo CompletionTime é o único valor a ser alterado durante a execução da amostra.  A mensagem é mostrada abaixo.

<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>00.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>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.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.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

Ícone Página Principal   Voltar para Home da Amostra