PlantUML:可能带有文本的嵌套组件?

PlantUML: nested components with text possible?

正如我从 PlantUML 中的示例中看到的,您可以拥有某些带有文本的图形对象,例如

folder folder1 [
    Here you can have some explanation with
    ====
    --Markdown-- //formatting// ~~elements~~
]

渲染到

您还可以使用 folder(在其他元素中)通过嵌套其他项目分组

folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
}

但目前我看不到合并两者的方法 - 一个包含一些解释文本的对象嵌套元素。

PlantUML 可以吗? (怎么样?)

我只能假设 PlantUML 试图尽可能地像 UML。虽然可以向元素添加长描述 ([...]),但我几乎可以肯定它仅适用于某些元素类型(例如 activity 元素、用例等),通常会这样做不包含子元素。但是,对于更正式的图表,任何需要注释或进一步解释概念的 "text" 都应添加为注释或标注。

我 运行 很久以前就研究过这个问题,并且确实按照您的要求做了。我深入研究了图表档案,发现了一个非常接近您想要实现的示例。

因此,为了回答您的问题,在文件夹等分组元素中包含描述性文本和 UML 元素的解决方案如下:

@startuml
skinparam rectangle<<desc>> {
    backgroundColor Transparent
    borderColor Transparent
    titleFontColor Red
    stereotypeFontColor Transparent
}

folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
    rectangle f2<<desc>> [
        Here you can have some explanation with
        ====
        --Markdown-- //formatting// ~~elements~~
    ]

    folder3 -[hidden]- f2
}
@enduml

您会注意到,连接用于调整文本位置,可能需要进行一些更复杂的调整,具体取决于文本的大小和元素的数量。

从早期开始,我就更加关注 UML 规范;有关评论的更多详细信息,请参阅此 answer。不仅添加注释更容易,而且 PlantUML 代码也简单得多。也就是说,以下是使用此方法的上述变体。

@startuml
folder folder2 {
    folder folder3 [
        text bla bla
    ]
    artifact art2 [
        more text
    ]
}

note bottom of folder2
    Here you can have some explanation with
    ====
    --Markdown-- //formatting// ~~elements~~
end note
@enduml