2013-07-31 73 views
2

我目前使用的自动化脚本EA XMI导入到Enterprise Architect的过程 - 的JScript。我已经能够从现有的包GUID,名称,包的路径,创建包中获取定义。企业架构师脚本:使用ImportPackageXMI

从的Sparx参考API可以发现here

这里是我当前的代码

guid = "{3EC70CB6-28A1-40ed-ADD5-4B3AF5D89EED}" 
Session.Output("GUID = " + guid); 
Session.Output("GUID XML = " + project.GUIDtoXML(guid)); 
Session.Output("XMI file = " + svnPath + xmlPath); 
result = project.ImportPackageXMI(project.GUIDtoXML(guid), svnPath + xmlPath, 1, 1); 
Session.Output(result); 

下面的输出显示,我得到了 “未知的包”,而调用API:

GUID = {3EC70CB6-28A1-40ed-ADD5-4B3AF5D89EED} 
GUID XML = EAID_3EC70CB6_28A1_40ed_ADD5_4B3AF5D89EED  
XMI file = D:\svn.xxx.com\yyy\docs\design\technical\class\Administration\SystemParameter.xml  
Unknown package: EAID_3EC70CB6_28A1_40ed_ADD5_4B3AF5D89EED 

我已经搜索了解决方案,但谷歌只显示约17个结果。该项目维也纳在谷歌代码只有一点帮助。

因此,没有人知道如何使用ImportPackageXMI

回答

2

我无法从您发布的信息中分辨出来,但是您可能试图从一个项目导出包并将其导入到另一个项目中?

无论您是否告知EA到StripGUID,您将XMI 导入到的软件包必须存在于项目中,这就是PackageGUID指定的内容。

StripGUID 1表示包含在XMI文件中的包的完整副本放置在PackageGUID包中。为XMI文件中的所有包,元素等创建新的GUID。在旧版本的EA中,这是制作软件包深层副本的唯一方法(将软件包复制到剪贴板)。

StripGUID 0产生了几个不同的结果。

  • 如果XMI包具有相同的GUID作为PackageGUID,所述PackageGUID包的当前内容由内容XMI替换。
  • 如果GUID不同:
    • 如果项目中不存在XMI包GUID,则将XMI包放在PackageGUID包内。
    • 如果XMI程序包GUID存在,则导入失败(冲突的程序包)。

在所有四种情况下,PackageGUID包必须已经存在。

+0

正确,你明白了我的观点!我有一些从EAP生成的导出XMI并尝试将它们加载到另一个EAP中。让我试着用GUID创建一个包,然后我会在后面发布结果。谢谢 – David

+0

好的,完美的工作!所以,PackageGUID参数指向父包。再次感谢你! – David