【问题标题】:enterprise architect api: Add element to a collection企业架构师 api:将元素添加到集合
【发布时间】:2013-05-07 08:00:22
【问题描述】:

我有几个关于企业架构师的简短问题。

我的问题是关于自动化界面的。按照此页面上提供的说明进行操作时:http://www.sparxsystems.com/uml_tool_guide/sdk_for_enterprise_architect/colle... 为了向集合(和 .eap 文件)添加新元素,它不会添加该元素。我可以从元素中获取数据,修改甚至删除它们,但是添加新元素不起作用?

提供的说明:

调用 AddNew 以添加新项目。 根据需要修改项目。 对项目调用 Update 以将其保存到数据库中。 对集合调用 Refresh 以将其包含在当前集合中。

我的 java 示例:

elements 是模型中所有元素的集合...

 org.sparx.Element elementEa = elements.AddNew("Requirement", "non-functional");
 elementEa.Update();          
 elements.Refresh();

使用 api 是否可以更改元素的 id 或 guid,因为 org.sparx 中没有为此指定方法?

最后一件事...是否可以在 EA 中创建自定义元素,例如不具有难度、优先级等标准属性但会有其他属性的需求? (普通属性,非标记值)

【问题讨论】:

    标签: enterprise-architect


    【解决方案1】:
    Collection<Package> packageCollection = myPackage.GetPackages();
    Package consolidatedCfsSpecPackage = packageCollection.AddNew("somePackageName", "");
    if (!consolidatedCfsSpecPackage.Update()) {
        System.err.println("Not Updated: somePackageName");
    }
    packageCollection.Refresh();
    

    这对我有用。我建议您检查您调用的elementEa.Update() 方法的返回值。如果返回false,可以调用elementEa.GetLastError()获取原因。

    【讨论】:

      【解决方案2】:

      AddNew() 的参数是 Name 和 Type,因此要创建 Requirement 元素,您应该指定“SomeRequirementName”和“Requirement”。

      您无法通过 API 更改 ID 或 GUID,否则您的模型会崩溃并烧毁(连接器会悬空,元素会从图表中消失,等等)。

      使用 MDG 技术,您可以根据需要创建非常详细的定型元素,使用它们自己的视觉表示(形状脚本)等,但如果您在创建具有自己的属性对话框的元素类型之后,答案是否定的; API 中没有自定义对话框的挂钩。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多