モデル / プレゼンテーションの参照

モデルおよびプレゼンテーションの参照方法について説明します。
対応モデル対応プレゼンテーションについてはこちらをご覧ください。

モデルの参照

以下に、モデルを参照する例を示します。

プロジェクトからモデルを検索する

プロジェクト全体からモデルを取得するにはProjectAccessorのfindElementsメソッドを用います。
ProjectAccessorAstahAPI#getProjectAccessor()から取得できます。

ModelFinderの実装例

クラス図の抽出
入場点の抽出

構造ツリーで選択しているモデルを取得する

図上で選択しているプレゼンテーションからモデルを取得する

クラスから関連を取得する

astah*上で下図のようなクラス図があり、Class0から関連を取得するとします。

01_view_diagram_editor

この場合、astah*のプロジェクト内のモデルは下図のようになります。
クラスから直接取得することができないため、関連端を取得してから関連のモデルを取得する必要があることがわかります。

02_instance_diagram

また、対応するastah* APIの構造は下図のようになります。

03_diagram_showing_class_structure

クラスから属性・関連端はIClass#getAttributes()で取得できます。
関連端から関連はIAttribute#getAssociation()で取得できます(属性からIAttribute#getAssociation()した場合はnullが返ります)。

クラスから依存を取得する

astah*上で下図のようなクラス図があり、Class0から依存を取得するとします。

01_view_diagram_editor

この場合、astah*のプロジェクト内のモデルは下図のようになります。

02_instance_diagram

また、対応するastah* APIの構造は下図のようになります。
INamedElementIClassの親クラスです。

03_diagram_showing_class_structure

Class0から依存は、INamedElement#getClientDependencies()を用いることで取得することができます。
Class1からはINamedElement#getSupplierDependencies()で取得できます。

テンプレートクラスを取得する

IClass#getTemplateBindings()を利用することで、そのクラスのテンプレートクラスに繋がるテンプレートバインディング(ITemplateBinding)の配列を取得できます。
ITemplateBinding#getTemplate()を利用することでテンプレートクラスを取得できます。
また、テンプレートパラメータについては、IClass#getTemplateParameters()を利用することで、そのクラスのテンプレートパラメータ(IClassifierTemplateParameter)の配列を取得できます。

パッケージ配下のパッケージを再帰的に取得する

パッケージ(IPackage)を継承するサブシステムやモデルも、パッケージに含めます。

パッケージ配下のクラスを取得する

パッケージ(IPackage)配下にある全モデル要素を取得し、クラスを抽出します。

クラスのネームスペースを取得する

クラス(IClass)等INamedElementのサブクラスの場合、メソッドgetName()を用いることでその名前を取得できます。
さらに自らを所有するモデル要素をgetOwner()を使用することによって、 プロジェクトモデルからのネームスペースを取得します。

アクティビティ図のモデルを取得する

アクティビティ図のモデル構造を示します。下記を参考にしてモデルを取得して下さい。

astah*上で下図のようなアクティビティ図がある場合、

01_view_diagram_editor

astah*プロジェクト内のモデルは下図のようになります。
上図には表示されていませんが、Partition0のsuperPartitionにディメンジョンが存在することに注意して下さい。

02_instance_diagram

また、対応するastah* APIの構造は下図のようになります。

03_diagram_showing_class_structure

シーケンス図のモデルを取得する

シーケンス図のモデル構造を示します。下記を参考にしてモデルを取得して下さい。

astah*上で下図のようなシーケンス図がある場合、

01_view_diagram_editor

astah*のプロジェクト内のモデルは下図のようになります。

02_instance_diagram

また、対応するastah* APIの構造は下図のようになります。

03_diagram_showing_class_structure

ステートマシン図のモデルを取得する

ステートマシン図のモデル構造を示します。下記を参考にしてモデルを取得して下さい。

astah*上で下図のようなステートマシン図がある場合、

01_view_diagram_editor

astah*のプロジェクト内のモデルは下図のようになります。

02_instance_diagram

また、対応するastah* APIの構造は下図のようになります。

03_diagram_showing_class_structure

state0から領域にかかわらず全子要素を取得するにはIState#getSubvertexes()、state0の各領域から子要素を取得するにはIState#getSubvertexes(int regionIndex)を用います。

タグ付き値を取得する

タグ付き値はITaggedValueを使用してアクセスできます。下記はタグ付き値の値を取得する例です。

ステレオタイプを取得する

IElement#getStereotypes()からStringの配列として取得できます。

別名を取得する

別名の情報は、モデルではタグ付き値として保持しています。 タグ付き値の取得方法はモデルからタグ付き値を取得するをご覧ください。
タグ付き値のキーは別名1が“jude.multi_language.alias1”、別名2が“jude.multi_language.alias2”です。

なお、モデルからプレゼンテーションを取得し、プレゼンテーションから別名を取得することも可能です。

図 / プレゼンテーションの参照

図を取得する

図内の全プレゼンテーションを取得する

IDiagram#getPresentations() を用いると図内の全プレゼンテーションを取得することができます。
IElement#getPresentations() とは異なる挙動をするため注意してください。

モデルからプレゼンテーションを取得する

IElement#getPresentations() を用いると IPresentation#getModel() == element となるプレゼンテーションをすべて取得できます。
IDiagram#getPresentations()は図内のプレゼンテーションを取得することとなりますので、下記例では例外処理をしています。

図上で選択しているプレゼンテーションを取得する

IDiagramViewManager#getSelectedPresentations() を用いると、現在アクティブなダイアグラムエディタ上で選択されている図要素を取得できます。

プレゼンテーションから別名を取得する

IPresentation#getProperty(java.lang.String)PresentationPropertyConstants#Key#ALIAS1 または PresentationPropertyConstants#Key#ALIAS2 を渡すと取得することができます。