メッセージ・フロー内の任意の場所の論理メッセージ・ツリー構造を表示するためには、Trace ノードを作成して、一部または全部のメッセージ (ヘッダー、および 4 つのメッセージ・ツリーすべてを含む) をトレース出力先に書き込みます。
ノードによるメッセージ変更前と変更後のメッセージの内容、あるいは入力ノードがメッセージを受信した時点のメッセージ内容を検査または記録する場合には、トレース出力が役立ちます。 例えば、ローカル環境ツリー内に宛先リストを作成する Compute ノードを組み込む場合、監査証跡の一部として、作成された構造を記録する必要があるかもしれません。または、Compute ノードが期待どおりに動作していることを検査する必要があるかもしれません。
UNIX では、syslog エントリーは長さが制限されており、syslog に送信されるメッセージは改行文字で切り捨てられます。 UNIX で大量のデータをログに記録するには、Trace ノードの「宛先」プロパティーを「ローカル・エラー・ログ」ではなく、「ファイル」または「ユーザー・トレース」に設定します。
MQInput ノードの WebSphere® MQ キューで XML メッセージを受信するメッセージ・フローを構成したとします。 入力メッセージには MQRFH2 ヘッダーが含まれます。 メッセージの内容は次のようになります。
<Trade type='buy'
Company='IBM'
Price='200.20'
Date='2000-01-01'
Quantity='1000'/>
ここで、このメッセージから作成される 1 つまたは複数のツリー (メッセージ本体、環境、ローカル環境、および例外ツリー) を表示する出力を生成する Trace ノードを組み込み、構成することができます。 メッセージ本体の内容を記録する場合、プロパティー・ツリーおよびすべてのヘッダー (この例では、少なくとも MQMD と MQRFH2) が含まれます。 Trace ノードの「パターン」プロパティーを設定するとき、何を記録すべきかを指定します。 このパターンを定義するとき、ほとんどの相関名を使用できます (Compute ノードに固有の名前は使用できません)。
「パターン」を$Root に設定した場合、前述のメッセージのメッセージ・ツリーに生成されるトレース出力は、以下の例のようになります。
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'
)
)
)
環境ツリーの変数フォルダー内の特定の変数をトレースするには、より具体的なパターン (例えば ${Environment.Variables.MyVariable1}を使用することができます。 この設定は値だけを戻します (例えば、値 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'
)
)
)
別の例として、以下のように WrittenDestination フォルダーを含めることができます。 この例は、MQOutput ノードの後にある Trace ノードによって記録されるトレースです。MQOutput ノードの Out ターミナルは、Trace ノードを含む一連のノードに接続されています。 Out ターミナルが接続されると、ローカル環境には、出力ノードがすでに実行したアクションに関する情報が追加されます。
(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'
)
)
)
)
さらに、フロー・デバッガーを使用するときにも、メッセージ・フロー内のメッセージ構造その他の情報を表示することができます。