如何以编程方式创建Enterprise Architect包,类和属性

时间:2013-10-15 08:08:39

标签: c# enterprise-architect

我正在尝试使用/了解C#中的Interop.EA和EA类以及如何以编程方式创建图表。

我正在使用其他网络应用程序中的用户数据(.XML文件(不是XMI))。

我已经尝试过来自Sparx的CSAddinDemo并且工作正常,但没有显示如何添加/创建新的。

我的目标是在C#中创建EA类图表格式的XML数据。

这样的东西?

public void EA_create()
{
    EA.DiagramObject d = new DiagramObject();
    EA.Element e = new Element();

    EA.Element elementEa = EA.Element.AddNew("Requirement", "non-functional");
    elementEa.Update();
    elements.Refresh();
    //MessageBox.Show("Class created");
}

1 个答案:

答案 0 :(得分:8)

首先,您需要一个EA项目(也称为“存储库”)才能工作。要创建新的EA项目(.EAP文件),请使用Repository.CreateModel()。要打开现有帐户,请使用Repository.OpenFile()

除了Repository类(与EA的所有交互的顶级类)之外,您不会自己创建对象。相反,您在遍历的各种AddNew()上调用Collections - 这适用于包,元素,图表,图表对象,连接器,属性,标记值等等。

Repository.Models就是这样一个集合(Packages)。

Package然后包含其他集合,例如PackagesElementsDiagramsDiagram的集合为DiagramObjects

DiagramObject是一(1)图中元素的图形表示(请记住,元素存储只在一个包中,但可以显示在任意数量的图表中。)

EA不允许您在包树的顶层创建任何图表或元素(称为根节点);你必须先创建一个子包。因此,您至少需要为每个元素创建一个Package和一个Diagram,一些Elements和一个DiagramObject

因此,在您获得的代码中,AddNew()无效,因为您尝试在Element上调用它,而您需要在Collection上调用它。

假设Update()Refresh(),您对elementsCollection的使用是正确的。您必须始终在对对象进行任何更改后调用Update,并在对集合进行任何更改后刷新。

帮助文件中有一些很好的入门内容。查看自动化和脚本 - 企业架构师对象模型,并阅读标题为使用自动化接口的部分。

然后,查看参考 - 代码示例,尤其是打开存储库添加和管理图

最后,请注意,加载项是一段扩展EA并在EA流程中运行的代码。如果要创建新模型或对现有模型进行更改,则无需执行此操作;如果要与EA的GUI集成或响应EA触发的各种事件,您只需要编写一个加载项。