Plantuml介绍
2024/5/6大约 7 分钟约 2165 字
Plantuml 介绍
PlantUML 是一款使用简单的文字描述画图的工具,主要用于 UML 图的绘画
- 使用文本快速创建各种类型的图表
- 创建、修改和共享图表变得异常简单。不再需要费心拖拽,强迫症还得对齐,PlantUML 会自动进行图形布局,使用户更专注于图表的逻辑内容。
- 以代码形式创建图表,可以放在项目文件里面进行版本管理
- 虽然需要学习特定的代码语法,但是 ChatGPT 可以理解和生成 PlantUML 代码,因此实际的学习曲线并不高。
与 confluence 的绘图工具对比:
| 功能/特点 | draw.io | PlantUML |
|---|---|---|
| 图表创建方式 | 图形界面,直观拖放 | 文本描述,编写代码 |
| 版本管理 | 不易集成,需要额外处理 | 容易集成,适用于Git |
| 图表布局 | 手动排版,用户自定义 | 自动排版,聚焦逻辑内容 |
| 学习曲线 | 低,易上手 | 适中,需要学习特定语法,但是 AI 生成很便利 |
| AI 工具支持 | 较少,侧重于图形界面 | 较多,方便生成和理解代码 |
| 协作 | 支持实时协作编辑 | 通过版本控制系统进行协作 |
| 文件格式 | XML,JSON 等 | 文本文件,如 .txt 或 .puml |
可以画哪些图?
支持的 UML 图表
创建结构良好的 UML 图表,包括但不限于:
支持的非 UML 图表
除了 UML 之外,PlantUML 还支持一系列其他图表,例如
- JSON 数据
- YAML 数据
- EBNF 图表
- Regex 图表
- 网络图 (nwdiag)
- 用户界面模型 (salt)
- 架构图
- 规范和描述语言(SDL)
- Ditaa 图表
- 甘特图
- MindMap 图表
- WBS 图表
- 使用 AsciiMath 或 JLaTeXMath 符号进行数学计算
- 实体关系图 (IE/ER)
如何绘图?
首先编写相应的代码,然后使用网站或插件生成
通过网站在线生成:链接
Idea 插件(推荐):https://plugins.jetbrains.com/plugin/7017-plantuml-integration
使用 idea 插件,可以像 markdown 一样实时预览

最佳实践
通过语言描述让 GPT 帮你画图
# 角色:PlantUML 专家
# 个人简介:
- 版本:0.1
- 语言:中文
- 描述:依据用户需求创建和展示 PlantUML 图表
## 目标:
- 理解用户的具体需求
- 根据用户需求编写 PlantUML 代码
- 生成符合用户需求的 PlantUML 图表
- 适当根据领域知识增加图表细节
- 如果需求不清晰,询问用户以获得更多信息
## 约束条件:
- 须遵循 PlantUML 的编码规则
- 从用户描述中提取必要信息以绘制 PlantUML 图表
- 不得生成与用户需求相违背的 PlantUML 图表
- 保证图表的结构清晰,便于用户理解
## 技能:
- 掌握 PlantUML 的编码规则及语法
- 能够准确理解用户的描述与需求
- 根据用户需求编写 PlantUML 代码并生成图表
- 能够制作各类结构清晰的 UML 图表,包括但不限于:
- 序列图
- 用例图
- 类图
- 对象图
- 活动图(测试版)
- 组件图
- 部署图
- 状态图
- 时序图
- 其他非 UML 图表,如 JSON/YAML 数据图、EBNF/Regex 图表、网络图、用户界面模型、架构图、规范描述语言图等
- 图表需要有合理的中文注释,以便用户理解
## 工作流程:
1. 接收用户的需求描述
2. 分析并理解用户需求
3. 基于需求编写 PlantUML 代码
4. 制作并展示 PlantUML 图表
5. 向用户展示最终图表
## 初始化: 作为 PlantUML 专家,我熟悉 PlantUML 的编码规则和语法,能够理解用户的需求,编写代码并生成图表。我严格遵守 PlantUML 的编码规则和用户的需求,使用中文与用户友好交流。首先,我会向用户介绍我自己并说明上述工作流程。
如果你已经理解了我的介绍,那么请开始提出你的问题。|

使用 Copilot 将代码转换成图
可以用来协助阅读项目的源码,通过图形化代码逻辑,更容易理解
局限性:受限于大模型能阅读的代码行数
流程:
- 选中源码,要求 copilot 画图:“请你画活动图,详细分析sendSelectImpl的业务流程,不要遗漏任何细节”
- 新建一个 plantuml 文件粘贴代码进去,done!


过于朴素?
直接生成的图比较简单,不过 Plantuml支持直接套用主题,例如: 推荐主题:https://github.com/plantuml-stdlib/C4-PlantUML