コード生成テンプレートの概要

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張 > ソースコード生成のカスタマイズ >

コード生成テンプレートの概要

ソースコードの生成とMDA変換のテンプレートでは、モデル要素に対して、どのようにソースコードを生成するか(あるいは変換するか)を定義します。Enterprise Architectが対応するそれぞれの言語ごとに数多くの既定のテンプレートが定義されています。これらのテンプレートをそのまま利用することもできますし、必要に応じてカスタマイズし、独自の処理を追加できます。また、独自のプログラム言語のテンプレートを作成できます。テンプレートを編集する場合には、コード生成テンプレートエディタを利用します。

 

既定のテンプレートは、それぞれ処理をされる順番を考慮して並べられています。テンプレート間には別のテンプレートの呼び出しが含まれますが、この呼び出しをカスタマイズして独自の処理を追加できます。Fileテンプレートは処理を実施する最初のテンプレートです。FileテンプレートからはNamespaceテンプレートやClassテンプレートが呼ばれ、さらにAttirbuteやOperationのテンプレートが呼ばれます。

 

コード生成テンプレートと同じエディタ・文法で、モデル変換テンプレートも利用できます。

 

 

利用手順:

リボン

  • コード > ソースコード > 設定 > コード生成テンプレート
  • モデル > パッケージ > 変換 > 変換テンプレートの編集

キーボード

  • Ctrl + Shift + P (コード生成テンプレート)
  • Ctrl + Alt + H (モデル変換テンプレート)

 

 

項目

説明

概要

コード生成テンプレートを利用することで、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行ずつ上から順番に処理し、例えばフィールド置換マクロがあれば、実際のモデル内の値に置換します。

プロジェクト間でのテンプレートの転送

コード生成テンプレートあるいはモデル変換のテンプレートを編集した場合や新規に作成した場合には、リファレンス情報として変更内容を他のプロジェクトにコピーし、利用できます。

(参考:テンプレートの出力テンプレートの読み込み)

 

 

参照: