マッピングの繰り返し

マッピングの繰り返しは、 構造またはフィールドがメッセージ内に何回も出現する場合で、 メッセージ定義ステージで定義されているときに生じます。

たとえば、以下の表ではソース・メッセージに city および country フィールドの ある customer と呼ばれる構造が含まれます。 その下には、first および last と呼ばれる同一のフィールドを持つ、 name と呼ばれる 2 つの同一の構造があります。 これは繰り返し構造であり、 繰り返し構造をターゲット・フィールドに示されているような他の繰り返し構造にマップする場合、 ソースからターゲットへのフィールドの複数のマッピングが自動的に行われます。
ソース ターゲット
customer
  • city
  • country
name[1]
  • first
  • last
name[2]
  • first
  • last
customer
  • location

customername[1]

  • first
  • last

customername[2]

  • first
  • last

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

繰り返し可能ノードとは、以下の最小と最大の組み合わせを持つノードです。 * は際限がないことを意味し、... は範囲を表わします。 マッピングの観点からすると、 これはターゲットが入力サイドからのインスタンスの数値を、 人為的に制限するのではなく、その実境界として使用することを意味します。

繰り返しノードを展開してインスタンスを表示することができます。 インスタンス、さらに厳密に言うなら、インスタンス・エレメント・ノードは、 反復エレメントの 1 オカレンスです。 たとえば、フィールドに 10 のオカレンスがある場合、 その 1 つ 1 つをインスタンス・エレメント・ノードと見なすことができます。 これはメッセージで受け取るランタイム・インスタンスと同等のものではありませんが、 このエレメント・インスタンスがメッセージにある場合、プレースホルダーとなります。 このトピックでは、インスタンスとは、 ランタイム・インスタンスではなく、開発時間タイプのインスタンスのことです。

インスタンスは繰り返し可能ノードと同じレベルで生成され、繰り返し可能ノードの兄弟です。 それらはノードの構造を反映し、 ユーザーがマッピングで使用するインスタンスを正確に識別するためのマッピング可能エンティティーを提供します。 新しい兄弟にはそれぞれ、現行インスタンスの索引番号の接尾部が付けられます。

索引は、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] が続いている項目はインスタンス・エレメント・ノードを表わしています。

関連概念
マッピング条件
ケース・マッピング

関連タスク
マッピングの開発
マッピングの構成

関連資料
マッピング