Acerca del ejemplo Solicitud y respuesta coordinadas de WebSphere MQ

El ejemplo Solicitud y respuesta coordinadas de WebSphere MQ contiene la Aplicación de Solicitud y respuesta coordinadas de MQ. Esta aplicación tiene una referencia de biblioteca a la Biblioteca de Solicitud y respuesta coordinadas.

El ejemplo Solicitud y respuesta coordinadas de WebSphere MQ muestra el uso de un nodo MQGet. Los detalles de los flujos de mensajes y del proceso que realizan se describen en las secciones siguientes:

Flujo de mensajes de solicitud

El flujo de mensajes Request realiza el siguiente procesamiento:

  1. Lee un mensaje de WebSphere MQ que contiene una carga útil XML.
  2. Guarda los detalles originales de ReplyToQ y ReplyToQMgr en un mensaje de WebSphere MQ distinto para su posterior recuperación por parte del flujo de mensajes Reply.
  3. Convierte el mensaje en el formato CWF equivalente
  4. Crea un mensaje de WebSphere MQ que contiene el mensaje transformado.
  5. Establece los detalles de ReplyToQ y ReplyToQMgr para que sean la entrada del flujo de mensajes Reply.
  6. Envía el mensaje al flujo de mensajes Backend Reply.

El flujo de mensajes Request contiene los dos nodos siguientes:

El flujo de mensajes Request contiene un nodo MQInput, dos nodos de subflujo, un nodo Compute y un nodo MQOutput.

El nodo MQInput GetRequestMsg lee el mensaje XML. El mensaje de entrada tiene un formato XML autodefinido, por lo que no es necesario especificar ningún conjunto de mensajes o formato para que se analice correctamente.

El subflujo StoreOriginalMQMD_Sub encapsula el almacenamiento de los valores de ReplyToQ y ReplyToQMgr en un mensaje de WebSphere MQ. Esta encapsulación permite:

El subflujo TransformXMLtoMRM_Sub copia las cabeceras del mensaje de entrada en el árbol de mensajes de salida y convierte el mensaje de entrada del formato XML al CWF estableciendo el conjunto de mensajes, el tipo y el formato para el mensaje de salida.

El nodo Compute SetReplyTo realiza las siguientes acciones:

  1. Copia las cabeceras de mensaje del mensaje de entrada al árbol de mensajes de salida
  2. Copia el cuerpo del mensaje de entrada en el árbol de mensajes de salida.
  3. Establece la ReplyToQ para que el nuevo mensaje sea el de la cola de entrada para el flujo del mensaje de respuesta.

El nodo MQReply OutputRequestMsg graba el mensaje de salida de WebSphere MQ.

Flujo de mensajes Backend Reply

El flujo de mensajes Backend Reply realiza los siguientes procesos:

  1. Lee un mensaje de WebSphere MQ.
  2. Añade la hora en que se modificó el mensaje a la carga útil del mensaje.
  3. Graba un mensaje de WebSphere MQ.

El flujo de mensajes Backend Reply contiene los nodos siguientes:

El flujo de mensajes Backend Reply contiene un nodo MQInput, un nodo Compute y un nodo MQReply.

El nodo MQInput GetRequestMsg lee el mensaje CWF. El formato, el conjunto de mensajes y el dominio necesarios para analizar el mensaje entrante se especifican en el nodo MQInput.

El nodo Compute Modify_CompletionTime realiza las siguientes acciones:

  1. Copia todo el mensaje de entrada en el árbol de mensajes de salida.
  2. Obtiene la hora actual de WebSphere Message Broker y le da un nuevo formato.
  3. Añade el tiempo de nuevo formato al árbol de mensajes de salida.

El nodo MQReply PutReplyMsg graba el mensaje de salida de WebSphere MQ.

Flujo de mensajes de respuesta

El flujo de mensajes de respuesta ejecuta el siguiente proceso:

  1. Lee un mensaje de WebSphere MQ que contiene un mensaje en formato CWF.
  2. Convierte el mensaje en el formato XML equivalente.
  3. Obtiene los detalles de ReplyToQ y ReplyToQMgr del mensaje de solicitud original leyendo el mensaje de WebSphere MQ que se usó para almacenar esta información en el flujo de mensajes de solicitud. Esta acción se lleva a cabo mediante el nodo MQGet.
  4. Crea un mensaje de WebSphere MQ que contiene el mensaje con el nuevo formato y los valores de ReplyToQ y ReplyToQMgr.

El flujo de mensajes Reply contiene los nodos siguientes:

El flujo de mensaje Reply contiene un nodo MQInput, dos nodos de subflujo y un nodo MQReply.

El nodo MQInput GetBackendReply lee el mensaje CWF. El formato, el conjunto de mensajes y el dominio necesarios para analizar el mensaje entrante se especifican en el nodo MQInput.

El subflujo TransformMRMtoXML_Sub copia las cabeceras de mensaje del mensaje de entrada en el árbol de mensajes de salida y convierte el mensaje de entrada del formato CWF a XML.

El subflujo RestoreOriginalMQMD_Sub encapsula la recuperación de los valores de ReplyToQ y ReplyToQMgr. Lee el mensaje de WebSphere MQ que contiene los valores de ReplyToQ y ReplyToQMgr que se especificaron en el mensaje de solicitud original y los copia en el mensaje de respuesta. Utiliza el nodo MQGet para realizar la lectura. El nodo MQGet está configurado para seleccionar el mensaje correspondiente por IDCorrel y para copiar el MQMD de la solicitud original en el MQMD del mensaje que se está procesando. El nodo MQGet también recupera la carga útil del mensaje de WebSphere MQ que se utilizó para almacenar los valores originales de ReplyToQ y ReplyToQMgr.

El nodo MQReply PutOriginalReply graba el mensaje de salida de WebSphere MQ.

Mensaje de prueba

El mensaje de prueba utilizado en el ejemplo Solicitud y respuesta coordinadas es un simple mensaje XML que contiene detalles de facturación para un cliente. Este ejemplo convierte el mensaje XML en el formato CWF. El valor del campo CompletionTime es el único valor modificado por el ejemplo. El mensaje se muestra en el ejemplo siguiente:

<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>

Volver a la página inicial del ejemplo