1

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

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

提供的说明:

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

我的Java示例:

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

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

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

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

4

2 回答 2

3

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

您不能通过 API 更改 ID 或 GUID,如果这样做,您的模型会崩溃和烧毁(连接器会悬空,元素会从图表中消失,等等)。

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

于 2013-05-25T11:42:01.650 回答
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()

于 2014-05-26T21:26:36.007 回答