关于企业架构师,我几乎没有简短的问题。
我的问题是关于自动化界面。按照本页提供的说明操作时: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
答案 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()
来获取原因。