変換の拡張

変換の拡張を使用して、カスタム変換または IBM® Rational® モデリング製品で使用可能な変換を拡張したり強化したりすることができます。

ターゲット変換の作成者以外のユーザーは、変換の拡張を作成できます。

変換フレームワークの拡張性は、Eclipse プラグイン・アーキテクチャーに基づいています。 変換の拡張は、以下の項目を含むプラグインです。 TransformationExtension 要素で、targetTransformation 属性は拡張対象の変換 (ターゲット変換とも呼ばれる) を指定します。 変換の拡張のプラグインには、複数の TransformationExtension 要素を含めることができますが、ターゲット変換のドメインが異なる場合、複数の TransformationExtension 要素を 1 つの プラグインに作成するのではなく、それぞれの変換の拡張ごとに別々のプラグインを作成する必要があります。

変換を拡張するには、ターゲット変換 の extensible プロパティー および public プロパティーが 、true に設定されていることを確認する必要があります。 また、ターゲット変換の拡張ポイント情報および ID のほか、ターゲット変換の変換式が持つ ID についても取得している必要があります。 この情報は、ターゲット変換のマニフェスト・ファイル の document プロパティーで指定される文書から取得できます。

また、現在のワークスペースにないターゲット変換の ID を指定することもできます。ただし、そのターゲット変換の実行によって 拡張を実行するには、先にターゲット変換を登録する必要があります。

変換の拡張を作成すると、ターゲット変換の振る舞いを強化する、規則、抽出、変換式、およびプロパティーを宣言できます。 これらの要素を宣言しても、それらが変換の拡張で処理される順序については指定されません。 宣言するそれぞれの規則、抽出、または変換式ごとに 、RuleDefinition 要素、ExtractorDefinition 要素、または TransformDefinition 要素が 、TransformationExtension 要素に追加されます。 ターゲット変換を実行する場合、コア変換機能は、要素について指定されたクラスのロードを試み、要素のインスタンスをターゲット変換のインスタンスに追加します。

変換の拡張の振る舞いを洗練させるプロパティーを定義することもできます。 定義するプロパティーごとに、Property 要素が TransformationExtension 要素に追加されます。コア変換機能は、変換の拡張のプロパティーとターゲット変換のプロパティーとを区別しません。 作成したプロパティーがターゲット変換にすでに存在している場合は、以下のイベントが発生します。

変換の拡張を作成する場合、複数の変換式を拡張することができます。 拡張変換 (ターゲット変換とも呼ばれる) は、ターゲット変換に存在する必要があります。 拡張対象の変換式を指定する場合、ExtendTransform 要素が、変換の拡張のプラグイン・マニフェスト・ファイルに追加されます。

変換の拡張の規則、抽出、および変換式を宣言すると、それらがターゲット変換式内で実行される順序を指定できます。 拡張可能な変換式には要素のリストが含まれています。このリストは、ゼロを起点とした索引です。 このリストで、変換エンジンが変換式の要素を実行する順序が指定されます。 要素をターゲット変換式に追加する場合、その要素をターゲット変換式の既存要素のどの位置に挿入するかを指示できます。その際、以下のようにして、 索引値を指定するか、新規要素の後で実行する要素を指示します。

索引値を指定するには、以下のようにします。

索引値を指定しないと、要素はターゲット変換式の最後に挿入されます。

例えば、変換を拡張し、変換が特定のモデル要素 (ステレオタイプ・クラスなど) を処理する方法を指定する、ExtensionRule と呼ばれる規則を宣言することができます。 この規則を、ソース・モデルのクラス要素を変換する特定のターゲット変換式に追加できます。 この例では、ターゲット変換式が以下の要素を含んでいると仮定します。 ExtensionRule 規則 を ExtractorB の後で実行する必要があると指定するには、索引値 2 を指定します。
また、新規要素の次の順番で実行される要素の ID を指定することでも、要素の順序を指定できます。 以下のようなケースで、この方法を使用する場合があります。

変換の拡張で要素を定義し、拡張対象の変換式を指定して、要素をターゲット変換式に追加すると、変換の拡張のプラグインをコンパイルして、ランタイム・ワークベンチでそれをテストできます。 変換の拡張の作成における開発フェーズおよびテスト・フェーズの間、個々の TransformationExtension 要素を使用可能にしたり使用不可にしたりすることができます。 変換の拡張を含むプラグインをデプロイした後、必ず各 TransformationExtension 要素を 使用可能にしてください。

変換の拡張を実行するには、ターゲット変換を実行する必要があります。 ターゲット変換のインスタンスが必要な場合、変換サービスは、関連するすべての拡張を ターゲット変換のそのインスタンスに取り込みます。

複数の変換の拡張が同じ変換式を拡張する場合、および、 変換式の要素の索引値が競合するかまたは存在しない場合、要素が実行される順序 は、Eclipse が開始時に実行するプラグイン・マニフェスト・ファイルの解析 によって決定されます。


フィードバック