PlantUML:可以使用文本嵌套组件吗?

时间:2017-08-21 10:24:15

标签: syntax nested plantuml

正如我从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 个答案:

答案 0 :(得分:3)

我只能假设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

enter image description here

正如您将注意到的,连接用于调整文本放置,可能需要一些更复杂的finagling取决于文本的大小和元素的数量。

从那些早期开始,我就接近了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

enter image description here