メッセージ・フロー内の任意の場所の論理メッセージ・ツリー構造を表示するためには、Trace ノードを作成して、一部または全部のメッセージ (ヘッダー、および 4 つのメッセージ・ツリーすべてを含む) をトレース出力先に書き込みます。
ノードによるメッセージ変更前と変更後のメッセージの内容、あるいは入力ノードがメッセージを受信した時点のメッセージ内容を検査または記録する場合には、この方法が役立ちます。 例えば、LocalEnvironment 内に宛先リストを作成する Compute ノードを組み込む場合、監査証跡の一部として、作成された構造を記録する必要があるかもしれません。または、Compute ノードが期待どおりに動作していることを検査する必要があるかもしれません。
WebSphere MQ キューの MQInput ノードで XML メッセージを受信するメッセージ・フローを構成したとします。 入力メッセージには MQRFH2 ヘッダーが含まれます。 メッセージの内容は以下のとおりです。
<Trade type='buy' Company='IBM' Price='200.20' Date='2000-01-01' Quantity='1000'/>
ここで、このメッセージから作成される 1 つまたは複数のツリー (メッセージ本体、Environment ツリー、LocalEnvironment ツリー、および Exception ツリー) を表示する出力を生成する 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 ターミナルが接続されると、LocalEnvironment には、出力ノードがすでに実行したアクションに関する情報が追加されます。
(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' ) ) ) )
さらに、フロー・デバッガーを使用するときにも、メッセージ・フロー内のメッセージ構造その他の情報を表示することができます。