単一の入力オブジェクトから複数のオブジェクトを生成する変換の相互依存型マッピング宣言

相互依存型マッピング宣言を使用して、単一の入力オブジェクトから複数の関連オブジェクトを作成する変換を作成することができます。

モデル間変換では、マッピング宣言ごとに出力型を 1 つのみ指定できます。 その結果、マッピング宣言から変換を生成して実行すると、すべての出力オブジェクトが指定した型になります。

マッピング宣言内でサブマップ・マッピングを使用して、出力オブジェクトのフィーチャーを取り込む抽出を生成できます。 ただしサブマップ・マッピングを作成する前に、抽出が取り込むフィーチャーが、マッピング宣言の出力型に表示されている必要があります。

注: デフォルトでは、多数のフィーチャーがフィルター済みです。 フィルタリング・レベルを変更すると、フィーチャーを表示できる場合があります。詳細については、『マッピング宣言における入出力オブジェクトのフィーチャーの表示/非表示』というトピックを参照してください。

必要なフィーチャーが表示されていない場合は、要素の「フィーチャー」の代わりに「要素」全体をサブマップ・マッピングの入力オブジェクトとして使用することで、問題を解決できます。

ほとんどの場合、要素のフィーチャーがサブマップ・マッピングの入力オブジェクトになっているため、フィーチャーのコンテンツが抽出されてサブマップの変換式に渡されます。 要素がサブマップ・マッピングの入力オブジェクトである場合には、変換式によりそのすべてのフィーチャーを含む完全な要素のインスタンスが渡されます。 その結果、生成された変換ソース・コードでは、すべてのフィーチャーを以降の変換で使用できるようになります。

使用可能なマッピング・スキーマが、マッピング宣言の入力要素から生成するすべてのオブジェクトの単一のマッピング宣言のコンテキスト内でサブマップを提供できない場合に、この方法が役立ちます。 この方法を使用して複数のマッピング宣言を定義することにより、同じ入力オブジェクトの処理に複数の変換式を使用できるようになります。

サブマップのターゲットとして表示されないフィーチャーがある理由

入力型と同様に、出力型は型階層により編成されています。ある型の子孫は、その祖先の型に新しいフィーチャーを追加して、祖先の型定義を拡張します。 ポリモアフィズムをサポートするために、通常フィーチャーは型階層に含まれていない型になっています。

例えば、フィーチャーの型は「クラス」や「インターフェース」ではなく、「分類子」になります。 マッピング・エディターで、型が「分類子」のフィーチャーを拡張すると、「分類子」が持つフィーチャーを表示できます。 ただし、「クラス」または「インターフェース」が持っており、「分類子」は持っていないフィーチャーは表示できません。表示できない場合、それらの追加フィーチャーには直接マッピングを作成できません。

代替ソリューション

上記のソリューションには、Java™ コードの記述が必要ないという利点があります。 代わりのソリューションは 2 つあり、どちらもカスタム Java コードが必要です。また場合によっては、より単純、維持が容易、または柔軟なソリューションとなり得ます。


フィードバック