<< 目次を表示 >> ページ位置: Enterprise Architectの拡張 > ソースコード生成のカスタマイズ > コード生成テンプレートフレームワーク > コード生成テンプレートの文法 > マクロ > テンプレート置換マクロ |
テンプレート置換マクロはベーステンプレートで説明されているテンプレートと同じ名前です。これらのマクロは、指定されたテンプレートを実行して、結果を挿入します。列挙型の項目は、listマクロを利用して呼び出します。
(列挙型の項目とは、クラスに対する属性・操作や操作に対するパラメータなど、親の項目に対して子の項目が複数存在するものです。例えば、1つのクラスに対して属性や操作は複数存在します。)
用法:
%<TemplateName>%
%list="<TemplateName>"%
listマクロについては「制御マクロ」のページをご覧下さい。
注意: |
コード生成テンプレートエディタの左側のテンプレート名のリストにはスペースが含まれますが、テンプレート置換マクロを呼び出す場合は、スペースを取り除いた名前を利用してください。 (例)Class Body→%ClassBody%) |
テンプレートが別のテンプレートから参照されている場合に、現在の対象要素に関するソースコードを生成します。このときに、「ステレオタイプ指定のテンプレート」が定義されている場合には、利用されるテンプレートは対象要素のステレオタイプに応じて決定されます。
テンプレートは階層構造を形成しています。テンプレートの階層構造を変えないように注意する必要があります。例えば、属性や操作のテンプレート内で %ClassInherits% のマクロを使うことは意味がありません。また、操作や属性のテンプレートはClassBodyのテンプレートから呼ばれることを想定して設計されています。これらの階層構造は以下の例をご覧ください。
以下、Enterprise Architectで既定で定義されているテンプレートの構造とその分類名・意味(既定での使われ方)・既定のテンプレートの名前です。名前にImplが付いているテンプレートは、C++言語のようにヘッダとソースが分離している場合に利用されます。Javaなどでは使われていません。(下記ではImplのテンプレートは省略しています。)
最初に呼ばれるテンプレートです。
File
他のファイルを読み込む場合(C++なら#include)に利用します。
Import, Import Section
名前空間を定義するテンプレートです。
Namespace, Namespace Declaration, Namespace Body
それぞれのクラスの本体を定義するテンプレートです。
Class, Class Notes, Class Body, Class Declaration, Class Inherits, ClassBase, ClassInterface, ClassParameter
クラスの属性を定義します。
Attribute, Attribute Notes, Attribute Declaration
関連や集約などで他の要素と関係がある要素を属性として定義します。
Linked Attribute, Linked Attribute Notes, Linked Attribute Declaration
クラスの操作を定義します。
Operation, Operation Notes, Operation Declaration, Operation Body
操作のパラメータを定義します。
Parameter
内部クラスを出力する位置を指定します。このテンプレートはカスタマイズできません。(内部クラスに対して、上記クラス(Class)のテンプレートが呼ばれます)
クラスに定義された親クラスの情報から、内容を出力します。汎化の関係がある場合にはLinked Class Baseが、直接定義された場合(「要素の継承とインターフェースの実装」ダイアログで指定された場合)にはClass Baseが呼ばれます。
クラスに直接定義された(接続を利用せず定義された)インターフェースクラスの情報から、内容を出力します。2つのテンプレートの呼ばれる条件は、「基本クラス」の場合と同じです。
クラスのプロパティに定義されたパラメタライズド(テンプレート)クラスの情報から、内容を出力します。
要素に関係する接続の情報から、内容を出力します。このテンプレートは「カスタムテンプレート」として追加する場合に指定できます。