Utilizando um Nó MQGet em um Fluxo de Pedido/resposta

Para obter detalhes do processamento concluído no nó MQGet obter o resultado acima, consulte Processamento de Mensagens do Nó MQGet.

Apresentação

Esta página é uma introdução à utilização de um nó MQGet em um fluxo de pedido/resposta e descreve como o nó processa as mensagens de entrada (de acordo com o Ambiente Local e parâmetros de entrada configurados) para construir as mensagens de saída.

Para obter detalhes adicionais sobre como construir um fluxo, consulte a amostra: Resposta de Pedido Coordenado.

Como o Ambiente Local É Utilizado

O Ambiente Local é lido e atualizado pelo nó MQGet.

  • A estrutura MQGMO será lida a partir de ${inputMQParmsLocation}.MQGMO.*
  • Os códigos de retorno e de razão do MQ serão colocados em ${outputMQParmsLocation}.CC e .RC
  • Se existir uma árvore MQGMO no ambiente local, ela será atualizada com os valores utilizados pelo nó e propagada no recebimento de dados
  • Se existir ${inputMQParmsLocation}.MQMD, o MQMD transmitido para a própria chamada de MQGET (contendo os valores especificados na mensagem de entrada ou gerada pelo nó) será colocado nesse local, excluindo tudo o que já estiver nesse local.
Em resumo:
${inputMQParmsLocation}
  • QueueName
  • InitialBufferSize
${outputMQParmsLocation}
  • CC
  • RC
both
  • MQGMO.*
  • MQMD

Como É Construído o MQMD para a Chamada de MQGet

  • Se não for fornecido um MQMD de entrada, será utilizado um MQMD padrão.
  • Se for fornecido um MQMD de entrada, ele será utilizado de uma das duas formas a seguir:
    • Se o atributo Utilizar MQMD de Entrada Completo estiver configurado, o MQMD de entrada será totalmente utilizado.
    • Se o atributo Utilizar MQMD de Entrada Completo não estiver configurado, um MQMD padrão será preparado, em seguida, a partir do MQMD de entrada, se as caixas de opções messageID ou correlID estiverem configuradas, os IDs respectivos serão copiados para ele.

O diagrama a seguir mostra de forma um pouco mais detalhada como o nó MQGet constrói o MQMD a ser utilizado na chamada para o WebSphere MQ:

O diagrama é descrito no texto acima.

Como a Árvore de Mensagens de Saída É Construída

O diagrama a seguir esboça como a árvore de mensagens de saída é construída, combinando a árvore de entrada do nó anterior com a árvore de resultados da chamada de MQGet:

O diagrama é descrito no texto acima.

A seguir está um exemplo, em que:
copyMessage
copyEntireMessage
generateMode
mensagem
outputDataLocation
OutputRoot.XML.A
resultDataLocation
ResultRoot.XML.C
Neste exemplo, a Árvore de saída é construída de acordo com a seguinte seqüência:
  1. Toda a Árvore de entrada é copiada para a Árvore de saída, incluindo a ramificação XML com o filho A e o filho B de A.
  2. Na Árvore de resultados, o filho C e o filho D de C da ramificação XML são colocados na Árvore de saída na posição OutputRoot.XML.A. Qualquer conteúdo anterior de A (valores e filhos) é perdido e substituído pelo conteúdo de C, incluindo todos os valores e filhos que ele possui, neste caso, o filho D.
  3. A posição na Árvore de saída permanece denominada A.
O diagrama a seguir ilustra isto visualmente:

O diagrama é descrito no texto acima.

Exemplos de Árvores de Mensagens

A seguir estão alguns exemplos de como as árvores de mensagens são construídas, de acordo com as regras esboçadas acima.

Tabela 1. Um Input, LocalEnvironment e MQGet de Exemplo
Com uma montagem de mensagem semelhante a esta: A mensagem retornada por MQGet é:
InputRoot
MQMD
{mqmd da mensagem de entrada}
MQRFH2
{mqrfh2 da mensagem de entrada}
XMLNS
{corpo da mensagem de entrada}
InputLocalEnvironment
MQ
GET
MQGMO
MatchOptions = MQMO_MATCH_CORREL_ID
MQMD (sem filhos)
MyData
MQMD
{mqmd de entrada} (com CorrelID = {ID de Correlação correto como binário})
ResultRoot
MQMD
{mqmd da mensagem de resultado}
MQMD
{mqmd da mensagem de resultado}
XML
{corpo da mensagem de resultado}
Tabela 2. A Mensagem de Saída Resultante, de Acordo com Algumas Configurações de Exemplo
Com as seguintes configurações: A montagem de mensagem de saída resultante é:
inputMQMDLocation
InputLocalEnvironment.MyData.MQMD
copyMessage
copyEntireMessage
copyLocalEnv
copyEntireLocalEnvironment
generateMode
messageAndLocalEnvironment
outputDataLocation
InputLocalEnvironment.MyData.ReturnedMessage
OutputRoot
MQMD
{mqmd da mensagem de entrada}
MQRFH2
{mqrfh2 da mensagem de entrada}
XMLNS
{corpo da mensagem de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (com CorrelID = {ID de Correlação correto como binário})
Mensagem retornada
MQMD
{mqmd da mensagem de resultado}
MQRFH2
{mqrfh2 da mensagem de resultado}
XML
{corpo da mensagem de resultado}
resultDataLocation
ResultRoot.XML
OutputRoot
MQMD
{mqmd da mensagem de entrada}
MQRFH2
{mqrfh2 da mensagem de entrada}
XMLNS
{corpo da mensagem de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (com CorrelID = {ID de Correlação correto como binário})
Mensagem retornada (com atributos e valor de ResultRoot.XML)
{corpo da mensagem de resultado}

Esta árvore é efetivamente o resultado de uma designação de ${resultDataLocation} a ${outputDataLocation}. O valor do elemento de origem é copiado, pois são todos filhos, incluindo atributos.

copyLocalEnv
Nenhum
OutputRoot
MQMD
{mqmd da mensagem de entrada}
MQRFH2
{mqrfh2 da mensagem de entrada}
XMLNS
{corpo da mensagem de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
Mensagem retornada (com atributos e valor de ResultRoot.XML)
{corpo da mensagem de resultado}

Esta árvore tem o MQMD utilizado para get no OutputLocalEnvironment, porque o local de parâmetros de entrada do MQ continha um elemento MQMD. Mesmo que a árvore de entrada não seja copiada, a presença do elemento MQMD faz com que o MQMD utilizado para get ser colocado na árvore de saída.

outputDataLocation
<blank>
copyLocalEnv
copyEntireLocalEnvironment
OutputRoot
MQMD
{mqmd da mensagem de resultado}
MQRFH2
{mqrfh2 da mensagem de resultado}
XMLNS
{corpo da mensagem de resultado}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (com CorrelID = {ID de Correlação correto como binário})

A configuração de copyMessage neste caso não faz diferença para a eventual árvore de saída.

Conceitos relacionados
Visão Geral de Fluxos de Mensagens

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2005 Última Atualização: 04/11/2005
ac34680_