ターゲット変換の作成者以外のユーザーは、変換の拡張を作成できます。
変換を拡張するには、ターゲット変換 の extensible プロパティー および public プロパティーが 、true に設定されていることを確認する必要があります。 また、ターゲット変換の拡張ポイント情報および ID のほか、ターゲット変換の変換式が持つ ID についても取得している必要があります。 この情報は、ターゲット変換のマニフェスト・ファイル の document プロパティーで指定される文書から取得できます。
また、現在のワークスペースにないターゲット変換の ID を指定することもできます。ただし、そのターゲット変換の実行によって 拡張を実行するには、先にターゲット変換を登録する必要があります。
変換の拡張を作成すると、ターゲット変換の振る舞いを強化する、規則、抽出、変換式、およびプロパティーを宣言できます。 これらの要素を宣言しても、それらが変換の拡張で処理される順序については指定されません。 宣言するそれぞれの規則、抽出、または変換式ごとに 、RuleDefinition 要素、ExtractorDefinition 要素、または TransformDefinition 要素が 、TransformationExtension 要素に追加されます。 ターゲット変換を実行する場合、コア変換機能は、要素について指定されたクラスのロードを試み、要素のインスタンスをターゲット変換のインスタンスに追加します。
変換の拡張を作成する場合、複数の変換式を拡張することができます。 拡張変換 (ターゲット変換とも呼ばれる) は、ターゲット変換に存在する必要があります。 拡張対象の変換式を指定する場合、ExtendTransform 要素が、変換の拡張のプラグイン・マニフェスト・ファイルに追加されます。
変換の拡張の規則、抽出、および変換式を宣言すると、それらがターゲット変換式内で実行される順序を指定できます。 拡張可能な変換式には要素のリストが含まれています。このリストは、ゼロを起点とした索引です。 このリストで、変換エンジンが変換式の要素を実行する順序が指定されます。 要素をターゲット変換式に追加する場合、その要素をターゲット変換式の既存要素のどの位置に挿入するかを指示できます。その際、以下のようにして、 索引値を指定するか、新規要素の後で実行する要素を指示します。
索引値を指定しないと、要素はターゲット変換式の最後に挿入されます。
変換の拡張で要素を定義し、拡張対象の変換式を指定して、要素をターゲット変換式に追加すると、変換の拡張のプラグインをコンパイルして、ランタイム・ワークベンチでそれをテストできます。 変換の拡張の作成における開発フェーズおよびテスト・フェーズの間、個々の TransformationExtension 要素を使用可能にしたり使用不可にしたりすることができます。 変換の拡張を含むプラグインをデプロイした後、必ず各 TransformationExtension 要素を 使用可能にしてください。
変換の拡張を実行するには、ターゲット変換を実行する必要があります。 ターゲット変換のインスタンスが必要な場合、変換サービスは、関連するすべての拡張を ターゲット変換のそのインスタンスに取り込みます。
複数の変換の拡張が同じ変換式を拡張する場合、および、 変換式の要素の索引値が競合するかまたは存在しない場合、要素が実行される順序 は、Eclipse が開始時に実行するプラグイン・マニフェスト・ファイルの解析 によって決定されます。