変換出力の他の変換へのリンク

モデルからモデルへの変換と Java™ エミッター・テンプレート (JET) のモデルからテキストへの変換の組み合わせを作成するために、変換の出力を別の変換にリンクすることができます。 この機能によって、より複雑な変換 (UML から Java への変換など) を作成できます。
始める前に
リンク先の変換は、モデルからモデルへの変換を実行する時点で、登録済みでなければなりません。
このタスクについて
モデルからモデルへの変換出力を別の変換にリンクするには、以下のようにします。
  1. 「プロジェクト・エクスプローラー」ビューで、 変換マッピング・プロジェクトの生成済み TransformationProvider Java ファイルをダブルクリックします。 例えば、マッピング・プロジェクト内のマッピング・モデルの名前が Source2Target であれば、 Source2TargetTransformationProvider.java ファイルをダブルクリックします。
  2. createRootTransformation メソッドで、addPostProcessingRules メソッドを呼び出します。
  3. addPostProcessingRules メソッドで、規則を追加して該当する変換にリンクします。
    • モデルからモデルへの変換にリンクするには、ChainRule クラスのインスタンスを作成します。
    • JET モデルからテキストへの変換にリンクするには、JETRule クラスのインスタンスを作成します。
    これらのクラスのコンストラクターで必要なパラメーターを調べるには、このトピックの最後にある関連リンクを参照してください。
    注: Eclipse 文書または開発者ガイドへのリンクなどの、いくつかの情報は製品ヘルプ内のトピックからのみ使用可能です。
  4. createRootTransformation メソッドの @generated タグを除去または編集します。
  5. 「ファイル」 > 「保存」をクリックします。
タスクの結果
モデルからモデルへの変換の次回の実行時に、 変換によって生成されたターゲット・モデルが、プロセッシング規則に指定した変換への入力になります。
以下のコード・フラグメントは、createRootTransformation メソッドの変更された @generated タグと、別の変換を起動する add ポストプロセッシング規則を示しています。
  • 以下のコード・フラグメントの add ポストプロセッシング規則は、変換 ID が MyM2MTransformation に設定された、モデルからモデルへの変換を起動します。
    /**
         * Creates a root transformation. You may add more rules to the transformation here
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * @param transform The root transformation
         * @generated NOT
         */
        protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
            return new RootTransformation(descriptor, new MainTransform()) {
                protected void addPostProcessingRules() {
                    add(new ChainRule("MyM2MTransformation", TARGET_CONTAINER)); //$NON-NLS-1$
                }
            };
        }
  • 以下のコード・フラグメントの add ポストプロセッシング規則は、変換 ID が MyJetTransformation に設定された JET 変換を起動します。
    /**
         * Creates a root transformation. You may add more rules to the transformation here
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * @param transform The root transformation
         * @generated NOT
         */
        protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
            return new RootTransformation(descriptor, new MainTransform()) {
                protected void addPostProcessingRules() {
                    add(new JETRule(“MyJetTransformation")); //$NON-NLS-1$
                }
            };
        }

フィードバック