我正在尝试使用Python向EA模型添加新的连接器。不幸的是,当我的脚本运行时,它没有添加连接器。用Javascript编写的同一个脚本,通过eajavascript控制台,可以添加连接器。你知道吗
奇怪的是Python脚本没有失败。它的行为就像添加了连接器。如果我刷新正在连接的元素,连接器似乎就在那里。我甚至可以从Python控制台获得ConnectorID。你知道吗
Python:
from win32com.client import Dispatch
import os
ea = Dispatch("EA.App")
rep = ea.Repository
path = os.path.normpath("C:/temp/eaFile.eap")
e1 = rep.GetElementByID(121228)
e2 = rep.GetElementByID(120663)
newCon = e1.Connectors.AddNew("","Association")
newCon.ClientID = e1.ElementID
newCon.SupplierID = e2.ElementID
newCon.Update()
JAVASCRIPT代码:
e1 = Repository.GetElementByID(121228);
e2 = Repository.GetElementByID(120663);
newCon = e1.Connectors.AddNew("", "Association");
newCon.ClientID = e1.ElementID;
newCon.SupplierID = e2.ElementID;
newCon.Update();
我希望连接器在enterprisearchitect中作为元素上的链接可见——当从Python运行时我找不到它,当从Javascript运行时我可以找到它。你知道吗
终于想明白了。 主要问题是,在定义路径后,我缺少以下行:
正因为如此,它无法连接。一定是在排除脚本故障时丢失了这一行。你知道吗
我认为第二个问题是,我的Python控制台在以前的会话中仍然是打开的,而且我打开了多个EA模型,因此EA在连接到所需模型时的行为有些奇怪(正如我所说的,我在脚本中得到的反馈就好像我连接了一样)。你知道吗
我认为这里最大的缺陷是,每次我成功地对存储库运行python脚本时,EA都喜欢重新加载项目,关闭应用程序中所有打开的窗口(可能是为了获取更改)。如果EA不放弃你的工作,你就做错了!你知道吗
出于某种奇怪的原因,您需要调用不带大括号的update。你知道吗
为我工作。我从来没有调查过为什么,我只是习惯了。。。你知道吗
注意:连接器已经设置了
clientId
,所以您不需要该赋值。你知道吗下面是我的包装器类的摘录
它是从整体上切下来的,但你可以把它当作一个开始。单子可以在这里的某处找到。用法:
相关问题 更多 >
编程相关推荐