メッセージ・ツリーは、ブローカーがメッセージ本体の内部表記を保管する論理メッセージ・ツリーの一部です。
メッセージ・ツリーのルートは Root と呼ばれています。 メッセージ・ツリーは常に表示され、メッセージ・フローの単一インスタンス内でノードからノードに渡されます。
メッセージ・ツリーには、メッセージ本体に加え、メッセージ内に表示されるすべてのヘッダーが含まれています。 また、これには、パーサーによって作成される場合、プロパティー・サブツリー (パーサーで説明されている) が含まれています。提供されているパーサーがメッセージ・ツリーを作成した場合、 プロパティー・サブツリーを表すエレメントの後には 0 個以上のヘッダーが続きます。
メッセージが WebSphere MQ Enterprise Transport、WebSphere MQ Mobile Transport、または WebSphere MQ Telemetry Transport を経て受信された場合、最初のヘッダー (2 番目のエレメント) は MQMD でなければなりません。 メッセージ内に組み込まれるすべての追加のヘッダーは、メッセージ内の順序と同じ順序でツリー内に表示されます。 メッセージ・ツリーのルートの下の最後のエレメントは、必ずメッセージ本体です。
ユーザー定義のパーサーがメッセージ・ツリーを作成した場合、もしあれば、プロパティー・ツリーの後にメッセージ本体が続きます。
以下に、メッセージ・ツリー構造を示します。 入力メッセージが WebSphere MQ メッセージでない場合、表示されているヘッダーは存在しない場合があります。 このツリーを作成したパーサーがユーザー定義のパーサーである場合、 プロパティー・ツリーは存在しない場合があります。
本文ツリーとは、メッセージ内容 (データ) を表し、その内容の論理構造を反映している子エレメントの構造 (以下で説明されています) のことです。本文ツリーは、パーサーで説明されているように、パーサー (提供されているパーサーまたはユーザー定義のパーサーのどちらか) によって作成されます。
解析されたツリー内の各エレメントは、以下の 3 つのタイプのうちいずれかです。
メッセージ・ツリーへの移植方法についての詳細は、メッセージ・ツリーの移植方法を参照してください。
プロパティー・フォルダーは、メッセージ・ツリーの最初のエレメントであり、メッセージの特性に関する情報を保持します。
プロパティー・フォルダーのルートは、Properties と呼ばれています。 それは Root の下の最初のエレメントです。組み込みパーサーによって生成されるすべてのメッセージ・ツリーは、メッセージ用のプロパティー・フォルダーを備えています。 ユーザー独自のユーザー定義パーサーを作成する場合には、パーサーがプロパティー・フォルダーを作成するかどうかを選択することができます。 しかしながら、一貫性を考慮して、ユーザー定義パーサーにこのアクションを組み込むことをお勧めします。
プロパティー・フォルダーは、作成されて、すべてのヘッダーの後ろ、メッセージ・データの前にあるツリーに挿入されます。 これには、一連の標準プロパティーが含まれており、これは他のプロパティーと同様にメッセージ・フロー・ノードで操作できます。これらのフィールドの大部分はサポートされている WebSphere MQ ヘッダー内のフィールドにマップされ (もし存在するなら)、メッセージが 1 つのノードから他のノードに送達されるときに適切なパーサーに渡されます。
例えば、MQRFH2 ヘッダーには、メッセージのセット、タイプ、および形式に関する情報が含まれています。 これらの値は MessageSet、MessageType、および MessageFormat としてプロパティー・フォルダーに保管されます。 メッセージ処理ノードで ESQL を使用してこれらの値にアクセスするには、派生元ヘッダー内のフィールドを直接に参照するのではなく、プロパティー・フォルダーの値を参照します。
出力ノードの中などでメッセージがビット・ストリームに変換される場合、プロパティー・フォルダーのみに残っている (つまり出力メッセージのヘッダーの中にない) プロパティーはすべて、出力メッセージのどこの部分にも組み込まれません。
プロパティー・パーサーは、各ノードへの入力と、各ノードからの出力について、ヘッダー・フィールドの値が、プロパティー・フォルダーの値と一致するようにします。 ノードを終了するとすぐに、プロパティー・パーサーは、それぞれのヘッダー・パーサーを、現在指定されている値で起動します。 それから、ヘッダー・パーサーから値を戻してもらうことを要求し、自分の値を更新します。 プロパティー・フォルダーかヘッダーのいずれか、またはその両方で値を更新するノードで ESQL をコーディングした場合、これらの値は、そのノードからツリーが渡されるときには必ず一致します。 しかしながら、異なる値でプロパティー・フォルダーとヘッダーの両方のフィールドを更新した場合、ヘッダーに設定した値がプロパティー・フォルダーに設定した値によって上書きされます。
メッセージ・フロー処理が完了すると、プロパティー・フォルダーは廃棄されます。