2

我目前正在使用 EA Script - JScript 将 XMI 导入 Enterprise Architect 的过程自动化。我已经能够从现有包 GUID、名称、包路径、创建包中获取定义。

Sparx 的参考 API 可以在这里找到

这是我当前的代码

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吗?

4

1 回答 1

2

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

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

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

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

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

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

于 2013-07-31T12:45:01.397 回答