使用 GraphViz 创建复杂的包图

Jai*_*ime 2 uml dot graphviz package-diagram

我想使用点语言创建一个包图,类似于下面的图。我知道可以使用“簇”嵌套元素,但不确定是否可以将标签放在外包装的选项卡区域中。让我知道是否可能。

UML包图

Pet*_*nak 5

不幸的是,标签形状(左上角有耳朵的形状)不支持在那里指定标签。

如果您愿意牺牲这一点,您可以使用常规矩形或记录形状

digraph diagram {
    compound=true;
    ranksep=1
    node[shape=record]

    subgraph cluster_all {
        label="Multi-Layered Application"
        Users [shape=tab]

        subgraph cluster_presentation {
            label="Presentation Layer"
            "User Interface" [shape=tab]
            "Presentation Logic" [shape=tab]
        }

        Users -> "User Interface" [lhead=cluster_presentation]

        subgraph cluster_business {
            label="Business Layer"
            node[shape=tab]
            "Application Facade"
        }

        "User Interface" -> "Application Facade" [lhead=cluster_business,ltail=cluster_presentation,style=dashed]
    }

}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但正如您所看到的,graphviz 并不完全适合于此,因为您需要进行大量低级摆弄。

或者,如果目标是用文本描述图表,我强烈推荐plantuml.com,它对于此类任务具有更明智的语法。

@startuml
package "<<model>> Multi-Layered Application <<model>>" as app {
  package Users { }

  package "Presentation Layer" as presentation {
    package "User Interface" { }
    package "Presentation Logic" { }
  }

  Users ..> presentation

  package "Business Layer" {
    package "Application Facade" { }
  }

  presentation ..> "Business Layer"

}
@enduml
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述