デザイン・パターンとは、繰り返し発生するソフトウェア開発上の問題に対する標準的なソリューションを記述したものであり、多くの状況に応用可能なソリューションが記されています。 デザイン・パターンを使用してデザインを再利用することにより、ソリューションの品質および信頼性 が高まります。
パターンの仕様はパターンが解決する問題、提案されているソリューションが適切とされる状況を記述して、ソリューションの抽象記述を提供します。この抽象化を特定の問題に適用するプロセスをパターン・アプリケーションと呼びます。パターン応用を支援するツールを、パターン実装と呼びます。 パターン実装を使用して、パターン仕様に記された抽象に関連するパターン応用を記述できます。 パターン実装は、ソリューションを構成するファイル、フォルダー、およびプロジェクトなどの成果物を生成するために使用できます。 デザイン・パターンによっては、生成される成果物に追加のロジックを指定できる場合もあります。
JET および JET 変換オーサリング機能では、パターン実装がサポートされています。 パターン実装では、入力を構造化モデルで記述し、生成されるパターン・ソリューションはテキスト・ファイルで構成されます。 これらのパターン実装は、モデルからテキストへの変換とも呼ばれます。
JET の「モデルからテキストへの変換」では、 Extensible Markup Language (XML) 文書や Eclipse モデリング・フレームワーク (EMF) モデルの入力を受け入れ、 Eclipse ファイル、フォルダー、およびプロジェクトの出力を生成します。 JET 変換で生成される入出力のタイプは、JET Software Development Kit (SDK) を使用して拡張できます。
JET 変換を作成するには、 変換オーサリング・コンポーネントをインストールする必要があります。
JET 変換オーサリング機能を使用してモデルからテキストへの変換を作成する手順の 概要は、次のとおりです。
変換入力スキーマと JET アクションは変換モデルと総称され、エディター領域に表示されます。 大部分の JET 変換は、必要に応じて、ステップ 2、3、および 4 を繰り返して作成します。
変換入力スキーマは、変換の入力構造を記述するものです。 入力スキーマは、要素タイプおよび属性の階層として表示されます。
JET では、非常に複雑な入力スキーマを持つモデルを読み取ることができますが、 オーサリング・プロセスを容易にするために、JET 変換のオーサリング機能は、基本的なスキーマの定義に制限されています。
JET 変換オーサリング機能で基数を指定することはできません。 要素全体の包含は、ゼロから多です。 例えば、入力スキーマで、本に章があることは指定できますが、本に含まれている章の数を指定することはできません。
例えば、JET 変換を呼び出す、UML から JET への変換入力マッピングを作成できます。 このマッピングにより、基本的な入力スキーマを使用した JET 変換を開発できるようになりますが、 変換のユーザーは、統一モデリング言語 (UML) で入力を記述できるようになります。
注: マッピング内のソース・モデルとして UML メタモデルを指定することはできません。
入力スキーマにデザイン・パターンの抽象を取り込む際には、 このスキーマからリファレンス・ソリューション (見本とも呼ぶ) の成果物を派生させる方法を決定しなければなりません。 変換アクション (JET アクションとも呼ぶ) は、プロジェクト、フォルダー、およびファイルを作成します。 JET 変換の実行時には、変換入力にそのタイプの要素が見つかるたびに、JET アクションが呼び出されます。
各 JET アクションには、アクションの動作を制御するアクション・パラメーターがあります。 これらのパラメーターは、JET アクションを作成する見本成果物を再作成する値に設定されます。 通常は、変換入力から取り出された値を組み込むように、これらのパラメーター値をカスタマイズします。
JET ファイル・アクションは、JET テンプレートを評価することによりファイル・コンテンツを作成します。 プロジェクトの更新時にこれらのテンプレートが存在しない場合は、その時点で作成されます。 テンプレートのイニシャル・コンテンツは、対応するファイル・アクションの作成時に指定した見本ファイルのコンテンツと同じです。 生成されたテンプレートを変更して、変換入力用にカスタマイズされたコンテンツを生成できます。
変換モデル内の見本成果物について検証を行う際に、変換によって特定のタイプの成果物が生成されない場合は、エディター領域から成果物を削除することができます。削除しても、物理ファイル、物理フォルダー、または物理プロジェクトは影響を受けません。 また、成果物を無視することもできます。成果物を無視すると、エディター領域に成果物が残るため、無視アクションを元に戻したり、成果物を変換入力スキーマと関連付けたりすることができます。
変換作成時に生成された JET のアクションおよびテンプレートは、見本成果物のコピーです。 通常は、アクション・パラメーターおよびテンプレートのコンテンツを変更して、変換入力に値を指定します。
JET アクションのパラメーター値を編集する際には、選択したテキストを、変換入力への参照に置き換えることができます。
変換入力の参照は、XML Path (XPath) 式の形式になります。 World Wide Web Consortium の標準である XPath は XML 文書用に設計されていますが、 JET では、この標準を修正して、複数の入力モデル・タイプをサポートしています。
アクション・パラメーター値に組み込む XPath 式は、中括弧 ({ }) で囲みます。 変数をモデル参照に置換すると、これらの式は、{$variable/@attribute} の形式で表示されます。 ここで、variable は入力モデル要素の名前、attribute は要素内の属性の名前です。 それぞれの入力モデル要素に、関連付けられた XPath 変数名が付けられています。 デフォルトのオーサリング環境では、変数名と要素名の同期が保たれます。
オーサリング機能では基本的な XPath 式が作成されますが、JET では、XPath 1.0 仕様の総合的な実装が提供されます。 JET には、変換入力からの値を取り扱うことのできる XPath 関数一式が含まれています。 例えば、XPath 式 {lower-case($person/@name)} は、入力参照 $person/@name を小文字に変換します。
XPath 関数は、XPath 式の使用が許可されているすべて場所で使用できます。
JET マーカーについての詳細情報を「問題」ビューで確認してください。
派生属性を作成すると、繰り返し計算しなくても済むようになります。 派生属性とは、変換入力として指定された属性ではなく、計算によって生成された入力スキーマ要素の属性のことです。 この計算では、入力スキーマの他の要素や属性を参照できます。 派生属性は、変換マッピング・モデルの編集時や、変換モデル参照を挿入する任意のタイミングで、直接作成できます。
変換入力のトラバーサル時、派生属性の計算、および入力スキーマ要素に関連付けられた JET アクション・パラメーターの計算では、 現行要素を参照する XPath 変数、および祖先要素に属する各変数を参照できます。
変換入力への参照に置き換えるテンプレート内テキストを特定しやすくするために、 指定したテキスト置換の検証が行われます。 テキスト・ストリングを変換入力への特定の参照に置き換えるたびに、このテキストが見本テキストとして変換入力モデル内に保管されます。 このテキストは、表示、追加、または除去できます。 このテキストは、JET 置換マーカーの作成にも使用されます。 このマーカーは、変換によって生成される JET テンプレート内のテキストに類似したテキストを強調表示します。 JET 置換マーカーは、Eclipse クイック・フィックス・メカニズムにより解決できます。 この機能を使用して、テキストを適切な JET タグに置き換えたり、 テキストへの変更が不要であるという理由でマーカーを無視したりできます。
UML モデルを、JET 変換の入力として使用できる JET 入力モデルに変換する、UML インターフェースおよびプロジェクト・インフラストラクチャーを作成できます。 この機能を使用すると、JET 変換への入力として機能する非グラフィカル・モデルをグラフィカルに表すことができます。 例えば、このインフラストラクチャーを作成して、JET をベースとする Java Bean パターンなどの非グラフィカル・モデル 用の UML インターフェースを作成することができます。
モデルからモデルへのマッピング変換では、UML モデルを JET 入力モデルに変換します。
このプロジェクトの UML プロファイルでは、モデルからモデルへの変換への入力として機能する、UML モデルのステレオタイプおよび拡張を定義します。 生成された UML プロファイル・プロジェクトは、UML プロファイル・ツールの機能と互換性のあるものになります。
このプロジェクトには、生成された入力モデル用の Java アプリケーション・プログラミング・インターフェース (API) を含まれます。
このフィーチャー・プロジェクトは、生成済み JET 入力モデルを変換する、モデルからテキストへの JET 変換と、 生成された JET 入力モデル用の Java API を含む EMF プロジェクトを参照します。 Eclipse Deployable Feature のエクスポート機能を使用すると、このプロジェクトをエクスポートできます。