<< 目次を表示 >> ページ位置: Enterprise Architectの拡張 > ソースコード生成のカスタマイズ > コード生成テンプレートの概要 |
ソースコードの生成とMDA変換のテンプレートでは、モデル要素に対して、どのようにソースコードを生成するか(あるいは変換するか)を定義します。Enterprise Architectが対応するそれぞれの言語ごとに数多くの既定のテンプレートが定義されています。これらのテンプレートをそのまま利用することもできますし、必要に応じてカスタマイズし、独自の処理を追加できます。また、独自のプログラム言語のテンプレートを作成できます。テンプレートを編集する場合には、コード生成テンプレートエディタを利用します。
既定のテンプレートは、それぞれ処理をされる順番を考慮して並べられています。テンプレート間には別のテンプレートの呼び出しが含まれますが、この呼び出しをカスタマイズして独自の処理を追加できます。Fileテンプレートは処理を実施する最初のテンプレートです。FileテンプレートからはNamespaceテンプレートやClassテンプレートが呼ばれ、さらにAttirbuteやOperationのテンプレートが呼ばれます。
コード生成テンプレートと同じエディタ・文法で、モデル変換テンプレートも利用できます。
利用手順:
リボン |
|
キーボード |
|
項目 |
説明 |
概要 |
コード生成テンプレートを利用することで、Enterprise Architectで利用できるソースコード言語について、出力内容を変更することができます。 |
テンプレートの処理の開始点 |
ソースコードの生成の際には、Fileテンプレートが最初に解釈されるテンプレートになります。 テンプレートからは別のテンプレートを呼び出せます。呼び出すテンプレートとして、既定のテンプレートだけでなく、独自に追加したテンプレートを呼び出せます。 既定のテンプレートは、階層的に構成されています。例えば、以下のような関係があります。
Fileテンプレートからはクラスに関連するテンプレートが呼ばれ、それらのテンプレートから、属性や操作のテンプレートが呼ばれます。 |
テンプレートの呼び出し |
それぞれのテンプレートからは、他のテンプレートを %TemplateName% の形で呼び出せます。テンプレート名の前後にあるパーセント (%) の記号は、マクロであることを示しています。 また、別の呼び出し型として、以下のようなリストマクロを利用する場合もあります。
%list="TemplateName" @separator="\n" @indent=" "%
%listのマクロは対象の要素が保持する情報について、それぞれを対象に呼び出す場合に利用します。例えば、クラス要素が持つ属性や操作の処理を実行する場合に利用します。次の例は、実際に利用されている内容の一つです。
%list="ClassBody" @separator="\n" @indent=" "%
コード生成や変換が実行されると、テンプレート内のそれぞれのマクロの内容は出力される文字列になります。例えばC++の場合には、以下のような出力になります。
/** * This is an example class note generated using code templates * @author Sparx Systems */ class ClassA: public ClassB { ... } |
コード生成テンプレートの実行 |
テンプレートへの参照の結果として得られる内容は、別のテンプレートの内容を処理した結果となります。 それぞれのテンプレートは、特定の要素と対になって利用されることを前提にしています。例えば、ClassNotesのテンプレートは、UMLのクラス要素に対して実行されます。 テンプレートの実行の対象となっている要素について、ステレオタイプが定義されている場合には、そのステレオタイプだけに適用される個別のテンプレートがあるかどうか確認します。もし見つかった場合には、そのテンプレートが実行されます。そうでない場合には、標準のテンプレートが実行されます。 テンプレートの処理は順番に行われます。1行ずつ上から順番に処理し、例えばフィールド置換マクロがあれば、実際のモデル内の値に置換します。 |
プロジェクト間でのテンプレートの転送 |
コード生成テンプレートあるいはモデル変換のテンプレートを編集した場合や新規に作成した場合には、リファレンス情報として変更内容を他のプロジェクトにコピーし、利用できます。 (参考:テンプレートの出力、テンプレートの読み込み) |
参照: