論理ツリー構造は、メッセージを内部 (ブローカー) 的に表現したものです。
メッセージがブローカーに到達すると、それはメッセージ・フローで構成された入力ノードによって受信されます。 メッセージは、メッセージ・フローによって処理できるので、メッセージ・データのビット・ストリームから論理ツリー表現を作成する、1 つ以上のパーサーによって解釈される必要があります。
ツリー・フォーマットには、それが作成される元となったビット・ストリームと同一の内容が含まれますが、メッセージ・フロー内での取り扱いは、より簡単です。 組み込みメッセージ・フロー・ノードの大部分は、ツリー内のメッセージ内容を照会および更新するためのインターフェースを提供するとともに、各ノードに必要な機能を備えるのに助けとなる他のアクションをメッセージやデータベースに対して実行します。
3 つのインターフェースが備わっています。
パーサーによって作成されるツリー構造は、任意のメッセージ形式 (例えば XML) からは大いに独立しています。 ただし、メッセージ・ツリーの一部として作成され、メッセージ本体を表すサブツリーは、この例外です。 このサブツリーはメッセージに依存しており、その内容が詳細に記述されることはありません。
入力ノードは、4 つのサブツリーから成る論理ツリーを作成します。
これらのツリーのうちの最初のものは、メッセージ・ツリーの移植方法 に記述されているように、入力メッセージ・ビット・ストリームの内容に移植されます。残りの 3 つは最初は空です。
作成される 4 つのツリーのそれぞれには、ルート・エレメント (それぞれのツリーに固有の名前を持つ) があります。 各ツリーは、エレメント と呼ばれる、多数の、情報の離散的断片から構成されます。 ルート・エレメントには、親がなく、兄弟 (兄弟とは、単一の親を共用するエレメントのこと) もありません。 ルートは、多数の子エレメントの親です。 それぞれの子には親が必ず必要です。 また兄弟をゼロ個以上、子をゼロ個以上、持つことができます。
4 つのツリーは、組み込み入力ノードとユーザー定義入力ノード、およびパーサー用に作成されます。
入力ノードは、作成されていた論理ツリー構造を、メッセージ・フロー内の後続のメッセージ処理ノードに渡します。
他のツリーのうちどれを組み込むかを決定するには、ノードの「計算モード」プロパティー (「拡張」タブで表示される) に、値を指定する必要があります。デフォルトのアクションは、作成されるメッセージに対してのみ行われます。 メッセージ、LocalEnvironment、および ExceptionList の任意の組み合わせが、出力ツリーに作成されるよう指定することができます。
出力ツリーが入力メッセージ・ツリーの完全なコピーを含むようにしたい場合には、コピーを作成するよう単一 ESQL SET ステートメントをコーディングすることができます。 出力メッセージが入力メッセージ・ツリーのサブセットを含むようにしたい場合には、必要な部分をコピーするように、ESQL をコーディングします。 どちらの場合においても、「計算モード」の選択項目には、「メッセージ」 が含まれている必要があります。
出力ツリーに、入力 LocalEnvironment または ExceptionList ツリーの内容のすべてまたは一部を含めたい場合には、そのツリーに保存したい情報をコピーするよう、適切な ESQL をコーディングします。 このことを行う場合には、「計算モード」の選択項目に、LocalEnvironment、または Exception、またはその両方を組み込む必要があります。
また、出力メッセージ・ツリー、Environment ツリー、LocalEnvironment ツリー、または ExceptionList ツリーに、入力ツリーからコピーしない情報を移植するよう、ESQL をコーディングすることができます。 例えば、データベースからデータを検索したり、入力メッセージ・データからの内容を計算したりすることができます。