掲示板一覧   -   トピック一覧
   EA ソースコード生成・コード生成テンプレート
     アクティビティ図からのソースコード生成におけるif文の順序


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
sugimoto
投稿日時: 2012-2-24 15:34
EA Administrator
投稿: 1971

アクティビティ図からのソースコード生成におけるif文の順序

サポートに寄せられたご質問の要約です。

○ご質問

1) プロフェッショナル版で作成したアクティビティ図に対して、
 システムエンジニア版でif文の条件を追加した場合、
 追加した条件が優先されてしまうようなことがありますでしょうか?

(例)
・プロフェッショナル版で作成

if(a == b)
{
・・・;
}
else
{
・・・;
}

・システムエンジニア版で条件( else if(b == C) )を追加したい場合

if(b == C)
{
・・・;
}
else if(a == b)
{
・・・;
}
else
{
・・・;
}

2) if文の処理後に更にif文を追加したい場合の
 アクティビティ図への記述方法が分かりません。
 現状は2つ目以降のif文が認識されず、ソースコードに抽出されません。
 構成要素としてはデシジョンとコントロールフローを使用して
 立て続けにif文が表示したいと考えています。
(例)

if(a == b)
{
}
if(b == C)
{
}

○回答

1) 基本的には、モデルを同じ形式で保存していますので、
 異なるエディションによって記述したモデルで生成される順が
 異なってしまうということはありません。

 現状は、後から保存されたコントロールフローの条件が
 先に出力されるようになっています。
 ただ、通常はif文の条件は排他になりますので、順序は気にされなくて
 よいかと思います。


2) 現状を確認しましたが、アクティビティ図自体で分岐が連続した場合は、
 意味合い的にif文の中にif文が入れ子になる状態になり、if文を並列(連続)
 した表現をすることができず、このためEAでもif文の並列出力は行って
 いない状況です。

 ただ、EAのコード生成ルールはカスタマイズすることができますので、
 if文を同列に生成することは実現できる可能性はあります。

 コード生成ルールは、メインメニューの「設定」→「コード生成ルールの
 テンプレート」で定義されています。この中のルールをカスタマイズすることで、
 生成するソースコードの内容を変えることができます。

 ただ、今回のようなカスタマイズをされた実績がないことと、テンプレートを
 カスタマイズするための文法等の知識が必要になりますので容易ではありません。

 コード生成テンプレートのカスタマイズ方法はセミナー等で紹介していますが、
 振る舞い図(メソッドの中身)のカスタマイズの内容は含まれておらず、
 カスタマイズする際は、お客様ご自身でヘルプでお調べいただく必要があります。

 セミナーは以下が該当します。
 「Enterprise Architect ソースコード生成ルール カスタマイズ 実践セミナー」
 https://www.sparxsystems.jp/seminar/EACodeGenerate.htm
 (本セミナーは、クラス図からのコード生成ルールをカスタマイズする内容になりますが、
 振る舞い図の生成ルールをカスタマイズする際にも必要な知識になります。)
taku_m
投稿日時: 2012-11-6 14:31
EA Newbie
投稿: 3

Re: アクティビティ図からのソースコード生成におけるif文の順序

だいぶ前の投稿で申し訳ないですが・・・


2)の件で、

[開始]⇒[デシジョン]⇒[アクション]⇒[マージ]
    ⇒[デシジョン]⇒[アクション]⇒[マージ]⇒[終了]

という形で繋ぐと、希望通り生成できると思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ