掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     シーケンス図のエクスポートでメッセージが消える


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
maeda
投稿日時: 2008-12-12 16:19
EA Newbie
投稿: 6

シーケンス図のエクスポートでメッセージが消える

シーケンス図のエクスポートに関する質問です。

FAQに「シーケンス図で利用されているすべてのオブジェクトが含まれているような範囲で出力する必要」があると書かれていますが、それが不可能な状況でした。エクスポート先のモデルに参照するオブジェクトが含まれている状態でエクスポートした所、オブジェクトは無事に認識できて消えませんでしたが、一部のメッセージが消えてしまいました。消えたメッセージは、操作をプルダウンメニューより選んで追加したものでした。

結局オブジェクトのインスタンス化で対応しましたが、あるオブジェクトが複数のシーケンス図より参照されているケースが多かったため、同じオブジェクトを参照するインスタンスが多数できてしまいました。どうしても困るわけではありませんが、できるならば整理したいです。同じオブジェクトを参照する複数のインスタンスを一つにまとめるか、もしくは、インスタンスへ変換する際にパッケージ単位で変換、つまり、「パッケージA以下に含まれるクラスBへの参照を、クラスBのインスタンスCへの参照に変更する」ということはできないでしょうか。

そもそも、インスタンス化しないでもエクスポートできないのでしょうか。オブジェクトの認識ができているのに、メッセージが消えてしまうのはおかしい気がします。
tkouno
投稿日時: 2008-12-12 16:47
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

頂きましたご質問に回答させていただきます。

内容が以下の2つに大きく分かれると思いますが
まずは前者について確認させて下さい。
(前者の問題が解決すれば、後者の問題の優先度は
下がるのではないかと考えました。)

・メッセージの一部の情報が消える問題
・「インスタンス化」するとインスタンスが図の数だけ
 作成されてしまうので、どうにかしたい


メッセージの一部が消える問題について、
まずこちらの認識があっているか、ご確認ください。

・シーケンス図をXMIファイルとして出力し、別のEAPファイルに
 読み込みたい

・シーケンス図が含まれるパッケージと、シーケンス図で
 利用されているクラスが含まれるパッケージは別

・シーケンス図には、クラスを「リンクとして」配置している
(プロジェクトブラウザからクラスをシーケンス図にドロップする際に
Ctrlキーを押しながらドロップすると、「要素の貼り付け」ダイアログが
表示されます。このダイアログで「リンクとして」を選択した場合と
同じ結果になっている状況を指しています。)

・対象のクラスは、読み込み先のEAPファイルにも含まれている

・シーケンス図のメッセージで、クラスの操作を割り当てたものは
 メッセージの内容が空になっている

・シーケンス図のメッセージで、メッセージ名を直接入力したものは
 正しく表示されている



この状況で、クラスの操作を割り当てたメッセージが消えるとすれば
エクスポート元のクラスの操作と、エクスポート先のクラスの操作が
異なる可能性があります。

この「異なる」とは、見た目の判断ではなく、Enterprise Architectの
内部でそれぞれの要素や操作などを区別するための
一意のID(GUID)が異なる場合を指します。

つまり、以下のような手順では、操作は異なるものと判断されます。

1. EAPファイルにクラスを作成
2. EAPファイルをコピー
3. コピー元とコピー先のEAPファイルで、それぞれ同じ内容の
操作を追加

この3で作成した操作は、内容が同じだとしても、EAの内部で管理している
ID(GUID)は異なります。

シーケンス図のメッセージでクラスの操作を割り当てた場合には、
操作の名前ではなく、GUIDで管理しています。そのため、エクスポート先の
EAPファイルで同じGUIDを持つ操作がない場合には、メッセージの内容は
表示されません。


逆に、以下の手順では、操作のGUIDは一致します。

1. EAPファイルにクラスを作成
3. 作成したクラスに操作を追加
3. EAPファイルをコピー



お手数をおかけし申し訳ございませんが、
上記の内容をご確認のうえ、「同じクラス・同じ操作が
エクスポート先のEAPファイルに含まれているかどうか」を
ご検討下さい。
(ただし、操作のGUIDはEAの画面からは確認できません。
クラスのGUIDはプロパティサブウインドウで確認できます。)

maeda
投稿日時: 2008-12-15 10:55
EA Newbie
投稿: 6

Re: シーケンス図のエクスポートでメッセージが消える

ご連絡ありがとうございます。
はい、「メッセージの一部の情報が消える問題」さえ解決すればOKです。

--------------
・シーケンス図をXMIファイルとして出力し、別のEAPファイルに
 読み込みたい
・シーケンス図が含まれるパッケージと、シーケンス図で
 利用されているクラスが含まれるパッケージは別
・シーケンス図には、クラスを「リンクとして」配置している
・対象のクラスは、読み込み先のEAPファイルにも含まれている
--------------
はい、その通りです。

--------------
・シーケンス図のメッセージで、クラスの操作を割り当てたものは
 メッセージの内容が空になっている
・シーケンス図のメッセージで、メッセージ名を直接入力したものは正しく表示されている
--------------
もう一度よく確認したところ、パッケージに含まれるオブジェクトとの間のメッセージのみが残り、他パッケージのクラス間のメッセージは一様に消えてしまいました。メッセージ名を直接入力する/しないで変化はないようです。

以前、メッセージ名を直接入力したものは正しく表示され、クラスの操作を選択したものは消えるという現象を確認したように記憶しているので、今回よく確認しないままに質問してしまいました。少なくとも、バージョン7.1.834では確認できませんでした。申し訳ありません。


また、二つのEAPに定義されている操作が同じようで異なるのではないかというご指摘ですが、EAPをコピーした後でクラスを編集していないのでUUIDは同じです。
念のため、シーケンス図の含まれるEAPをコピーして、一方よりシーケンス図のパッケージを削除し、他方からインポートしてみましたが、メッセージは消えてしまいました。

よろしくお願いいたします。
tkouno
投稿日時: 2008-12-15 11:09
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

ご連絡ありがとうございました。

頂きました情報でご指摘の問題を把握し、また
再現することもできました。

結論から申し上げますと、この現象は
Enterprise Architectで意図された「正しい」現象です。

シーケンス図でメッセージを作成した場合、メッセージは
そのシーケンス図が持つ情報として保存されるのではなく、
要素間の情報として保持されます。

つまり、あるパッケージに含まれないクラス間のメッセージは、
そのクラスの情報として保持されますので、対象のパッケージを
出力しても、そのメッセージの情報は含まれません。

逆に、対象のクラスが含まれるパッケージを出力した場合には、
シーケンス図がパッケージに含まれない場合でも、メッセージの
情報はXMIファイルに出力されます。


Enterprise Architectでは、要素間の関係やメッセージなどは
すべて要素の情報として保持されます。つまり、図が情報を
保持しているわけではありません。

今回お試しのように、クラスを「リンクとして」配置する場合には
XMIファイルを出力する場合、必ずクラスの要素が含まれる形で
出力しなければなりません。


ここまでの動作はEnterprise Architectで意図したものですので
回避方法はありません。
ご理解いただけますと助かります。

(後ほど当初の投稿の2番目について回答します。)
tkouno
投稿日時: 2008-12-15 11:14
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

続いて、当初の投稿の2番目のご指摘(インスタンスの件)についての
回答となります。

現在のところは、下記ページで公開している
「ダイアグラム内要素置換アドイン(β版)」が
唯一の回答になりそうです。

https://www.sparxsystems.jp/products/EA/tech/Addins.htm#ReplaceElement

あるお客様からうまく動作しないというご指摘があり、その原因が
わからないため、現時点ではβ版という扱いです。

ご指摘のような一括置換の機能があると確かに便利そうですので
こちらは改善を検討します。

お手数をおかけし申し訳ございませんが、
今回問題となっている要素のうちの1組に対して、このアドインが
有効かどうかご確認ください。
(活用できそうであれば、アドインを強化して一括処理が
できるかどうか、やってみます。

お手数をおかけし申し訳ございませんが
ご確認のほどよろしくお願いします。
maeda
投稿日時: 2008-12-15 12:29
EA Newbie
投稿: 6

Re: シーケンス図のエクスポートでメッセージが消える

今回は動作がよくわからないままにシーケンス図を作成してしまったので、エクスポートするのに手間がかかりましたが、今後は前もって対策できるので、2番目の問題も回避することができると思います。

迅速に対応して下さり、ありがとうございました。
tkouno
投稿日時: 2008-12-15 12:43
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

ご確認ありがとうございました。
パッケージ構成で対応できそうであれば、そのほうが
良いと思います。

アドインの改善が必要であれば、ぜひアイデアをお寄せ下さい!
maeda
投稿日時: 2008-12-15 16:11
EA Newbie
投稿: 6

Re: シーケンス図のエクスポートでメッセージが消える

教えて頂いたアドイン"ReplaceElement"を試してみました。
残念ながら、私の環境でもうまく動作しませんでした。

簡単なテストとして、
まずシーケンスダイアグラムでライフラインObject1を作成し、続けてライフラインObject1を作成しようとすると、ReplaceElementが自動的に
「同名の要素が既に存在します・・・」
と聞いてくるので、すでに作成したObject1を選択すると、

「EA_OnNotifyContextItemModified: 抽出条件でデータ型が一致しません。」
というエラーが発生します。
tkouno
投稿日時: 2008-12-15 17:18
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

ご迷惑をおかけし申し訳ございません。

ご指摘の機能は、以前提供していた機能で
現在は無効になっているはずの機能です。

現在アップロードされているファイルに問題があると思われます。
申し訳ございません。

後ほど正しいファイルをアップロードします。

お手数をおかけし申し訳ございませんが
再度お試し下さい。
(正しいファイルをアップロード後ご連絡します。)

tkouno
投稿日時: 2008-12-15 17:35
EA Administrator
投稿: 4300

Re: シーケンス図のエクスポートでメッセージが消える

ご迷惑をおかけし申し訳ございませんでした。

最新のファイルをアップロードしました。
ファイルを解凍後、含まれているbatファイルを実行して下さい。
自動的にEnterprise Architectのインストールディレクトリに
DLLファイルをコピーし、登録します。

シーケンス図内で置換したい要素を右クリックしてアドインを呼び出すと
同じ分類子のオブジェクトなどが一覧に表示されますので
置換先の要素を選択して実行して下さい。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ