反復構造とフィールド

反復構造またはフィールドは、同じメッセージ内で何回も生じるものであり、メッセージ自体が定義される際に定義されます。 たとえば、1 つのソース・メッセージに、2 つのフィールド city および country を含む構造 customer を含めることができます。 2 つの同一の name 構造のそれぞれには、2 つの同一フィールド first および last が含まれます。 このような反復構造が、別の反復構造にマップされる場合 (ターゲット・フィールドに示されているような)、ソース・フィールドおよびターゲット・フィールド間の複数の関連が自動的に処理されます。
ソース (メッセージ) ターゲット (メッセージ)
customer
  • city
  • country
name[1]
  • first
  • last
name[2]
  • first
  • last
customer
  • location

customername[1]

  • first
  • last

customername[2]

  • first
  • last

ソースとターゲットはツリー・ノードを使ってマップされます。ツリー・ノードは、メッセージ・タイプを含むスキーマ・タイプ、あるいはデータベース表または列を表します。 したがってツリー・ノードは、特定のメッセージ・タイプのコンテナーです。

反復可能ノードには、最小オカレンスと最大オカレンスの以下の組み合わせがあります。 * ケースは、無制限の最大が発生することを暗黙指定します (... は範囲を表す)。 ターゲットはソース・サイドからのインスタンスの数値を、人為的に制限するのではなく、その実境界として使用します。

1 つの反復ノードにデータを取り込むことにより、すべてのインスタンスを表示することが可能です。これは「取り込み」メニュー・コマンドによって可能になります。インスタンス (実際にはインスタンス・エレメント・ノード) は、反復エレメントの単一オカレンスです。 たとえば、フィールドに 10 のオカレンスがある場合、各オカレンスをインスタンス・エレメント・ノードと見なすことができます。 これは、実際のメッセージで受け取るランタイム・インスタンスとは異なります。 むしろ、このエレメント・インスタンスがメッセージ内で生じる場合のプレースホルダーです (ここでいうインスタンスとは、ランタイム・インスタンスのことではなく、開発時インスタンスのことです)。

インスタンスは反復可能ノードと同じレベルで生成され、反復可能ノードの兄弟 (子) です。 それらはノードの構造を表し、必要なインスタンスに排他的にマップできるエンティティーを提供します。 新しい兄弟にはそれぞれ、現行インスタンスの索引番号の接尾部が付けられます。

索引は、Java の 0 ベースではなく、ESQL の 1 ベースです。

たとえば、次の構造をご覧ください。

message1
      |_ top
            |_ middle
         |_bottom

middlebottom は反復可能で、 middle は n1..m1 回、 bottom は n2..m2 回繰り返します。

展開されたそれぞれのインスタンス・ノードは、他の反復不可エレメントと同じ仕方で、マップ内で使用できます (このノードは反復不可であるため)。 しかし、ネストされたレベルの反復の場合、これには反復可能な子を含めることができます。 内部のレベルが展開されていない場合には、ネストされた構造 (前述の例のように) のトップレベルを、意味ある仕方で展開することはできません。 つまり、その下の子は、それらネストされた反復可能ノードが必要とする最小数のインスタンスに展開される、という意味です。 つまり、例では、middle の必要な最小の展開によって n1 インスタンスが作成されますが、 middle の子は、ただ 1 つの bottom を持つ単一のセットとはなりません。 このインスタンスの最小の「発生」によって、反復の回数が決定されます。

以下の例は、部分的に展開されている完全ツリー・ノードを示しています。

message1
      |_ top
            |_ middle[]
                  |_bottom[]
            |_ middle[1]
                  |_bottom[]
                  |_bottom[All]
                  |_bottom[1]

この例では、後に [] が続いている項目は反復可能ノード、後に [All] が続いている項目はすべてのノード、後に [1] が続いている項目はインスタンス・エレメント・ノードです。

関連タスク
マッピング標識
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2005 Last updated: 11/07/2005
ar00970_