掲示板一覧   -   トピック一覧
   EA API
     アドインとEAの機能の連動


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

アドインとEAの機能の連動

○ご質問

ソースコード生成時にアドインを実行(またはアドイン実行時に
ソースコード生成を実行)したいと考えています。

クラス図からソースコードを生成する際に、コーディング規約の命名規則
に従ってクラス名や属性・操作名を改名したいのですが、コード生成テン
プレートでクラスや属性の名前を変更した場合、コード側の変更をモデル
にモデル同期する際に、EAでうまく処理できません。

(例)
 (モデル側)<<enum>>Status
 (コード側)<<enum>>en_Status
 →同期時にコード側の名前の属性がモデルに存在しないため、
  新たに追加されてしまいます。クラス名の場合は、割り当て
  ウィンドウが開きますが、これを同期の度に毎回開くため、
  数が多くなると、設定に手間がかかる上、間違いを犯す可能性が
  出てきてしまいます。

そこで、出力用として命名規則に則したモデルを出力し、そのモデルを
中間モデルとしてコード生成、および同期を行おうと考えました。

[出力時]
 モデル→(改名アドイン)→出力用モデル→(コード生成)→コード

[同期時]
 モデル←(アドインで比較し、変更を反映)←出力用モデル←(同期)←コード

この時の操作を1回で行いたいため、コード生成/同期のイベントを拾うか、
アドインからコード生成を実行するか、どちらかを実現したいと考えています。



○回答

EAではMDA変換機能を備えております。
その機能を利用しますと、モデルを変換することが可能です。

そこで、出力時の、
「モデル→(改名アドイン)→出力用モデル」
この部分はMDA変換機能を利用することが可能です。
この機能詳細はヘルプの「MDAスタイルの変換」をご覧ください。

「出力用モデル→(コード生成)→コード」
この部分は通常のソースコード生成機能(またはアドインによる
ソースコード生成(Projectグループのソースコード生成に関する
APIを利用))をご利用いただければよいかと思います。

現状、MDA変換機能の実行が終了したというイベントはアドイン
メソッドで取得できないことと、アドインからMDA変換機能を
実行できないことから、出力時において上記のような対応を
した場合は、操作としては2段階になります。


同期時につきましては、
「出力用モデル←(同期)←コード」
この部分のソースコード読み込み(同期)は、アドインでも実行
することが可能です。APIのProjectグループのSynchronizeClass()
やImportDirectory()、ImportFile()などがソースコード読み込み
実行に該当します。

「モデル←(アドインで比較し、変更を反映)←出力用モデル」
同期の前半の処理の後、同アドインにおいて、こちらの処理を行う
ことによって、1回のアドイン実行でソースコードの情報を元の
モデルに反映することが可能かと思います。


出力時において操作を1回でできるような対応案がなく、
申し訳ございません。

MDA変換機能などがご参考になりましたら、幸いです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ