2013-07-31 105 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