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 和上述三条关系,再逐步恢复其他关系,定位影响布局的连接。
以上代码未在题目使用的在线编辑器中实际渲染,不能据此声称已验证最终布局。
备注:内容仅供参考。
