PlantUML:是否可以在嵌套组件中添加文本?

10

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

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

渲染为

enter image description here

您也可以使用 folder(以及其他元素)通过嵌套它们来将其他项目分组:

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

enter image description here

但目前我看不到如何同时组合一个包含解释文本和嵌套元素的对象。

PlantUML是否支持这种方式?(如何实现?)

1个回答

10

我只能假设PlantUML试图尽可能地像UML。虽然可以向元素添加长描述([...]),但我几乎可以肯定它仅用于某些元素类型(如活动元素、用例等),这些元素通常不包含子元素。然而,在更正式的图表中,为了注释或进一步解释概念所需的任何“文本”都应作为注释或调用添加。

很久以前,我遇到过这个问题,也确实像你现在尝试做的那样做过。我翻阅了我的图表档案,并找到了一个非常接近你想要实现的示例。

因此,回答你的问题,将描述性文本和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规范;有关注释的更多详细信息,请参见此答案。不仅添加注释更容易,而且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

输入图像描述


第一种方法在我使用PlantUML 1.2018.11构建部署图时无法正常工作。虽然我还没有尝试其他类型的图表,但似乎由于某些原因,当涉及到rectangle<<desc>>时,skinparam无法被解析。我用一个简单的透明矩形和一个透明箭头来解决这个问题(在我的情况下可接受)。 第二种方法可以工作,但有时不太方便。(我只想让描述在相关对象内部。) - Alexander Ites

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接