【问题标题】:Access to nested elements by script in Enterprise Architect通过 Enterprise Architect 中的脚本访问嵌套元素
【发布时间】:2018-12-21 14:34:18
【问题描述】:

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

我找到了链接1“Enterprise Architect Object Model”,但我无法解决我的问题。 下面附上项目树。

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

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

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

1) 它需要用鼠标指针选择活动;

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

【问题讨论】:

  • 向我们展示脚本以及您遇到的问题。你不能指望有人为你写。
  • 不要在评论中添加代码。改为编辑您的问题。
  • 调用 elem.Update() 将更改保存到数据库。
  • 谢谢!!!! “别名”字段内容现在是我想要的。你能帮我解决问题1)吗?我想通过脚本访问活动,但我不知道该怎么做。例如,是否有一个类容器,我可以从中登录到树结构以访问所有活动?

标签: javascript vbscript enterprise-architect jscript bpmn


【解决方案1】:

1。如何处理所有活动

有不同的方法来处理这个问题。一种选择是从选定的 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()

【讨论】:

  • 而不是SQLQuery,我会推荐经常被遗忘的GetElementSet
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2015-11-17
  • 2019-03-10
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多