企业架构师api:向集合添加元素

时间:2013-05-07 08:00:23

标签: enterprise-architect

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

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

提供的说明:

  

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

我的java示例:

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

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

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

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

非常感谢,

Alek

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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()来获取原因。