astah* API 利用ガイド


【モデルの作成/削除】

各インターフェース、メソッドの詳細についてはastah* APIのJavaDocをご覧ください。
astah* APIのモデル作成/編集/削除機能は、astah* UML, professionalでサポートしています。

【トランザクション操作】

モデルを作成/削除する場合、トランザクション操作が必要です。
トランザクション操作(モデル/図/プレゼンテーションの作成・編集・削除時)をご覧ください。

【クラス図に関連するモデルの作成】

BasicModelEditorのcreateClassメソッドなどを用いて、クラス図のクラスなどのモデルを作成します。

【ユースケース図に関連するモデルの作成】

UseCaseModelEditorのcreateUseCaseメソッドなどを用いて、ユースケース図のユースケースなどのモデルを作成します。

【ステートマシン図に関連するモデルの作成】

StateMachineDiagramEditorのcreateStateメソッドなどを用いて、ステートマシン図の状態などのモデルを作成します。

【アクティビティ図に関連するモデルの作成】

ActivityDiagramEditorのcreateActionメソッドなどを用いて、アクティビティ図のアクションなどのモデルを作成します。

【シーケンス図に関連するモデルの作成】

SequenceDiagramEditorのcreateLifelineメソッドなどを用いて、シーケンス図のライフラインなどのモデルを作成します。

【合成構造図に関連するモデルの作成】

CompositeStructureModelEditorのcreateClassメソッドなどを用いて、合成構造図のクラスなどのモデルを作成します。

【ER図に関連するモデルの作成】(professionalのみ)

ERModelEditorのcreateEREntityメソッドなどを用いて、ER図のERエンティティなどのモデルを作成します。

【マインドマップに関連するモデルの作成】(UML、professionalのみ)

MindmapEditorのcreateTopicメソッドなどを用いて、マインドマップのトピックなどのモデルを作成/移動します。

【要求図に関連するモデルの作成】(professionalのみ)

BasicModelEditorのcreateRequirementメソッドなどを用いて、要求図の要求などのモデルを作成します。

【クラス図に関連するモデルの作成例】

パッケージ1つと配下のクラス2つ、そして、その間の関連を作成します。
					
public class APIForEditingModelsSample {

    public static void main(String[] args) {

        try {
            System.out.println("Creating new project...");

            // プロジェクトを作成して、起点となるモデルを取得
            ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
            prjAccessor.create("./SampleModel.asta");
            IModel project = prjAccessor.getProject();

            System.out.println("Creating new elements in the project...");

            // クラスなどのモデル要素を作成または編集する場合、まとまり単位としてトランザクション操作が必要
            TransactionManager.beginTransaction();

            // クラス関連のモデル要素を作成するエディタを取得
            BasicModelEditor basicModelEditor = ModelEditorFactory.getBasicModelEditor();

            // パッケージを作成
            IPackage packageA = basicModelEditor.createPackage(project, "PackageA");

            // 指定のパッケージにクラスを作成
            IClass classA = basicModelEditor.createClass(packageA, "ClassA");
            // クラスの定義を追加
            classA.setDefinition("Definition of ClassA");
            // クラスに属性を追加
            basicModelEditor.createAttribute(classA, "attribute0", "int");
            // クラスに操作を追加
            basicModelEditor.createOperation(classA, "operation0", "void");

            // 指定のパッケージにクラスを作成
            IClass classB = basicModelEditor.createClass(packageA, "ClassB");

            // クラス間の関連を作成
            basicModelEditor.createAssociation(classA, classB, "association name",
                    "classA end", "classB end");

            // トランザクションの終了
            TransactionManager.endTransaction();

            // プロジェクトを保存
            prjAccessor.save();

            // プロジェクトを閉じる
            prjAccessor.close();

            System.out.println("Finished");

        } catch (LicenseNotFoundException e) {
            e.printStackTrace();
        } catch (ProjectNotFoundException e) {
            e.printStackTrace();
        } catch (ProjectLockedException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InvalidEditingException e) {
            // トランザクションの放棄
            TransactionManager.abortTransaction();
            // 不正編集の例外メッセージを取得
            System.err.println(e.getMessage());
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}

				

HOME