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.
The Request message flow performs the following processing:
The Request message flow contains the following nodes:
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:
The OutputRequestMsg MQReply node writes the WebSphere MQ output message.
The Backend Reply message flows performs the following processing:
The Backend Reply message flow contains the following nodes:
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:
The PutReplyMsg MQReply node writes the WebSphere MQ output message.
The reply message flow performs the following processing:
The Reply message flow contains the following nodes:
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.
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>