ソース (メッセージ) | ターゲット (メッセージ) |
customer
|
customer
customername[1]
customername[2]
|
ソースとターゲットはツリー・ノードを使ってマップされます。ツリー・ノードは、メッセージ・タイプを含むスキーマ・タイプ、あるいはデータベース表または列を表します。 したがってツリー・ノードは、特定のメッセージ・タイプのコンテナーです。
1 つの反復ノードにデータを取り込むことにより、すべてのインスタンスを表示することが可能です。これは「取り込み」メニュー・コマンドによって可能になります。インスタンス (実際にはインスタンス・エレメント・ノード) は、反復エレメントの単一オカレンスです。 たとえば、フィールドに 10 のオカレンスがある場合、各オカレンスをインスタンス・エレメント・ノードと見なすことができます。 これは、実際のメッセージで受け取るランタイム・インスタンスとは異なります。 むしろ、このエレメント・インスタンスがメッセージ内で生じる場合のプレースホルダーです (ここでいうインスタンスとは、ランタイム・インスタンスのことではなく、開発時インスタンスのことです)。
インスタンスは反復可能ノードと同じレベルで生成され、反復可能ノードの兄弟 (子) です。 それらはノードの構造を表し、必要なインスタンスに排他的にマップできるエンティティーを提供します。 新しい兄弟にはそれぞれ、現行インスタンスの索引番号の接尾部が付けられます。
索引は、Java の 0 ベースではなく、ESQL の 1 ベースです。
たとえば、次の構造をご覧ください。
message1 |_ top |_ middle |_bottom
middle と bottom は反復可能で、 middle は n1..m1 回、 bottom は n2..m2 回繰り返します。
展開されたそれぞれのインスタンス・ノードは、他の反復不可エレメントと同じ仕方で、マップ内で使用できます (このノードは反復不可であるため)。 しかし、ネストされたレベルの反復の場合、これには反復可能な子を含めることができます。 内部のレベルが展開されていない場合には、ネストされた構造 (前述の例のように) のトップレベルを、意味ある仕方で展開することはできません。 つまり、その下の子は、それらネストされた反復可能ノードが必要とする最小数のインスタンスに展開される、という意味です。 つまり、例では、middle の必要な最小の展開によって n1 インスタンスが作成されますが、 middle の子は、ただ 1 つの bottom を持つ単一のセットとはなりません。 このインスタンスの最小の「発生」によって、反復の回数が決定されます。
以下の例は、部分的に展開されている完全ツリー・ノードを示しています。
message1 |_ top |_ middle[] |_bottom[] |_ middle[1] |_bottom[] |_bottom[All] |_bottom[1]
この例では、後に [] が続いている項目は反復可能ノード、後に [All] が続いている項目はすべてのノード、後に [1] が続いている項目はインスタンス・エレメント・ノードです。