変換の動作方法を見るため、それによって解決される問題について考慮してみてください。 例えば、変換のオーサリングにおいて、Package2Package マッピング宣言の中で Class2InterfaceRealization マッピング宣言を使用することにより、インターフェース実現を作成するものとします。 しかし、UML クラスのインターフェース実現であるサブマップ・マッピングのターゲット・フィーチャーは、Package2Package マッピング宣言内からは見えません。 では、欠落しているターゲット・フィーチャーにマップするには、どうすればいいのでしょうか?
インターフェース実現をターゲットとして提供するため、Package2Package マッピング宣言の中で、packagedElement フィーチャーから packagedElement フィーチャーへのサブマップを作成します (図の項目 1)。 このサブマップは、再帰的にその親である Package2Package マッピング宣言を参照しており、それによって、ネストしたパッケージとその内容のためのサポートを提供しています。 その結果、packagedElement フィーチャーから packagedElement フィーチャーへの付加的なサブマップを定義することができます。 それらのサブマップでは、他のマッピング宣言 Class2Class (項目 2) および Class2Interface (項目 3) を参照できます。
Class2Class マッピング宣言を作成する際には、Class 要素全体を入力とするサブマップ (項目 4) を使用できます。 出力については、interfaceRealization を選択します。 その結果として、Class2Interface マッピング宣言が利用可能になります。 それを利用することにより、Class 要素全体を入力とし、サプライヤー・フィーチャーとクライアント・フィーチャーを出力とする 2 つの付加的なサブマップ (項目 5 と 6) を作成します。 変換コードを生成する際に、ここで定義されるサブマップでは出力オブジェクトは作成されません。 その代わり、他のマッピング宣言から生成される変形によって作成される出力オブジェクトへの参照 が作成されます。
変換コードを生成する際には、サプライヤー出力フィーチャーとクライアント出力フィーチャーの両方において、入力 UML オブジェクトから生成された UML オブジェクトが参照されている必要があります。 参照する出力オブジェクトを指定するには、同じ入力から特定の出力オブジェクト Class または Interface を生成する作業を担当する変換を生成するマッピング宣言 Class2Class または Class2Interface を特定するよう、サブマップ定義を作成します。
詳細については、サンプル変換構成を参照してください。 図の中で、サブマップからマッピング宣言の上部に向かう矢印は、そのサブマップがそのマッピング宣言を参照していることを示しています。 例えば、ラベルが "1" の矢印は、Package2Package マッピング宣言を参照しています。
