2016-11-08 74 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会将框架扩展到指定尺寸以上的最小值。

为了查看结果,您需要关闭/打开总览图。我会把这个作为锻炼留给你:-)

相关问题