PAYATHON 2026

PlantUML 如何将包放在实体左侧,并让包内两个实体水平并排?

数据阿明

将 U_ONDERZOEK 到两个明细实体的关系改为 left,再用一条带 right 的隐藏连线指定包内实体的水平顺序。布局引擎仍会结合整张图计算最终位置,需要在实际使用的渲染环境中确认。

替换末尾三条关系

删除原来的隐藏关系及两条 right 关系,替换为:

' 包内顺序:LAB 在左,RAD 在右
U_ONDERZOEK_LAB -[hidden]right-> U_ONDERZOEK_RAD

' 两个明细实体位于 U_ONDERZOEK 左侧
U_ONDERZOEK ||-left-o| U_ONDERZOEK_LAB : labdetail
U_ONDERZOEK ||-left-o| U_ONDERZOEK_RAD : raddetail

预期的相对位置如下:

DETAIL
┌───────────────────────────┐
│ U_ONDERZOEK_LAB   U_ONDERZOEK_RAD │   U_ONDERZOEK
└───────────────────────────┘

示意图只表示相对位置,不表示实体尺寸或连线路径。两个明细实体仍保留在原来的 package "Detail objecten" as DETAIL { ... } 中。

为什么要分别指定方向

原代码中的两条关系都从 U_ONDERZOEK 指向明细实体,使用 right 表达的是将明细实体安排在主实体右侧。改成 left 后,才与包位于左侧的目标一致。

[hidden] 只表示隐藏连线,原来的 -[hidden]- 没有明确指定两个明细实体的水平顺序。添加 right 后,就表达了 LAB 在左、RAD 在右的布局意图。方向关键字和隐藏关系的用法见 PlantUML 类图文档。

这里使用的 entity 属于 Information Engineering 图语法,可以使用类图的布局功能,见 PlantUML 实体图文档。

应用时注意什么

  • 保留现有的 top to bottom direction,先只修改上述三条关系,观察局部布局。
  • 保留 ||、o| 和关系标签;改变 left、right 不需要交换业务关系两端的基数。
  • 如果希望 RAD 在左、LAB 在右,交换隐藏连线两端即可。
  • 这些约束表达的是相对位置,不能保证固定坐标。如果完整图仍未达到预期,可以先仅保留 DETAIL、U_ONDERZOEK 和上述三条关系,再逐步恢复其他关系,定位影响布局的连接。

以上代码未在题目使用的在线编辑器中实际渲染,不能据此声称已验证最终布局。

备注:内容仅供参考。