【问题标题】:Enterprise Architect Class Diagrams for large system大型系统的 Enterprise Architect 类图
【发布时间】:2017-03-22 14:09:44
【问题描述】:

我正在为我的公司处理一个非常大的 UML 文档项目。我们正在尝试在 Enterprise Architect 中对现有程序进行建模以更好地记录它。由于应用程序的大小,我们选择在主包中将图表分解为单独的包(例如 GUI、GPS、可移动媒体等)。这对于每个部分的单独类图非常有用。但是,我想将类图从每个包拖放到主图,以显示它们如何作为一个系统连接。

是否可以编写一个脚本函数来获取链接图并自动链接它们,类似于代码工程导入的方式?我注意到在代码导入的最后一步中,它添加了关联和概括。我想如果 Sparx 可以在导入代码时做到这一点,我应该能够在我的主文档中链接它们。关于如何实现这一目标的任何想法?

如果不可能,有没有办法将创建的图表从代码工程链接到我的包中已经存在的图表?我认为能够右键单击类图并从主文档中“在包中查找”以查看更多详细信息会很有用。

【问题讨论】:

    标签: c++ architecture uml modeling enterprise-architect


    【解决方案1】:

    您基本上要做的是创建一个概览图,然后从浏览器中拖放相关图表。这提供了一个选择框

    您只留下第一个选择Diagram Frame。 EA 将使用图表名称中建议的名称创建一个新对象(您可以保留该名称,但如果您有需要也可以更改它)。现在,拖动的图表将出现在概览图上的命名框架内。您无法缩放此图表,因此它将具有原始图表的大小加上它周围的框架。

    注意:您可以在上面的对话框中使用Hyperlink 在图表之间创建漂亮而简短的链接以进行导航。

    现在是脚本部分。我将使用元语言,但您可能会猜到如何以您的首选语言使用它。首先是找到概览图。您可以通过在浏览器中右键单击它并使用Copy/Copy Node 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 会将他的框架扩展到指定大小之上的最小值。

    为了查看结果,您需要关闭/打开概览图。我会把它作为练习留给你:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多