# astah* API 利用ガイド

2013年10月17日
株式会社 チェンジビジョン

## 【概要】

astah* APIは、astah*のモデルデータを活用するアプリケーションソフトウェアを開発するためのJavaインターフェース群です。
本ドキュメントでは、astah* APIを利用したアプリケーションの開発方法について説明します。

## 【使用許諾事項】

- astah* APIの.jar形式ファイルであるastah-api.jarの再配布を禁止します。
- その他のastah* API使用上の許諾事項は「astah*使用許諾契約書」に準じます。

## 【astah* API利用要件】

astah* APIを利用したアプリケーションソフトウェアを実行するには、astah*を実行できる環境が必要です。

- astah*を実行可能なJava実行環境
- astah*ソフトウェア本体がインストールされていること
  - アプリケーションのコンパイルには、astah-api.jarが必要
  - アプリケーションの実行には、astah-api.jar、lib/slf4j-api-1.6.6.jarと、astah-pro.jarもしくはastah-uml.jar, astah-community.jarが必要
  - インストールしたフォルダのlibにあるjarへクラスパスを通す
  - 実行時に大きなastah*プロジェクトファイルを扱う場合は、Java VMのメモリ管理オプション設定が必要
    （VMの起動オプションとしての初期ヒープサイズ16Mバイト、最大ヒープサイズ256Mバイトを指定する例）
    -Xms16m -Xmx256m
- astah* APIでサポートしている機能
  - astah* communityは、astah* APIの取得機能をサポートしています。
  - astah* UML, professionalは、astah* APIの取得/作成/編集機能をサポートしています。

## 【astah* APIの使い方・サンプル】

astah* APIの仕様は、 astah* API JavaDocをご覧ください。
astah* APIの検索は、 astah* API 検索をご利用ください。

1. プロジェクトの操作
2. モデル情報の取得
3. モデルの作成/削除
4. モデルの編集
5. 図要素(プレゼンテーション)概要
6. 図要素の情報の取得
7. 各DiagramEditorの概要
8. 図の作成/削除
9. 図要素の作成/削除
10. 図要素の編集
11. トランザクション操作(モデル/図/図要素の作成・編集・削除時)
12. プロジェクトの言語情報
13. XML入出力
14. 参照プロジェクトの追加、更新、削除
15. 簡単マージ
16. サンプルアプリケーションの説明
17. 対応モデル一覧

## 【機能】

astah*のモデル、図、図要素(プレゼンテーション)の取得・作成・編集・削除機能を アプリケーションソフトウェア上で利用できます。

[モデル]

・モデル要素の参照は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、コミュニケーション図、合成構造図、フローチャート、データフロー図(DFD)、ER図、要求図をサポートしています。
・モデル要素の作成/編集/削除は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、合成構造図、ER図、要求図をサポートしています。

- | モデルの参照 | モデルの作成※ | モデルの編集※ | モデルの削除※
クラス図 | ○ | ○ | ○ | ○
ユースケース図 | ○ | ○ | ○ | ○
ステートマシン図 | ○ | ○ | ○ | ○
アクティビティ図 | ○ | ○ | ○ | ○
シーケンス図 | ○ | ○ | ○ | ○
コミュニケーション図 | ○ | × | × | ×
コンポーネント図 | × | × | × | ×
配置図 | × | × | × | ×
合成構造図 | ○ | ○ | ○ | ○
フローチャート | ○ | × | × | ×
データフロー図(DFD) | ○ | × | × | ×
ER図 | ○ | △ | △ | △
CRUD | × | × | × | ×
マインドマップ | × | × | × | ×
要求テーブル | × | × | × | ×
要求図 | ○ | △ | △ | △
トレーサビリティマップ | × | × | × | ×

※astah* UML, professionalのみ。△はastah* professionalのみ。

[図]

・図の参照/削除は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、コミュニケーション図、コンポーネント図、配置図、合成構造図、フローチャート、データフロー図(DFD)、ER図、CRUD、マインドマップ、要求図をサポートしています。
・図の作成/編集は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、合成構造図、ER図、マインドマップ、要求図をサポートしています。

- | 図の参照 | 図の作成※ | 図の編集※ | 図の削除※
クラス図 | ○ | ○ | ○ | ○
ユースケース図 | ○ | ○ | ○ | ○
ステートマシン図 | ○ | ○ | ○ | ○
アクティビティ図 | ○ | ○ | ○ | ○
シーケンス図 | ○ | ○ | ○ | ○
コミュニケーション図 | ○ | × | × | ○
コンポーネント図 | ○ | × | × | ○
配置図 | ○ | × | × | ○
合成構造図 | ○ | ○ | ○ | ○
フローチャート | ○ | × | × | △
データフロー図(DFD) | ○ | × | × | △
ER図 | ○ | △ | △ | △
CRUD | ○ | × | × | △
マインドマップ | ○ | ○ | ○ | ○
要求テーブル | × | × | × | ×
要求図 | ○ | △ | △ | △
トレーサビリティマップ | × | × | × | ×

※astah* UML, professionalのみ。△はastah* professionalのみ。

[図要素(プレゼンテーション)]

・図要素の参照は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、コミュニケーション図、合成構造図、フローチャート、データフロー図(DFD)、ER図、CRUD、マインドマップ、要求図をサポートしています。
・図要素の作成/編集/削除は、クラス図、ユースケース図、ステートマシン図、アクティビティ図、シーケンス図、合成構造図、ER図、マインドマップ、要求図をサポートしています。

- | 図要素の参照 | 図要素の作成※ | 図要素の編集※ | 図要素の削除※
クラス図 | ○ | ○ | ○ | ○
ユースケース図 | ○ | ○ | ○ | ○
ステートマシン図 | ○ | ○ | ○ | ○
アクティビティ図 | ○ | ○ | ○ | ○
シーケンス図 | ○ | ○ | ○ | ○
コミュニケーション図 | ○ | × | × | ×
コンポーネント図 | × | × | × | ×
配置図 | × | × | × | ×
合成構造図 | ○ | ○ | ○ | ○
フローチャート | ○※ | × | × | ×
データフロー図(DFD) | ○※ | × | × | ×
ER図 | ○※ | △ | △ | △
CRUD | ○※ | × | × | ×
マインドマップ | ○※ | ○ | ○ | ○
要求テーブル | × | × | × | ×
要求図 | ○※ | △ | △ | △
トレーサビリティマップ | × | × | × | ×

※astah* UML, professionalのみ。△はastah* professionalのみ。

## 【注意事項】

- astah* APIでは、一度に１プロジェクトのみ開きます。複数のプロジェクトを処理する場合は、元のプロジェクトを閉じてから開いてください。
- astah* APIは複数スレッドからの同時アクセスに対応しておりません。複数スレッドから利用する場合は、アプリケーション側で何らかの排他制御をしてください。
- ProjectAccessor.open(String projectName)でプロジェクトファイルを開く際、指定したプロジェクトファイルがロックされているとエラーが発生します。この場合、既に開いているプロジェクトファイルを閉じてAPIを実行します。または、以下のメソッドで読込み専用モードの指定をしてプロジェクトファイルを開くことができます。 (引数 allowReadOnly にtrueを指定します)
  ProjectAccessor.open(String projectName, boolean isIgnoreModelVersion, boolean lockMode, boolean allowReadOnly)

## 【モデル要素に関する補足事項】

#### UMLのメタモデルとの違いについて

astah* APIのクラス構造は、UMLメタモデルの継承構造とは異なる部分があります。astah* APIのクラス構造は、UMLメタモデルの継承構造から実際にモデル要素としてインスタンス化されることのない抽象的なモデル要素の一部を継承ツリーから省き、簡素化した構造になっています。

#### アイコン形状を持つクラス要素

アクター、インターフェース、バウンダリ、エンティティ、コントロールなど通常のクラスとして表記が可能な要素は、ステレオタイプを持つクラスです。
例えば、アクターは"actor"、インターフェースは"interface"というステレオタイプを持つクラスになります。

#### タグ付き値(ITaggedValue)について

astah*では、属性、ロール名の派生情報、ユースケース記述の表現などにタグ付き値を用います。

Copyright(C) 2010-2014 Change Vision, Inc. All rights reserved.