2016-11-08 71 views
0

我正在爲我公司開發非常大的UML文檔項目。我們試圖在Enterprise Architect中對現有程序進行建模以更好地記錄它。由於應用程序的大小,我們選擇將圖分解成主包(例如GUI,GPS,可移動媒體等)中的單獨包。這對於每個部分的單個類圖很有用。但是,我想將每個包中的類圖拖放到主圖上,以顯示它們如何作爲系統進行連接。適用於大型系統的Enterprise Architect類圖

是否可以編寫一個腳本函數來獲取鏈接圖並自動將它們鏈接到代碼工程導入的相似方式?我注意到代碼導入的最後一步它添加了關聯和泛化。我想如果Sparx可以在導入代碼時做到這一點,我應該可以在我的主文檔中鏈接它們。任何想法如何實現這一目標?

如果不可能,有沒有辦法將創建的圖表從代碼工程鏈接到已經存在於我的包中的圖表?我認爲能夠右鍵單擊類圖並從主文檔中「查找包」可以查看更多詳細信息。

回答

1

你將基本上做的是創建一個概覽圖,只需從瀏覽器中拖放相關圖即可。這提供了一個選擇框

enter image description here

,你只是離開第一選擇Diagram Frame。 EA將創建一個新的對象,其名稱中提供了一個名稱(如果您有需要,您可以離開它,但也可以更改它)。現在拖動的圖表將顯示在總覽圖上的命名框架內。您無法縮放此圖,因此它將具有原始圖的大小加上其周圍的框架。

注意:您可以在上面的對話框中使用Hyperlink來創建用於導航的圖表之間的好的和短的鏈接。

現在用於腳本部分。我將使用元語言,但您可能會猜測如何使用您的首選語言。首先要找到總覽圖。您可以通過在瀏覽器中右鍵單擊並使用Copy/Copy Node GUID...來查詢其圖guid。現在與ID可以通過(下面的示例GUID)找到它:

overview = rep.GetDiagramByGUID("{A006B95E-1237-4778-A339-D1B407C6FD5C}") 

下一步是找到你要顯示的概述單圖。這取決於你如何找到它們。最終他們將在存儲庫中的某些位置。靜態加載在第一根部的第一視圖中的第一包中的第一個圖,你會打電話

model = repository.Models.GetAt(0) 
view = model.Packages.GetAt(0) 
package1 = view.Packages.GetAt(0) 
dia1 = package1.Diagrams.GetAt(0) 

你可能會用更聰明的方式來迭代,並找到相關的圖表。

現在您可以使用這些圖表對象來創建圖框。這需要放在一個包中。爲了簡單起見,我使用了package1,但您最終將它們放在概覽圖的包中。

frame = package1.Elements.AddNew(dia1.Name, "UMLDiagram") 
frame.Update() 
sql = "UPDATE t_object SET PDATA1=" + str(dia1.DiagramID) + " WHERE Object_ID=" + str(overview.diagramID 
repository.Execute(sql) 

這是巫術,我知道。 API不提供將UMLDiagram元素與參考圖鏈接的方法。所以這個必須直接插入到數據庫中。

最後,新創建的幀的對象可以放置在概覽圖:

diagramObj = overview.DiagramObjects.AddNew("l=10;r=110;t=-20;b=-80","") 
diagramObj.ElementID = frame.ElementID 
diagramobj.Update() 

由於這EA,爲y軸的座標是朝向從上方陰性(L,R,T, b代表,猜測)。 EA會將框架擴展到指定尺寸以上的最小值。

爲了查看結果,您需要關閉/打開總覽圖。我會把這個作爲鍛鍊留給你:-)

相關問題