To view the structure of the logical message tree at any point in the message flow, include a Trace node and write some or all the message (including headers and all four message trees) to the trace output destination.
You might find trace output useful to check or record the content of a message before and after a node has changed it, or on its receipt by the input node. For example, if you include a Compute node that builds a destination list in the local environment tree, you might want a record of the structure that it has created as part of an audit trail, or you might want to check that the Compute node is working as you expect it to.
On UNIX, syslog entries are restricted in length and messages that are sent to the syslog are truncated by the newline character. To record a large amount of data in a log on UNIX, set the Destination property on the Trace node to File or User Trace instead of Local Error Log.
Assume that you have configured a message flow that receives an XML message on a WebSphere® MQ queue in an MQInput node. The input message includes an MQRFH2 header. The message has the following content:
<Trade type='buy'
Company='IBM'
Price='200.20'
Date='2000-01-01'
Quantity='1000'/>
You can include and configure a Trace node to produce output that shows one or more of the trees created from this message: the message body, environment, local environment, and exception trees. If you choose to record the content of the message body, the Properties tree and the contents of all headers (in this example, at least an MQMD and an MQRFH2) are included. You specify what you want to be recorded when you set the Trace node property Pattern. You can use most of the correlation names to define this pattern (you cannot use those names that are specific to the Compute node).
The trace output generated for the message tree of the preceding message with Pattern set to ${Root} would look like the following example:
Root
Properties
CreationTime=GMTTIMESTAMP '1999-11-24 13:10:00' (a GMT timestamp field)
... and other fields ...
MQMD
PutDate=DATE '19991124' (a date field)
PutTime=GMTTIME '131000' (a GMTTIME field)
... and other fields ...
MQRFH
mcd
msd='xml' (a character string field)
.. and other fields ...
XML
Trade
type='buy' (a character string field)
Company='IBM' (a character string field)
Price='200' (a character string field)
Date='2000-01-01' (a character string field)
Quantity='1000' (a character string field)
(0x1000000)Environment = (
(0x1000000)Variables = (
(0x1000000)MyVariable1 = (
(0x2000000) = '3'
)
(0x1000000)MyVariable2 = (
(0x2000000) = 'Hello'
)
)
)
To trace particular variables in the variables folder of the environment tree, you can use a more specific pattern, for example ${Environment.Variables.MyVariable1}. This setting returns the value only (for example, it returns just the value 3).
(0x1000000)Destination = (
(0x1000000)MQ = (
(0x1000000)DestinationData = (
(0x3000000)queuename = 'MQOUT'
)
)
(0x1000000)MQDestinationList = (
(0x1000000)DestinationData = (
(0x3000000)queuename = 'OLDMQOUT'
)
)
(0x1000000)RouterList = (
(0x1000000)DestinationData = (
(0x3000000)labelname = 'continue'
)
(0x1000000)DestinationData = (
(0x3000000)labelname = 'custdetails'
)
(0x1000000)DestinationData = (
(0x3000000)labelname = 'trade'
)
)
)
Another example, shown here, includes a WrittenDestination folder. This example represents a trace that has been written by a Trace node that is included after an MQOutput node, where the Out terminal of the MQOutput node is connected to a sequence of nodes including the Trace node. When an Out terminal is connected, the local environment is augmented with information about the action that the output node has performed.
(0x1000000)Destination = (
(0x1000000)MQ = (
(0x1000000)DestinationData = (
(0x3000000)queuename = 'MQOUT'
)
)
(0x1000000)WrittenDestination = (
(0x1000000)MQ = (
(0x1000000)DestinationData = (
(0x3000000)queueName = 'MQOUT'
(0x3000000)queueManagerName = 'MQSI_SAMPLE_QM'
(0x3000000)replyIdentfier = X'414d51204d5153495f53414d504c455f1f442f3b12600100'
(0x3000000)msgId = X'414d51204d5153495f53414d504c455f1f442f3b12600100'
(0x3000000)correlId = X'000000000000000000000000000000000000000000000000'
(0x03000000):GroupId = X'414d512042524f4b45523220202020203f59934620001803'
)
)
)
)
You can also view message structure in the message flow, and other information, when you use the flow debugger.