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