ダイアグラムを使用して入力を指定するモデル間変換の構成例

このサンプルは、モデル間変換において、ダイアグラムを使用して入力を指定する方法を示すものです。 このトピックでは、この種の変換の実行方法、およびそのセットアップ方法が説明されています。

始める前に

このサンプルをセットアップするには、「ダイアグラムを使用して入力を指定するモデル間変換のセットアップ手順」のトピックで説明されている手順を使用してください。

手順

  1. ランタイム・ワークベンチで、ソースと変換構成を確認します。
    1. 「ダイアグラムとモデル (Diagrams and Models)」を展開し、ダイアグラムの要素とモデルの要素がいずれもソース・プロジェクトに含まれていることを確認します。
    2. run test.tc を右クリックし、「開く」 > 「変換構成エディター」をクリックします。
    3. 変換構成エディターで、「プロパティー」タブをクリックします。 プロパティー DiagramName に、このプロジェクトに含まれるダイアグラムの 1 つである Main1 が値として指定されていることに注意してください。
    4. 変換構成エディターで、「メイン」タブをクリックし、「実行」をクリックします。
    5. 変換の出力を確認します。 入力ダイアグラム Main1 で指定されているとおり、Class2、Class4、および Class6 が出力に含まれています。
  2. 変換のセットアップ方法を理解するため、ワークスペースにインポートしたプロジェクトを調べます。
    1. src を展開した後、com.ibm.xtools.transform.authoring.examples.classesindiagram を展開し、TransformationProvider クラス ClassesInDiagramTransformationProvider を開きます。
    2. TransformationProvider クラスにより、ダイアグラムの名前が変換のコンテキストから取り出され、グローバル変数に格納されることに注意してください。 コードは、以下のようになります。
      protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
            return new RootTransformation(descriptor, new MainTransform() {
      		@Override
      		public void execute(ITransformContext context) throws Exception {
      			diagramName = (String)context.getPropertyValue("diagramname");
      			super.execute(context);
      		}        	
             });
         }
      
         public static String diagramName = null;
    3. モデルを展開し、マッピング・ファイル ClassesInDiagram.mapping を開きます。
    4. Model2Model マッピング宣言の中で 2 番目の packagedElement-to-packagedElement サブマップを右クリックし、「プロパティーに表示」をクリックします。 このサブマップは Class2Class マッピングです。
    5. 「プロパティー」ウィンドウで「カスタム抽出」タブをクリックします。 カスタム抽出において、指定されたダイアグラムの内容をグローバル変数を使用して参照することにより、どのクラスを処理するかが決定されることに注意してください。 同じグローバル変数が、Package2Package マッピング宣言中の Class2Class サブマップのカスタム抽出でも使用されます。
  3. ランタイム・ワークベンチにおいて、変換構成エディターの「プロパティー」ページで、diagramName フィールドの値を「Main2」に置き換えてから、変換を再実行します。 この段階で、変換は失敗します。

    構成の中で Main2 ダイアグラムが指定されているところで変換が失敗します。 ソース・モデルには、Class5 から Class への一般化が含まれていますが、指定されたダイアグラム中に Class1 が出現しないため、それはターゲット・モデルにコピーされないということが原因です。

    変換を作成する場合、モデル間参照をすべて解決するためには、同じモデル中に含まれているすべての参照先オブジェクトが変換に含まれていなければならないという点に注意してください。

関連情報
ダイアグラムを使用して入力を指定するモデル間変換のセットアップ手順

フィードバック