Utilización de un nodo MQGet en un flujo de petición-respuesta

Para obtener detalles del proceso realizado en el nodo MQGet para lograr lo indicado anteriormente, consulte Proceso de mensajes de nodo MQGet.

Introducción

Esta página es una introducción a la utilización de un nodo MQGet en un flujo de petición-respuesta y describe cómo procesa el nodo los mensajes de entrada (de acuerdo con los parámetros de entorno local y de entrada que establezca) para crear los mensajes de salida.

Para obtener más detalles sobre cómo crear un flujo, consulte el ejemplo: Respuesta de petición coordinada.

Cómo se utiliza el entorno local

El nodo MQGet lee y actualiza el entorno local.

  • La estructura MQGMO se leerá desde ${inputMQParmsLocation}.MQGMO.*
  • Los códigos de retorno y razón de MQ se colocarán en ${outputMQParmsLocation}.CC y .RC
  • Si existe un árbol MQGMO en el entorno loca, se actualizará con los valores utilizados por el nodo y se propagará en sentido descendente
  • Si ${inputMQParmsLocation}.MQMD existe, el MQMD pasado a la propia llamada MQGET (que contiene los valores especificados en el mensaje de entrada o generados por el nodo) se colocará en esa ubicación, suprimiendo todo lo que ya haya en dicha ubicación.
En resumen:
${inputMQParmsLocation}
  • Nombre de cola
  • Tamaño de almacenamiento intermedio inicial
${outputMQParmsLocation}
  • CC
  • RC
ambos
  • MQGMO.*
  • MQMD

Cómo se construye el MQMD para llamada MQGet

  • Si no proporciona un MQMD de entrada, se utiliza un MQMD por omisión.
  • Si proporciona un MQMD de entrada, éste se utiliza de uno de los modos siguientes:
    • Si el atributo Utilizar MQMD de entrada completo está establecido, se utiliza el MQMD de entrada en su totalidad.
    • Si el atributo Utilizar MQMD de entrada completo no está establecido, se prepara un MQMD por omisión del MQMD de entrada; si los recuadros de selección messageID o correlID están establecidos, se copian en él los respectivos ID.

El diagrama siguiente muestra de forma un poco más detallada cómo el nodo MQGet construye el MQMD que se debe utilizar e la llamada a WebSphere MQ:

El diagrama se describe en el texto de arriba.

Cómo se construye el árbol de mensaje de salida

El diagrama siguiente muestra cómo se construye el árbol de mensaje de salida combinando el árbol de entrada del nodo anterior con el árbol de resultado de la llamada MQGet:

El diagrama se describe en el
texto de arriba.

A continuación se muestra un ejemplo, donde:
copyMessage
copyEntireMessage
generateMode
message
outputDataLocation
OutputRoot.XML.A
resultDataLocation
ResultRoot.XML.C
En este ejemplo, el árbol de salida se construye de acuerdo con la secuencia siguiente:
  1. Se copia la totalidad del árbol de entrada en el árbol de salida, incluida la ramificación XML con el hijo A y el hijo B de A.
  2. Desde el árbol de resultado, el hijo C de la ramificación XML y el hijo D de C se ponen en el árbol de salida en la posición OutputRoot.XML.A. El contenido anterior de A (valores e hijos) se pierde y se sustituye por el contenido de C, incluidos todos los valores e hijos que tenga, en este caso el hijo D.
  3. La posición en el árbol de salida continúa con el nombre A.
El diagrama siguiente lo ilustra visualmente:

El diagrama se describe en el texto de arriba.

Ejemplos de árbol de mensaje

A continuación se muestran unos ejemplos de cómo se construyen árboles de mensajes de acuerdo con las normas descritas anteriormente.

Tabla 1. Entrada, entorno local y MQGet de ejemplo
Con un conjunto de mensajes como éste: El mensaje que MQGet devuelve es:
InputRoot
MQMD
{mqmd de mensaje de entrada}
MQRFH2
{mqrfh2 de mensaje de entrada}
XMLNS
{cuerpo de mensaje de entrada}
InputLocalEnvironment
MQ
GET
MQGMO
MatchOptions = MQMO_MATCH_CORREL_ID
MQMD (sin hijos)
MyData
MQMD
{mqmd de entrada} (con CorrelID = {ID de correlación correcto como binario})
ResultRoot
MQMD
{mqmd de mensaje de resultado}
MQMD
{mqmd de mensaje de resultado}
XML
{cuerpo de mensaje de resultado}
Tabla 2. Mensaje de salida resultante, de acuerdo con algunos valores de ejemplo
Con los valores siguientes: El conjunto de mensajes de salida resultante es:
inputMQMDLocation
InputLocalEnvironment.MyData.MQMD
copyMessage
copyEntireMessage
copyLocalEnv
copyEntireLocalEnvironment
generateMode
messageAndLocalEnvironment
outputDataLocation
InputLocalEnvironment.MyData.ReturnedMessage
OutputRoot
MQMD
{mqmd de mensaje de entrada}
MQRFH2
{mqrfh2 de mensaje de entrada}
XMLNS
{cuerpo de mensaje de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (con CorrelID = {ID de correlación correcto como binario})
Mensaje devuelto
MQMD
{mqmd de mensaje de resultado}
MQRFH2
{mqrfh2 de mensaje de resultado}
XML
{cuerpo de mensaje de resultado}
resultDataLocation
ResultRoot.XML
OutputRoot
MQMD
{mqmd de mensaje de entrada}
MQRFH2
{mqrfh2 de mensaje de entrada}
XMLNS
{cuerpo de mensaje de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (con CorrelID = {ID de correlación correcto como binario})
Mensaje devuelto (con los atributos y el valor de ResultRoot.XML)
{cuerpo de mensaje de resultado}

Este árbol es el resultado de la realización de una asignación de ${resultDataLocation} a ${outputDataLocation} de forma efectiva. Se copia el valor del elemento de origen, igual que se copian todos los hijos incluidos los atributos.

copyLocalEnv
ninguno
OutputRoot
MQMD
{mqmd de mensaje de entrada}
MQRFH2
{mqrfh2 de mensaje de entrada}
XMLNS
{cuerpo de mensaje de entrada}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
Mensaje devuelto (con los atributos y el valor de ResultRoot.XML)
{cuerpo de mensaje de resultado}

Este árbol tiene el MQMD utilizado para 'get' (obtención) en OutputLocalEnvironment porque la ubicación de los parámetros de MQ de entrada tenía un elemento MQMD debajo de él. Aunque el árbol de entrada no se copia, la presencia del elemento MQMD hace que el MQMD utilizado para 'get' se ponga en el árbol de salida.

outputDataLocation
<espacio en blanco>
copyLocalEnv
copyEntireLocalEnvironment
OutputRoot
MQMD
{mqmd de mensaje de resultado}
MQRFH2
{mqrfh2 de mensaje de resultado}
XMLNS
{cuerpo de mensaje de resultado}
OutputLocalEnvironment
MQ
GET
MQGMO
{mqgmo utilizado para get}
MQMD
{mqmd utilizado para get}
CC = 0
RC = 0
MyData
MQMD
{mqmd de entrada} (con CorrelID = {ID de correlación correcto como binario})

En este caso, el establecimiento de copyMessage no importa en el árbol de salida final.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2005 Última actualización: 11/11/2005
ac34680_