事前に生成されたオブジェクトに対する未解決の参照をモデルからモデルへの変換で管理する

モデルからモデルへの変換を実行する際に、変換は、メタモデルのフィーチャー設定に基づいて、オブジェクトまたは生成済みオブジェクトへの参照のいずれかを生成します。 変換がオブジェクトを生成した場合、変換は、それらのオブジェクトに関する識別情報をハッシュ・マップに記録します。 変換は、ポストプロセッシング中にそのハッシュ・マップに基づいて、オブジェクトへの参照を解決します。 ただし、ハッシュ・マップにある情報が不十分な場合は、参照を管理する必要があります。
このタスクについて

UML メタモデルでは、要素のフィーチャーに、包含という名前 の boolean プロパティーがあります。 包含プロパティーが true に設定されている場合、オブジェクトは、その要素のインスタンスのフィーチャーに置かれます。 包含プロパティーが false に設定されている場合は、オブジェクトへの参照のみがインスタンスの当該フィーチャーに置かれます。 変換はポストプロセッシング中に参照を解決します。

ポストプロセッシング中、変換は、FinalizeRule という名前の規則を使用して、据え置かれた参照レコードごとに検索を行って、参照を解決するオブジェクトを探します。 変換がオブジェクトを検出した場合、変換は、インスタンスの指定された出力フィーチャーに参照を作成します。 変換オーサリング・ランタイムが変換の ID を持つハッシュ・マップを検出した場合、そのランタイムは、ソース・オブジェクトを使用してハッシュ・マップでターゲット・オブジェクトを探します。 ランタイムが候補となるオブジェクトを複数検出した場合は、出力フィルターを呼び出して (定義されている場合)、1 つを選択します。 サブマップで出力フィルターが定義されていない場合、変換は、 最初に検出したターゲット・オブジェクトを使用して参照を解決します。 ターゲット・オブジェクトが 1 つも見つからない場合、変換はエラーをログに記録して、メッセージを表示します。

オブジェクトへの参照を管理するには、以下のようにします。

  1. 変換を実行する前に、参照に関して候補となるオブジェクトが複数存在することが分かっている場合は、対応するサブマップの出力フィルターを作成して、正しいオブジェクトが参照の解決に使用されるようにします。

    詳しい説明については、「サブマップ・マッピング規則での入出力オブジェクト・フィルターの指定」トピックを参照してください。

  2. 変換を実行します。
  3. ターゲット・オブジェクトが見つからないことを示すエラー・メッセージが表示 された場合は、出力フィルターを作成または変更して、正しいオブジェクトが生成されている場合には、変換でそれを見つけられるようにします。
    注: 多くの場合、ターゲット・オブジェクトは生成されていないので、検出されることはありません。 関係のあるすべての変換が実行されて、すべての必要なターゲット・オブジェクトが使用可能であることを確認してください。
  4. 変換を再実行して、すべての参照が解決されたかを確認します。

フィードバック