About the Coordinated Request Reply WebSphere MQ sample

The Coordinated Request Reply WebSphere MQ sample contains the Coordinated Request Reply MQ Application. This application has a library reference to Coordinated Request Reply Library.

The Coordinated Request Reply WebSphere MQ sample demonstrates the use of an MQGet node. The following sections describe the details of the message flows and the processing that they perform.

Request message flow

The Request message flow performs the following processing:

  1. Reads a WebSphere MQ message containing an XML payload
  2. Saves the original ReplyToQ and ReplyToQMgr details in a separate WebSphere MQ message for subsequent retrieval by the Reply message flow
  3. Converts the message into the equivalent CWF format
  4. Creates a WebSphere MQ message containing the transformed message
  5. Sets the ReplyToQ and ReplyToQMgr details to be the input of the Reply message flow
  6. Sends the message on to the Backend Reply message flow

The Request message flow contains the following nodes:

The Request message flow contains an MQInput node, two subflow nodes, a Compute node, and an MQOutput node.

The GetRequestMsg MQInput node reads the XML message. The incoming message is in a self-defining XML format so that you are not required to specify a message set or format for it to be parsed successfully.

The StoreOriginalMQMD_Sub subflow encapsulates the storage of the ReplyToQ and ReplyToQMgr values in a WebSphere MQ message. This encapsulation allows:

The TransformXMLtoMRM_Sub subflow copies the message headers from the input message to the output message tree and converts the input message from XML format to CWF by setting the message set, type, and format for the output message.

The SetReplyTo Compute node performs the following actions:

  1. Copies the message headers from the input message to the output message tree
  2. Copies the message body from the input message to the output message tree
  3. Sets the ReplyToQ for the new message to be that of the input queue for the reply message flow

The OutputRequestMsg MQReply node writes the WebSphere MQ output message.

Backend Reply message flow

The Backend Reply message flows performs the following processing:

  1. Reads a WebSphere MQ message
  2. Adds the time that the message was modified to the payload of the message
  3. Writes a WebSphere MQ message

The Backend Reply message flow contains the following nodes:

The Backend Reply message flow contains an MQInput node, a Compute node, and an MQReply node.

The GetRequestMsg MQInput node reads the CWF message. The message set, format, and domain that are required to parse the incoming message are specified on the MQInput node.

The Modify_CompletionTime Compute node performs the following actions:

  1. Copies the entire input message to the output message tree
  2. Obtains the current time from IBM Integration Bus and reformats it
  3. Adds the reformatted time to the output message tree

The PutReplyMsg MQReply node writes the WebSphere MQ output message.

Reply message flow

The reply message flow performs the following processing:

  1. Reads a WebSphere MQ message containing a message in CWF format
  2. Converts the message into the equivalent XML format
  3. Obtains the ReplyToQ and ReplyToQMgr details of the original request message by reading the WebSphere MQ message that was used to store this information in the Request message flow. This action is performed by the MQGet node.
  4. Creates a WebSphere MQ message containing the transformed message and the retrieved ReplyToQ and ReplyToQMgr values.

The Reply message flow contains the following nodes:

The Reply message flow contains an MQInput node, two subflow nodes, and an MQReply node.

The GetBackendReply MQInput node reads the CWF message. The message set, format, and domain that are required to parse the incoming message are specified on the MQInput node.

The TransformMRMtoXML_Sub subflow copies the message headers from the input message to the output message tree and converts the input message from CWF format to XML.

The RestoreOriginalMQMD_Sub subflow encapsulates the retrieval of the ReplyToQ and ReplyToQMgr values. It reads the WebSphere MQ message containing the values of ReplyToQ and ReplyToQMgr that were specified in the original request message and copies them into the reply message. It uses the MQGet node to perform the read. The MQGet node is configured to select the corresponding message by CorrelId and to copy the original request MQMD into the MQMD of the message being processed to direct the reply message from the established application to the correct requester application. The MQGet node also retrieves the payload of the WebSphere MQ message that was used to store the original values of ReplyToQ and ReplyToQMgr.

The PutOriginalReply MQReply node writes the WebSphere MQ output message.

Test message

The test message that is used in the Coordinated Request Reply sample is a simple XML message that contains invoice details for a customer. This sample converts the XML message into the CWF format. The CompletionTime field value is the only value that is changed by the sample. The following example shows the message:

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

Back to sample home