Creating models

Please refer to Astah API JavaDoc for details of Interfaces and methods.
Creating models is supported only in Astah Professional edition.

1. Transaction Operation

Transaction operation is required when creating models via Astah API.

2. Example - creating models in Class Diagram

Create one package, two classes inside of it and associations between these two classes
public class APIForEditingModelsSample {

   public static void main(String[] args) {

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

        // Create a project and get a root model
        ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
        prjAccessor.create("./SampleModel.asta");
        IModel project = prjAccessor.getProject();

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

        // Begin transaction when creating or editing models
        TransactionManager.beginTransaction();

        // Get model editor to create models in a class diagram
        BasicModelEditor basicModelEditor = ModelEditorFactory.getBasicModelEditor();

        // Create a package
        IPackage packageA = basicModelEditor.createPackage(project, "PackageA");

        // Create a class in the specified package
        IClass classA = basicModelEditor.createClass(packageA, "ClassA");
        // Add a definition to the class
        classA.setDefinition("Definition of ClassA");
        // Add an attribute to the class
        basicModelEditor.createAttribute(classA, "attribute0", "int");
        // Add an operation to the class
        basicModelEditor.createOperation(classA, "operation0", "void");

        // Create a class in the specified package
        IClass classB = basicModelEditor.createClass(packageA, "ClassB");

        // Add an association between classes
        basicModelEditor.createAssociation(classA, classB, "association name",
                 "classA end", "classB end");

        // End transaction
        TransactionManager.endTransaction();

        // Save project
        prjAccessor.save();

        // Close project
        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) {
         // Abort transaction
         TransactionManager.abortTransaction();
         // Get an exception message
         System.err.println(e.getMessage());
         e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      } catch (Throwable e) {
          e.printStackTrace();
      }
  }
}

Interface to create diagrams

Diagram Interface to create diagrams
Class Diagram BasicModelEditor
UseCase Diagram UseCaseModelEditor
Statemachine Diagram StateMachineDiagramEditor
Activity Diagram ActivityDiagramEditor
Sequence Diagram SequenceModelEditor
Composite Structure Diagram CompositeStructureModelEditor
ER Diagram ERModelEditor
Mind Map MindmapEditor
Requirement Diagram BasicModelEditor