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

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張(SDK) > コード生成テンプレートフレームワーク >

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

ソースコードの生成と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行ずつ上から順番に処理し、例えばフィールド置換マクロがあれば、実際のモデル内の値に置換します。

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

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

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

 

 

参照: