モデルからモデルへの変換と
Java™
エミッター・テンプレート (JET) のモデルからテキストへの変換の組み合わせを作成するために、変換の出力を別の変換にリンクすることができます。
この機能によって、より複雑な変換 (UML から Java への変換など) を作成できます。
始める前に
リンク先の変換は、モデルからモデルへの変換を実行する時点で、登録済みでなければなりません。
このタスクについて
モデルからモデルへの変換出力を別の変換にリンクするには、以下のようにします。
- 「プロジェクト・エクスプローラー」ビューで、
変換マッピング・プロジェクトの生成済み TransformationProvider Java ファイルをダブルクリックします。
例えば、マッピング・プロジェクト内のマッピング・モデルの名前が Source2Target であれば、
Source2TargetTransformationProvider.java ファイルをダブルクリックします。
- createRootTransformation メソッドで、addPostProcessingRules メソッドを呼び出します。
- addPostProcessingRules メソッドで、規則を追加して該当する変換にリンクします。
- モデルからモデルへの変換にリンクするには、ChainRule クラスのインスタンスを作成します。
- JET モデルからテキストへの変換にリンクするには、JETRule クラスのインスタンスを作成します。
これらのクラスのコンストラクターで必要なパラメーターを調べるには、このトピックの最後にある関連リンクを参照してください。
注: Eclipse 文書または開発者ガイドへのリンクなどの、いくつかの情報は製品ヘルプ内のトピックからのみ使用可能です。
- createRootTransformation メソッドの @generated タグを除去または編集します。
- をクリックします。
タスクの結果
モデルからモデルへの変換の次回の実行時に、
変換によって生成されたターゲット・モデルが、プロセッシング規則に指定した変換への入力になります。
例
以下のコード・フラグメントは、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$
}
};
}