掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     メソッド呼び出し情報のXMI格納場所についての質問


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2007-6-19 6:53

メソッド呼び出し情報のXMI格納場所についての質問

質問です。以下のシーケンスがあるとします。
-----------------------------------------------
Class1#aaa()メソッドからClass2#bbb()メソッドを呼び出す
-----------------------------------------------
この情報をXMIから取得する方法を教えてください。ちょっと眺めてみたのですがよく分かりませんでした。(connectorsタグから取れるのでしょうか?)
最終目的はCSVファイルでこんなファイルを作成したいと思ってます。
-----------------------------------------------
Class1.aaa(),Class2.bbb()
Class3.ccc(),Class2.bbb(),Class2.bbb2()
・・・
-----------------------------------------------
※最初に呼び出し元、次に呼び出される側


ちなみになぜこんなことをやりたいかというと、現在のプロジェクトで単純なメソッド呼び出しばかりを行うレイヤーがあって(例で書いたものそのまま)、そこのソースを自動生成してやりたいからです。
まぁ、自動生成といっても、velocityで作った雛形に上のCSVファイルを食わせる予定なので、擬似自動生成って感じです。

よろしくお願いします。
sugimoto
投稿日時: 2007-6-19 11:10
EA Administrator
投稿: 1895

Re: メソッド呼び出し情報のXMI格納場所についての質問

シーケンス図の情報からは、以下の1)の情報は取得可能ですが、
2)の情報は取得できません。

1)どのクラスから、どのクラスのメソッドを呼んでいるか?
2)どのクラスのメソッドから、どのクラスのメソッドを呼んでいるか?

シーケンス図の情報から、2)の情報を認識するとなると、シーケンス図
の情報を解析し、メソッドが呼ばれるごとに情報を蓄積し、上位の
メソッドと呼ばれるメソッドをリンクしていくということが必要になります。
ただ、シーケンス図の先頭につきましては、解析するにしましても、どの
メソッドが実行されたのかは認識することができません。



シーケンス図のXMI情報の主な内容として、以下の情報が格納されていますので、
解析を行う際はこれらの情報を使用することになると思います。

Message name:メッセージの名前
sender   :メッセージ送信元のオブジェクトのGUID
receiver  :メッセージ送信先のオブジェクトのGUID

GUIDにつきましては、EA内部のモデル情報(要素や操作など)は全て
このGUIDで管理されており、モデル内で一意の値を取ります。
この値でXMIを検索しますと該当するオブジェクトの情報を取得すること
ができます。


ご希望の情報について、容易に取得する方法がなく申し訳ございません。

解析についてご検討のほど、よろしくお願いいたします。
未登録ゲスト
投稿日時: 2007-6-19 14:15

Re: メソッド呼び出し情報のXMI格納場所についての質問

返答ありがとうございます。

現状では汎用的にシーケンスからソースを生成するのは難しそうですね。でも、呼び元クラスのメソッドが一つだけなら可能そうですね。(メソッド名固定でソースを生成する)
今回の構成では実行されるActionクラスのメソッド名が固定となっているので、呼び出すビジネス層のクラス名とメソッド名さえ取れれば解決できそうな気がしてきました。
また不明点があれば質問させて頂きたいと思いますのでよろしくお願いします。

ちなみに、シーケンス図以外でこの情報(呼び出し元メソッド)を保持することが可能なダイアグラムはありますでしょうか?

よろしくお願いします。
sugimoto
投稿日時: 2007-6-19 14:35
EA Administrator
投稿: 1895

Re: メソッド呼び出し情報のXMI格納場所についての質問

回答のご確認ありがとうございました。

引用:

ちなみに、シーケンス図以外でこの情報(呼び出し元メソッド)を保持することが可能なダイアグラムはありますでしょうか?


時間軸を考慮に入れるのであればシーケンス図をご利用いただくことになると
思いますが、メソッドの呼び出し元ということであれば、コミュニケーション図でも
情報を取得することができます。

そのほかご不明点などございましたら、ご連絡下さい。
未登録ゲスト
投稿日時: 2007-6-23 19:46

Re: メソッド呼び出し情報のXMI格納場所についての質問

「どのクラスのメソッドから、どのクラスのメソッドを呼んでいるか?」をEA APIを通して取得する方法を教えてください。言語はJavaです。

構成は以下です。
-----------------------------
bean1クラスのメソッド:
bb1()
service1クラスのメソッド:
ss1()
ss2()
-----------------------------

このクラスを利用して以下のコミュニケーション図を作成:
-----------------------------
Actor1→bean1 1:bb()
bean1→service1 1.1:ss1()
bean1→service1 1.2:ss2()
-----------------------------

上記の1.1、1.2に当る情報の取得方法を教えて頂けるでしょうか。
bean1,service1のElementの中身を全て見てみたのですが、見つかりませんでした。
※bb()からss1(),ss2()を呼び出している、という情報を取得するのが目的です。

よろしくお願いします。
sugimoto
投稿日時: 2007-6-25 10:38
EA Administrator
投稿: 1895

Re: メソッド呼び出し情報のXMI格納場所についての質問

コミュニケーション図のメッセージの情報はConnectorに格納されています。

ConnectorのTypeが"Collaboration"になっているものが、メッセージに該当します。
この場合、Connectorに関連する操作の情報は、ConnectorTagに格納されています。

ConnectorTagのValueに操作のGUIDが格納されていますので、
repository.GetMethodByGuid()にてMethodを取得することができ、
ss1()、ss2()の情報を取得できます。

なお、Connectorのソース側の要素IDは、Connector.ClientIDにより取得できます。
(ターゲット側は、Connector.SupplierIDになります。)

ご不明点などありましたら、ご連絡下さい。
sugimoto
投稿日時: 2007-6-25 10:46
EA Administrator
投稿: 1895

Re: メソッド呼び出し情報のXMI格納場所についての質問

補足です。

引用:

※bb()からss1(),ss2()を呼び出している、という情報を取得するのが目的です。


この点につきましては先日も回答しましたように、メソッド呼び出し元の
要素情報は取得できますが、その要素の中のどのメソッドかということに
つきましては、シーケンス図同様取得できませんので、ご了承下さい。
未登録ゲスト
投稿日時: 2007-6-26 0:52

Re: メソッド呼び出し情報のXMI格納場所についての質問

返答ありがとうございます。
もう一点だけお聞きしてもよろしいでしょうか?

コミュニケーション図に記載した、「1.1」、「1.2」という情報を取得したい(文字列として受け取りたい)のですが、この情報はどこから取れるのでしょうか?
先ほどの返信内容から考えると、ConnectorかConnectorTagに格納されているのではないかと思うのですが、それらしい値が見付かりませんでした。
見落としていたらすいません。

よろしくお願いします。
tkouno
投稿日時: 2007-6-26 8:49
EA Administrator
投稿: 3939

Re: メソッド呼び出し情報のXMI格納場所についての質問

ご質問の件は、MiscData(3)ではないかと思います。(データベースでのPDATA4です)

今ヘルプファイルを確認したところ、このMiscDataがヘルプファイルには記載されていないようです。修正します。

Element要素にもMiscData属性があり、内容は同じですので
説明はElement要素のほうをご覧ください。

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