ログイン
検索
メインメニュー
フォーラム一覧   -   トピック一覧
   astah*への改善アイデア
     API シーケンス図の読み込みについて
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 トピック
yamazaki
投稿日時: 2008-12-15 17:45
一人前
登録日: 2006-5-5
居住地:
投稿: 132
Re: API シーケンス図の読み込みについて
eikichiさん、こんばんは。
JUDE APIのご利用、どうもありがとうございます。

引用:

【気になった点】
シーケンス図から次の情報を取得することができない。
定義欄があるにも関わらず、取得できないのはなぜか。
1.ライフラインの「ベースクラス」に対するパッケージ
2.メッセージの「返り値変数」


シーケンス図の定義欄を取得したい場合は、次の方法をご利用ください。

ISequenceDiagram は INamedElementを継承しており、INamedElement の
getDefinition で ISequenceDiagram の定義を取得できます。

> 1.ライフラインの「ベースクラス」に対するパッケージ

ILifeLine の getBase() でベースクラスを取得できます。
ベースクラスはIElementを継承しており、IElement の getOwner で所属するパッケージを取得できます。

> 2.メッセージの「返り値変数」

残念ながら、メッセージの「返り値変数」を取得するAPIを提供していないため、
APIでメッセージの「返り値変数」を取得することはできません。
こちらはご要望としてお預かりしたいと思います。

シーケンス図の定義欄の位置を示す画像











ベースクラスのパッケージを取得するサンプルコードを
載せておきますので、どうぞお試しください。

import java.io.IOException;
import com.change_vision.jude.api.inf.exception.LicenseNotFoundException;
import com.change_vision.jude.api.inf.exception.NonCompatibleException;
import com.change_vision.jude.api.inf.exception.ProjectLockedException;
import com.change_vision.jude.api.inf.exception.ProjectNotFoundException;
import com.change_vision.jude.api.inf.model.IClass;
import com.change_vision.jude.api.inf.model.IDiagram;
import com.change_vision.jude.api.inf.model.IElement;
import com.change_vision.jude.api.inf.model.IInteraction;
import com.change_vision.jude.api.inf.model.ILifeline;
import com.change_vision.jude.api.inf.model.IMessage;
import com.change_vision.jude.api.inf.model.IModel;
import com.change_vision.jude.api.inf.model.INamedElement;
import com.change_vision.jude.api.inf.model.ISequenceDiagram;
import com.change_vision.jude.api.inf.project.ProjectAccessor;
import com.change_vision.jude.api.inf.project.ProjectAccessorFactory;


public class APIForReadingSequenceDiagramSample {

public static void main(String[] args) {
try {
ProjectAccessor prjAccessor = ProjectAccessorFactory.getProjectAccessor();
prjAccessor.open("C:/sequenceDiagramSample.jude", true, false, true);

IModel project = prjAccessor.getProject();
IDiagram[] iDiagrams = project.getDiagrams();
for (int i = 0; i < iDiagrams.length; i++) {
if (iDiagrams[i] instanceof ISequenceDiagram) {
ISequenceDiagram iSequenceDgm = (ISequenceDiagram) iDiagrams[i];
System.out.println("sequence diagram definition: " + iSequenceDgm.getDefinition());

IInteraction iInteraction = iSequenceDgm.getInteraction();
ILifeline[] iLifeLine = iInteraction.getLifelines();
for (int j = 0; j < iLifeLine.length; j++) {
IClass baseClass = iLifeLine[j].getBase();
if (baseClass != null) {
IElement owner = baseClass.getOwner();
if (owner instanceof INamedElement) {
System.out.println("package of base class: " + ((INamedElement)owner).getName());
}
}
}

IMessage[] iMessages = iInteraction.getMessages();
for (int j = 0; j < iMessages.length; j++) {
System.out.println("return value of a message: " + iMessages[j].getReturnValue());
}
}
}

prjAccessor.close();
} catch (LicenseNotFoundException e) {
e.printStackTrace();
} catch (ProjectNotFoundException e) {
e.printStackTrace();
} catch (ProjectLockedException e) {
e.printStackTrace();
} catch (NonCompatibleException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   API シーケンス図の読み込みについて ゲスト 2008-12-15 0:13
   » Re: API シーケンス図の読み込みについて yamazaki 2008-12-15 17:45
       Re: API シーケンス図の読み込みについて eikichi 2008-12-15 23:13

投稿するにはまず登録を