El ejemplo Solicitud y respuesta coordinadas de JMS contiene la Aplicación de Solicitud y respuesta coordinadas de JMS. Esta aplicación tiene una referencia de biblioteca a la Biblioteca de Solicitud y respuesta coordinadas.
El ejemplo Solicitud y respuesta coordinadas de JMS muestra cómo utilizar el nodo JMSReceive. En las siguientes secciones se describen los flujos de mensajes y el procesamiento que llevan a cabo.
El flujo de mensajes Request realiza el siguiente procesamiento:
El flujo de mensajes Request contiene los dos nodos siguientes:
El nodo GetRequestMsg JMSInput 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 StoreOriginalJMSHeader_Sub encapsula el almacenamiento de los valores de ReplyToQ y Correlation ID en un mensaje de JMS. El ID del mensaje se copia en el ID de correlación. Esta encapsulación se hace por dos motivos: para permitir que la lógica del proceso pueda reutilizarse fácilmente en otros flujos de mensajes y para permitir la sustitución de implementaciones alternativas. Por ejemplo, se puede crear una implementación alternativa que use un nodo de base de datos.
El subflujo TransformXMLtoMRM_Sub copia las cabeceras de mensaje del mensaje de entrada al árbol de mensajes de salida y realiza la conversión del mensaje de entrada desde el formato XML a CWF estableciendo el conjunto de mensajes, el tipo y el formato para el mensaje de salida.
El nodo SetReplyTo_CorrelID Compute realiza las acciones siguientes:
El nodo OutputRequestMsg JMSOutput escribe el mensaje de salida de JMS.
El flujo de mensajes Backend Reply realiza los siguientes procesos:
El flujo de mensajes Backend Reply contiene los nodos siguientes:
El nodo GetRequestMsg JMSInput lee el mensaje CWF. El formato, el conjunto de mensajes y el dominio necesarios para analizar el mensaje entrante se especifican en el nodo JMSInput.
El nodo Compute Modify_CompletionTime realiza las siguientes acciones:
El nodo PutReplyMsg JMSReply escribe el mensaje de salida de JMS.
El flujo de mensajes de respuesta ejecuta el siguiente proceso:
El flujo de mensajes Reply consta de los siguientes nodos:
El nodo GetBackendReply JMSInput lee el mensaje CWF. El formato, el conjunto de mensajes y el dominio necesarios para analizar el mensaje entrante se especifican en el nodo JMSInput.
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 RestoreOriginalJMSHeader_Sub encapsula la recuperación de los valores de ReplyToQ y Correlation ID. Utiliza un nodo JMSReceive para leer el mensaje de JMS que contiene los valores de ReplyToQ y Correlation ID que se han especificado en el mensaje de solicitud original y los copia en el mensaje de respuesta. En el flujo existe un nodo Compute antes del nodo JMSReceive. En el nodo Compute, la propiedad Correlation ID del nodo JMSReceive se sustituye en la variable de entorno por el valor de Correlation ID del mensaje de respuesta. El nodo JMSReceive está configurado para seleccionar el mensaje correspondiente según su Correlation ID, y para copiar la JMSHeader de solicitud original en la JMSHeader del mensaje que se procesa para dirigir el mensaje de respuesta de la aplicación establecida en la aplicación de solicitante correcta. El nodo JMSReceive también recupera la carga útil del mensaje de JMS que se utilizó para almacenar los valores originales de ReplyToQ.
Para obtener más información sobre el nodo JMSReceive, consulte Nodo JMSReceive en la documentación de WebSphere Message Broker.
El nodo PutOriginalReply JMSReply escribe el mensaje de salida de JMS.
El mensaje de prueba utilizado en el ejemplo Solicitud y respuesta coordinadas es un mensaje XML simple 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>