掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     ソースコードの生成での別名の利用


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2007-7-24 17:48
EA Administrator
投稿: 1895

ソースコードの生成での別名の利用

○ご質問

クラスの設計初期は名称等を日本語で記述し、設計を詳細化する過程で
クラス名や属性、操作それぞれの別名に英語表記をしています。

ソースコードの生成を行うと、クラス名などは日本語のまま生成されてしまいます。

DDLの生成にあるような「別名を利用する」オプションは、
ソースコード生成にはないのでしょうか?


○回答

ソースコード生成では別名を利用するというオプションはありませんが、
以下のどちらかの方法で、別名でソースコード生成することは可能です。


1. 名前別名入れ替えアドインを利用する

弊社提供アドインの1つである「名前別名入れ替えアドイン」を利用し、
パッケージから「アドイン」→「名前別名入れ替え」を選択すると、
そのパッケージ内の要素について、名前と別名が入れ替わります。
https://www.sparxsystems.jp/products/EA/tech/Addins.htm#ExchangeName

この状態で、ソースコードを生成すると、ご希望の結果が得られます。

名前と別名を元に戻したい場合は、再度「名前別名入れ替えアドイン」を
実行してください。


2. コード生成テンプレートを編集する

コード生成テンプレートにて、クラス名や属性・操作の名前を出力して
いる箇所を別名に変えることで、モデルの情報は変更することなく、
ソースコードは別名で出力することができるようになります。

例えば、クラス名であれば、classNameの箇所をclassAliasに変更する
ことになります。この情報はヘルプの「フィールド置換マクロ」に記載
があります。
未登録ゲスト
投稿日時: 2008-3-28 21:40

Re: ソースコードの生成での別名の利用

2.の方法でソースコードの生成をしようとしています。
テンプレートを変更してクラス名や属性は別名に変更できたのですが、属性の型が別名に変更できず、試行錯誤しております。

フィールド置換マクロを眺めていても使えそうなマクロ名がみつかりません。
何かいい方法はありますでしょうか?
sugimoto
投稿日時: 2008-3-31 9:59
EA Administrator
投稿: 1895

Re: ソースコードの生成での別名の利用

引用:

2.の方法でソースコードの生成をしようとしています。
テンプレートを変更してクラス名や属性は別名に変更できたのですが、属性の型が別名に変更できず、試行錯誤しております。

フィールド置換マクロを眺めていても使えそうなマクロ名がみつかりません。
何かいい方法はありますでしょうか?


「属性の型」につきましては、モデル上でも別名を付けることができず、
そのため、フィールド置換マクロにも該当するマクロは存在しません。

こちらは、ご了承ください。

弊社回答がご質問の意図に反している場合や、
何かご不明点などありましたら、ご連絡ください。

今後ともよろしくお願いします。
sugimoto
投稿日時: 2008-3-31 10:19
EA Administrator
投稿: 1895

Re: ソースコードの生成での別名の利用

再度、回答させていただきます。

こちらは「属性の型」にクラスを設定した場合に、
そのクラスの別名が表示されないというご質問でしょうか?

この場合は、現在のフィールド置換マクロでは、対応できません。
機能マクロの1つであるEXEC_ADD_INにて、属性の型に使用されている
クラスの別名を取得するという処理を行う必要がございます。

ご検討のほど、よろしくお願いいたします。

何かご不明点などありましたら、ご連絡ください。
未登録ゲスト
投稿日時: 2008-3-31 10:31

Re: ソースコードの生成での別名の利用

引用:

「属性の型」につきましては、モデル上でも別名を付けることができず、
そのため、フィールド置換マクロにも該当するマクロは存在しません。


たとえば、

クラス1 // クラス
-int 属性1 // クラス1のメンバー
-int 属性2 // クラス1のメンバー

というクラスを作って、これに別名"class1"をつける。

次に、

クラス2 // クラス
-クラス1 属性11 // クラス2のメンバー
-int 属性12 // クラス2のメンバー

というクラスを作って、これに別名"class2"をつける。

ここで、クラス2のソースコードを生成するときに「-クラス1 属性11」の部分も別名に変換したいと思っているのですが。
クラス1を「属性の型」という意味で質問をしていました。
これでも無理でしょうか。

よろしくお願いします。
sugimoto
投稿日時: 2008-3-31 12:04
EA Administrator
投稿: 1895

Re: ソースコードの生成での別名の利用

ご質問について、詳細な情報ありがとうございます。

追加の回答に記載させていただきましたように、ご連絡いただいたような
ケースでは、フィールド置換マクロにて、別名を表示することが、
現状はできません。

機能マクロEXEC_ADD_INを利用する必要がございます。

属性の分類子に別名がある場合に、その情報を返却するアドインを作成しておき、
このEXEC_ADD_INにてそのアドインを呼ぶという流れになります。

以下は、アドイン、およびコード生成テンプレートの対応例になります。

[アドイン例]
public string GetAttributeTypeAlias(EA.Repository repository, object args)
{
  /// 引数の情報取得
  object[] param = (object[])args;
  string attGUID = (string)param.GetValue(0);

  /// 属性の情報を取得
  EA.Attribute att = repository.GetAttributeByGuid(attGUID);

  /// 属性に分類子がある場合、その別名を返却
  if (att.ClassifierID != 0)
  {
    EA.Element elm = repository.GetElementByID(att.ClassifierID);
    if (elm.Alias != "")
    {
      return elm.Alias;
    }
    else
    {
      return "";
    }
  }
  return "";
}

[コード生成テンプレート例:Attribute Declaration]
$result = %EXEC_ADD_IN("getAlias","GetAttributeTypeAlias",attGUID)%
%if $result != ""%
$result
%else%
%attType=="" ? "int" : value%
%endIf%


お手数をお掛けしておりますが、
上記内容について、ご確認のほど、よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ