gpt4 book ai didi

javascript - 通过 Enterprise Architect 中的脚本访问嵌套元素

转载 作者:行者123 更新时间:2023-11-28 14:24:45 26 4
gpt4 key购买 nike

我是 Enterprise Architect 的初学者,我需要编写一个小程序来选择 Enterprise Architect 项目中的所有“事件”类型,以设置“别名”属性的特定值(不相同,但遵循特定逻辑)。我想使用脚本工具来完成此操作,但我在通过脚本访问任何事件对象时遇到了一些困难。

我找到了链接1 “企业架构师对象模型”但我无法解决我的问题。下面附上项目树。

这里有一些我尝试过的 JavaScript 代码:

var elem as EA.Element;
elem = Repository.GetTreeSelectedObject();
elem.Alias = "Hi at all";

但是这段代码有两个问题:

1)需要用鼠标指针选择事件;

2) 运行代码后,事件的“别名”字段为空。

enter image description here

最佳答案

1。如何处理所有的Activity

有不同的方法来处理这个问题。一种选择是从选定的Package开始并迭代每个拥有的元素;及其拥有的元素。
大概是这样的(C#,但你明白了它的要点):

public void main()
{
var selectedPackage = Repository.GetTreeSelectedPackage();
processPackage(selectedPackage);
}

private void processPackage(EA.Package package)
{
//process owned elements
foreach (EA.Element element in package.Elements)
{
processElement(element);
}
//process SubPackages
foreach(EA.Package subPackage in package.Packages)
{
processPackage(subPackage);
}
}
private void processElement(EA.Element element)
{
//test type and steroetype to make sure we only treat Activities
if (element.Type == "Activity" && element.Stereotype == "Activity")
{
element.Alias = "newAlias";
element.Update();
}
//process owned Elements
foreach(EA.Element subElement in element.Elements)
{
processElement(subElement);
}
}

这对于有限数量的元素来说效果很好,但如果您想处理分散在大型模型上的大量元素,它会变得非常慢。

在这种情况下,最好使用Repository.GetElementSet(MySQLSelectQuery,2)。将此操作与 SQL 查询结合使用(第二个参数需要为 2)来准确选择您需要的元素。
这将比迭代整个模型快一个数量级。

我的 github 存储库中的此方法(以及更多)示例:

2。如何保存更新

这很简单。确保在更改 API 对象的任何属性后调用 Update()

关于javascript - 通过 Enterprise Architect 中的脚本访问嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53886506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com