如何在PlantUML组件图中实现含嵌套组件的中心布局?
解决PlantUML嵌套组件导致的布局混乱问题
当在中心矩形组件内添加嵌套元素后,原本的上下左右布局会出现混乱,这是因为PlantUML的布局引擎会重新计算包含内部组件的容器位置,破坏了原有的方向约束。以下是两种可行的解决方法:
方法一:调整容器内边距
通过增加中心容器的内边距,给内部组件预留足够空间,避免布局引擎过度偏移容器位置:
@startuml ' 给矩形容器添加内边距,容纳内部组件 skinparam rectangle { padding 20 } ' 定义参与者(用户) node Browser as Browser1 actor Benutzer as user ' 定义外部系统 node "Fremdsystem (Open Source)" as ExternalSystem1 node "Fremdsystem (zugekauft)" as ExternalSystem2 node "Fremdsystem (zugekauft)" as ExternalSystem3 ' 定义中心系统 rectangle "<size:10> <<system>>\n\n Hauptsystem" as HS { [Forum] } ' 用户与系统的交互 user -right-> Browser1 : " nutzt" Browser1 -down-> HS : " HTTPS" ' 外部系统与系统的交互 ExternalSystem1 <-right- HS : " HTTPS" ExternalSystem2 <-left- HS : " HTTPS" ExternalSystem3 <-up- HS : " SMTP" @enduml
方法二:改用Component组件并指定布局方向
使用component代替rectangle(更贴合组件图语义),同时添加布局方向指令引导引擎维持预期结构:
@startuml ' 指定全局布局方向,辅助维持上下左右结构 top to bottom direction ' 定义参与者(用户) node Browser as Browser1 actor Benutzer as user ' 定义外部系统 node "Fremdsystem (Open Source)" as ExternalSystem1 node "Fremdsystem (zugekauft)" as ExternalSystem2 node "Fremdsystem (zugekauft)" as ExternalSystem3 ' 定义中心系统(使用component) component "<size:10> <<system>>\n\n Hauptsystem" as HS { [Forum] } ' 用户与系统的交互 user -right-> Browser1 : " nutzt" Browser1 -down-> HS : " HTTPS" ' 外部系统与系统的交互 HS -right-> ExternalSystem1 : " HTTPS" HS -left-> ExternalSystem2 : " HTTPS" HS -up-> ExternalSystem3 : " SMTP" @enduml
内容的提问来源于stack exchange,提问作者jwi
相关产品推荐
相关产品推荐

