什么是 PlantUML
PlantUML 是一个开源工具,允许用户使用简单直观的文本描述来快速创建 UML 图表。它基于纯文本语法,能够生成多种类型的图表,包括时序图、用例图、类图、活动图、组件图、状态图等。
PlantUML 的核心理念是:用代码画图,让图表版本可控。
核心特点
- • 文本驱动:使用简单的文本语法描述图表
- • 版本控制友好:纯文本格式可轻松集成到 Git 等版本控制系统
- • 多格式输出:支持 PNG、SVG、PDF、LaTeX 等多种输出格式
- • 跨平台:基于 Java,可在 Windows、Linux、macOS 上运行
- • 集成性强:可集成到各种编辑器、IDE 和文档系统中
为什么选择 PlantUML
传统画图工具的痛点
-
- 版本控制困难:二进制文件难以追踪变更
-
- 协作不便:多人编辑容易冲突
-
- 维护成本高:图表修改繁琐,容易与代码脱节
-
- 格式不统一:不同工具导致风格不一致
PlantUML 的优势
| 特性 | PlantUML | 传统图形工具 |
|---|---|---|
| 版本控制 | ✅ 完美支持 | ❌ 困难 |
| 代码审查 | ✅ 可以 Code Review | ❌ 不可以 |
| 自动布局 | ✅ 智能布局 | ❌ 手动调整 |
| 快速修改 | ✅ 修改文本即可 | ❌ 需要拖拽调整 |
| 团队协作 | ✅ 易于合并 | ❌ 容易冲突 |
| 文档集成 | ✅ 可嵌入 Markdown | ❌ 需要截图 |
安装与配置
方法一:在线使用
访问 PlantUML 在线编辑器 即可直接使用,无需安装。
方法二:本地安装
前置要求
PlantUML 基于 Java,需要先安装 Java 运行环境:
1# 检查 Java 版本(需要 Java 8 或更高版本) 2java -version 3
下载 PlantUML
-
- 从 官方网站 下载
plantuml.jar
- 从 官方网站 下载
-
- 或使用命令下载:
1curl -L -o plantuml.jar https://github.com/plantuml/plantuml/releases/download/v1.2023.13/plantuml-1.2023.13.jar 2
基本使用
1# 生成 PNG 图片 2java -jar plantuml.jar diagram.puml 3 4# 生成 SVG 图片 5java -jar plantuml.jar -tsvg diagram.puml 6 7# 监控文件变化自动生成 8java -jar plantuml.jar -gui 9
方法三:编辑器插件
Visual Studio Code
-
- 安装插件:搜索 “PlantUML”
-
- 安装 Graphviz(用于复杂布局):
1# Windows (使用 Chocolatey) 2choco install graphviz 3# macOS 4brew install graphviz 5# Ubuntu/Debian 6sudo apt-get install graphviz
-
- 预览快捷键:
Alt + D
- 预览快捷键:
IntelliJ IDEA
-
- 打开
Settings→Plugins
- 打开
-
- 搜索 “PlantUML integration”
-
- 安装并重启 IDE
Sublime Text
安装 PlantUML 插件即可。
基础语法
通用规则
所有 PlantUML 图表都遵循以下基本结构:
1@startuml 2' 这是注释 3' 图表内容写在这里 4@enduml 5
注释
1@startuml 2' 单行注释使用单引号 3 4/' 5多行注释 6使用 /' 和 '/ 7'/ 8 9@enduml 10
样式与主题
1@startuml 2!theme cerulean-outline 3' 其他可用主题:amiga, blueprint, carbon-gray, mars, materia 等 4 5skinparam backgroundColor #EEEBDC 6skinparam handwritten true 7@enduml 8
图表类型详解
时序图
时序图用于展示对象之间的交互顺序,是软件设计中最常用的图表之一。
基础示例
1@startuml 2' 参与者声明 3actor 用户 4participant "前端页面" as Frontend 5participant "后端API" as Backend 6database "数据库" as DB 7 8' 交互流程 9用户 -> Frontend: 输入用户名密码 10Frontend -> Backend: POST /api/login 11Backend -> DB: 查询用户信息 12DB --> Backend: 返回用户数据 13Backend --> Frontend: 返回 JWT Token 14Frontend --> 用户: 登录成功 15@enduml 16
高级特性
1@startuml 2title 用户支付流程 3 4actor 用户 5participant "前端" as F 6participant "订单服务" as O 7participant "支付服务" as P 8participant "第三方支付" as T 9database Redis 10database MySQL 11 12用户 -> F: 点击支付 13activate F 14 15F -> O: 创建订单 16activate O 17O -> MySQL: 保存订单 18O -> Redis: 缓存订单信息 19O --> F: 返回订单号 20deactivate O 21 22F -> P: 发起支付请求 23activate P 24P -> T: 调用支付接口 25activate T 26 27alt 支付成功 28 T --> P: 支付成功回调 29 P -> O: 更新订单状态 30 P --> F: 支付成功 31 F --> 用户: 显示支付成功 32else 支付失败 33 T --> P: 支付失败 34 P --> F: 支付失败 35 F --> 用户: 显示失败原因 36end 37 38deactivate T 39deactivate P 40deactivate F 41@enduml 42
关键语法说明:
- •
->:实线箭头 - •
-->:虚线箭头(返回) - •
activate/deactivate:激活/停用生命线 - •
alt/else/end:条件分支 - •
loop/end:循环 - •
par/end:并行处理
用例图
用例图描述系统功能和用户的交互关系。
1@startuml 2left to right direction 3skinparam packageStyle rectangle 4 5actor 顾客 6actor 收银员 7actor 管理员 8 9rectangle 电商系统 { 10 顾客 -- (浏览商品) 11 顾客 -- (添加购物车) 12 顾客 -- (下单支付) 13 顾客 -- (查看订单) 14 15 收银员 -- (处理订单) 16 收银员 -- (处理退款) 17 18 管理员 -- (管理商品) 19 管理员 -- (查看报表) 20 管理员 -- (管理用户) 21 22 (下单支付) .> (添加购物车) : <<include>> 23 (处理退款) .> (处理订单) : <<extend>> 24} 25@enduml 26
关键元素:
- •
actor:参与者 - •
(用例名):用例 - •
--:关联关系 - •
.>:依赖关系(include、extend)
类图
类图是面向对象设计的核心图表,展示类的结构和类之间的关系。
1@startuml 2title 电商系统类图 3 4abstract class User { 5 # id: Long 6 # username: String 7 # email: String 8 # createTime: Date 9 -- 10 + login(): boolean 11 + logout(): void 12 # validateEmail(): boolean 13} 14 15class Customer extends User { 16 - address: String 17 - phone: String 18 -- 19 + placeOrder(Order): void 20 + viewOrderHistory(): List<Order> 21} 22 23class Admin extends User { 24 - role: String 25 -- 26 + manageProducts(): void 27 + viewReports(): void 28} 29 30class Product { 31 - id: Long 32 - name: String 33 - price: BigDecimal 34 - stock: Integer 35 - category: Category 36 -- 37 + updateStock(int): void 38 + getDiscountPrice(): BigDecimal 39} 40 41class Order { 42 - orderId: String 43 - customer: Customer 44 - orderDate: Date 45 - status: OrderStatus 46 - totalAmount: BigDecimal 47 -- 48 + calculateTotal(): BigDecimal 49 + cancel(): void 50 + pay(): boolean 51} 52 53class OrderItem { 54 - product: Product 55 - quantity: Integer 56 - price: BigDecimal 57 -- 58 + getSubTotal(): BigDecimal 59} 60 61enum OrderStatus { 62 PENDING 63 PAID 64 SHIPPED 65 COMPLETED 66 CANCELLED 67} 68 69class Category { 70 - id: Long 71 - name: String 72 - parentCategory: Category 73} 74 75' 关系定义 76Customer "1" -- "*" Order : places > 77Order "1" *-- "*" OrderItem : contains 78OrderItem "*" --> "1" Product : refers to 79Product "*" --> "1" Category : belongs to 80Order --> OrderStatus : has 81 82note right of Order 83 订单创建后24小时内 84 未支付将自动取消 85end note 86 87note top of Product 88 商品价格支持促销折扣 89 库存不足时无法下单 90end note 91 92@enduml 93
关系类型:
- •
--|>:泛化(继承) - •
..|>:实现(接口) - •
-->:关联 - •
*--:组合 - •
o--:聚合 - •
..>:依赖
可见性修饰符:
- •
-:private - •
#:protected - •
~:package - •
+:public
活动图
活动图描述业务流程或算法逻辑。
1@startuml 2title 用户注册流程 3 4start 5 6:用户访问注册页面; 7 8:填写注册信息; 9note right 10 包括: 11 * 用户名 12 * 邮箱 13 * 密码 14end note 15 16:提交注册表单; 17 18if (表单验证通过?) then (是) 19 :保存用户信息; 20 21 fork 22 :发送欢迎邮件; 23 fork again 24 :发送短信通知; 25 fork again 26 :记录注册日志; 27 end fork 28 29 :跳转到登录页面; 30 :显示注册成功提示; 31 32else (否) 33 :显示错误信息; 34 35 if (重试次数 < 3?) then (是) 36 :返回注册页面; 37 :保留已填写信息; 38 else (否) 39 :锁定注册; 40 :显示联系客服提示; 41 stop 42 endif 43 44endif 45 46stop 47 48@enduml 49
常用元素:
- •
start/stop:开始/结束 - •
:活动;:活动节点 - •
if/then/else/endif:条件判断 - •
while/endwhile:循环 - •
fork/fork again/end fork:并行处理 - •
partition:泳道分区
带泳道的活动图
1@startuml 2|用户| 3start 4:提交请假申请; 5 6|直属主管| 7:审批申请; 8 9if (是否批准?) then (批准) 10 |HR部门| 11 :记录请假信息; 12 :更新考勤系统; 13 14 |用户| 15 :收到批准通知; 16 stop 17else (拒绝) 18 |用户| 19 :收到拒绝通知; 20 :查看拒绝原因; 21 stop 22endif 23 24@enduml 25
组件图
组件图展示系统的物理组件及其依赖关系。
1@startuml 2title 微服务架构组件图 3 4package "前端层" { 5 [Web前端] as Web 6 [移动端APP] as Mobile 7} 8 9package "网关层" { 10 [API Gateway] as Gateway 11} 12 13package "服务层" { 14 [用户服务] as UserService 15 [订单服务] as OrderService 16 [商品服务] as ProductService 17 [支付服务] as PaymentService 18} 19 20package "基础设施层" { 21 [认证中心] as Auth 22 [配置中心] as Config 23 [服务注册中心] as Registry 24} 25 26database "MySQL集群" { 27 [用户数据库] 28 [订单数据库] 29 [商品数据库] 30} 31 32cloud "第三方服务" { 33 [微信支付] 34 [阿里云OSS] 35} 36 37Web --> Gateway 38Mobile --> Gateway 39 40Gateway --> UserService 41Gateway --> OrderService 42Gateway --> ProductService 43 44OrderService --> PaymentService 45PaymentService --> [微信支付] 46 47UserService --> Auth 48OrderService --> Auth 49 50UserService --> Registry 51OrderService --> Registry 52ProductService --> Registry 53PaymentService --> Registry 54 55UserService --> [用户数据库] 56OrderService --> [订单数据库] 57ProductService --> [商品数据库] 58 59@enduml 60
状态图
状态图描述对象的生命周期和状态转换。
1@startuml 2title 订单状态流转图 3 4[*] --> 待支付 : 创建订单 5 6待支付 --> 已支付 : 支付成功 7待支付 --> 已取消 : 超时/手动取消 8待支付 --> 已取消 : 库存不足 9 10已支付 --> 待发货 : 进入发货队列 11已支付 --> 退款中 : 申请退款 12 13待发货 --> 已发货 : 发货 14待发货 --> 退款中 : 申请退款 15 16已发货 --> 已签收 : 确认收货 17已发货 --> 退款中 : 申请退货 18 19已签收 --> 已完成 : 系统自动确认 20已签收 --> 售后中 : 申请售后 21 22售后中 --> 已完成 : 售后完成 23 24退款中 --> 已退款 : 退款成功 25退款中 --> 已支付 : 退款失败 26 27已取消 --> [*] 28已完成 --> [*] 29已退款 --> [*] 30 31待支付 : entry / 发送支付通知 32待支付 : exit / 释放库存锁定 33 34已发货 : do / 物流跟踪 35已发货 : 预计3-5天送达 36 37@enduml 38
状态语法:
- •
entry /:进入状态时执行 - •
exit /:离开状态时执行 - •
do /:在状态中持续执行
对象图
对象图展示特定时刻对象实例及其关系。
1@startuml 2title 订单对象实例图 3 4object 订单001 { 5 订单号 = "ORD20231015001" 6 订单日期 = "2023-10-15" 7 状态 = "已支付" 8 总金额 = 1299.00 9} 10 11object 客户张三 { 12 客户ID = "CUST001" 13 姓名 = "张三" 14 会员等级 = "金卡" 15} 16 17object 商品iPhone { 18 商品ID = "PROD001" 19 商品名称 = "iPhone 15" 20 价格 = 5999.00 21} 22 23object 商品保护壳 { 24 商品ID = "PROD002" 25 商品名称 = "iPhone保护壳" 26 价格 = 99.00 27} 28 29object 订单明细1 { 30 数量 = 1 31 单价 = 5999.00 32} 33 34object 订单明细2 { 35 数量 = 2 36 单价 = 99.00 37} 38 39客户张三 -- 订单001 40订单001 *-- 订单明细1 41订单001 *-- 订单明细2 42订单明细1 --> 商品iPhone 43订单明细2 --> 商品保护壳 44 45@enduml 46
部署图
部署图展示系统的物理部署架构。
1@startuml 2title 生产环境部署图 3 4node "负载均衡器" as LB { 5 [Nginx] as nginx 6} 7 8node "应用服务器集群" { 9 node "服务器1" as APP1 { 10 [应用实例1] as app1 11 } 12 13 node "服务器2" as APP2 { 14 [应用实例2] as app2 15 } 16 17 node "服务器3" as APP3 { 18 [应用实例3] as app3 19 } 20} 21 22node "数据库服务器" as DBMS { 23 database "MySQL主库" as DBMaster 24 database "MySQL从库1" as DBSlave1 25 database "MySQL从库2" as DBSlave2 26} 27 28node "缓存服务器" as CacheServer { 29 database "Redis集群" as redis 30} 31 32node "文件存储" as Storage { 33 [MinIO] as minio 34} 35 36cloud "CDN" as cdn 37 38nginx --> app1 39nginx --> app2 40nginx --> app3 41 42app1 --> DBMaster 43app2 --> DBMaster 44app3 --> DBMaster 45 46app1 --> DBSlave1 47app2 --> DBSlave2 48 49app1 --> redis 50app2 --> redis 51app3 --> redis 52 53app1 --> minio 54app2 --> minio 55app3 --> minio 56 57DBMaster -down-> DBSlave1 : 主从复制 58DBMaster -down-> DBSlave2 : 主从复制 59 60minio -up-> cdn : 静态资源分发 61 62@enduml 63
时间图
时间图展示对象状态随时间的变化。
1@startuml 2robust "Web服务器" as WEB 3robust "应用服务器" as APP 4robust "数据库服务器" as DB 5 6@0 7WEB is 空闲 8APP is 空闲 9DB is 空闲 10 11@100 12WEB is 处理请求 13@200 14APP is 查询数据 15@300 16DB is 执行SQL 17@400 18DB is 返回结果 19@500 20APP is 处理数据 21@600 22WEB is 返回响应 23@700 24WEB is 空闲 25APP is 空闲 26DB is 空闲 27 28@enduml 29
甘特图
甘特图用于项目进度管理。
1@startgantt 2title 项目开发计划 3 4Project starts 2023-10-01 5 6[需求分析] lasts 5 days 7[UI设计] lasts 7 days 8[原型制作] lasts 5 days 9 10[需求分析] -> [UI设计] 11[UI设计] -> [原型制作] 12 13[前端开发] lasts 15 days 14[后端开发] lasts 20 days 15[数据库设计] lasts 5 days 16 17[原型制作] -> [前端开发] 18[需求分析] -> [后端开发] 19[需求分析] -> [数据库设计] 20[数据库设计] -> [后端开发] 21 22[前端测试] lasts 5 days 23[后端测试] lasts 5 days 24[前端开发] -> [前端测试] 25[后端开发] -> [后端测试] 26 27[集成测试] lasts 7 days 28[前端测试] -> [集成测试] 29[后端测试] -> [集成测试] 30 31[上线部署] lasts 2 days 32[集成测试] -> [上线部署] 33 34[需求分析] is colored in Fuchsia/FireBrick 35[UI设计] is colored in GreenYellow/Green 36[前端开发] is colored in Cyan/Blue 37[后端开发] is colored in Cyan/Blue 38 39@endgantt 40
思维导图
PlantUML 也支持思维导图(Mind Map)。
1@startmindmap 2title 学习 PlantUML 3 4* PlantUML 5** 基础知识 6*** 安装配置 7*** 基本语法 8*** 编辑器集成 9** 图表类型 10*** 结构图 11**** 类图 12**** 组件图 13**** 部署图 14**** 对象图 15*** 行为图 16**** 用例图 17**** 时序图 18**** 活动图 19**** 状态图 20*** 其他 21**** 甘特图 22**** 思维导图 23**** 架构图 24** 高级特性 25*** 样式定制 26*** 主题应用 27*** 宏定义 28*** 包含文件 29** 实践应用 30*** 技术文档 31*** 项目设计 32*** 代码注释 33*** 团队协作 34 35@endmindmap 36
高级特性
1. 样式定制
1@startuml 2skinparam class { 3 BackgroundColor PaleGreen 4 ArrowColor SeaGreen 5 BorderColor SpringGreen 6 FontName Arial 7 FontSize 14 8} 9 10skinparam stereotypeCBackgroundColor YellowGreen 11 12class Example { 13 + field: String 14 + method(): void 15} 16@enduml 17
2. 使用变量和宏
1@startuml 2!define ENTITY(name) class name << (E,#FFAAAA) >> 3!define SERVICE(name) class name << (S,#AAFFAA) >> 4 5ENTITY(User) 6ENTITY(Order) 7SERVICE(UserService) 8SERVICE(OrderService) 9 10User --> UserService 11Order --> OrderService 12@enduml 13
3. 包含外部文件
1@startuml 2!include common-styles.puml 3!include entities.puml 4 5' 使用已定义的样式和类 6@enduml 7
4. 使用标准库
1@startuml 2!include <aws/common> 3!include <aws/Storage/AmazonS3/AmazonS3> 4!include <aws/Compute/AmazonEC2/AmazonEC2> 5 6AmazonEC2(ec2, "应用服务器", "") 7AmazonS3(s3, "文件存储", "") 8 9ec2 --> s3 10@enduml 11
5. 预处理功能
1@startuml 2!$company = "我的公司" 3!$debug = %true() 4 5!if $debug 6 title $company + " - 开发环境" 7!else 8 title $company + " - 生产环境" 9!endif 10 11@enduml 12
6. 图表布局控制
1@startuml 2' 从左到右布局 3left to right direction 4 5' 隐藏某些元素 6hide empty members 7hide circle 8 9' 页面设置 10scale 1.5 11skinparam dpi 300 12 13@enduml 14
实际应用场景
1. 技术文档编写
在 Markdown 文档中嵌入 PlantUML:
1# 系统架构设计 2 3## 时序图 4 5```plantuml 6@startuml 7Alice -> Bob: 你好 8Bob --> Alice: 你好 9@enduml
### 2\. 代码注释
在代码中使用 PlantUML 描述逻辑:
```markdown
/**
* 用户登录流程
*
* @startuml
* actor User
* User -> LoginController: login(username, password)
* LoginController -> UserService: authenticate()
* UserService -> Database: queryUser()
* Database --> UserService: User
* UserService --> LoginController: Token
* LoginController --> User: Success
* @enduml
*/
public void login(String username, String password) {
// 实现代码
}
3. Git 版本控制
1# 将 .puml 文件加入版本控制 2git add docs/diagrams/*.puml 3 4# 在 Pull Request 中可以看到图表的文本差异 5git diff docs/diagrams/architecture.puml 6
4. CI/CD 集成
在 GitLab CI 或 GitHub Actions 中自动生成图表:
1# .github/workflows/generate-diagrams.yml 2name: Generate PlantUML Diagrams 3 4on: [push] 5 6jobs: 7 build: 8 runs-on: ubuntu-latest 9 steps: 10 - uses: actions/checkout@v2 11 - name: Generate PlantUML 12 uses: grassedge/generate-plantuml-[email protected] 13 with: 14 path: docs/diagrams 15 message: "Auto-generated diagrams" 16 - name: Commit changes 17 run: | 18 git config user.name github-actions 19 git config user.email [email protected] 20 git add . 21 git commit -m "Update diagrams" || exit 0 22 git push 23
5. Wiki 和 Confluence 集成
许多 Wiki 系统支持 PlantUML 插件,可以直接渲染图表。
最佳实践
1. 文件组织
1project/ 2├── docs/ 3│ ├── diagrams/ 4│ │ ├── architecture/ 5│ │ │ ├── overview.puml 6│ │ │ └── components.puml 7│ │ ├── sequence/ 8│ │ │ ├── login-flow.puml 9│ │ │ └── payment-flow.puml 10│ │ └── class/ 11│ │ ├── domain-model.puml 12│ │ └── service-layer.puml 13│ └── README.md 14└── styles/ 15 └── common.puml 16
2. 命名规范
- • 文件名:使用小写字母,单词用连字符分隔
- •
user-login-sequence.puml - •
order-service-class-diagram.puml
- •
- • 图表标题:清晰描述图表内容
title 用户登录时序图 - v1.2
- • 元素命名:使用有意义的名称
1class UserService 2participant "订单服务" as OrderService
3. 注释和文档
1@startuml 2title 订单处理流程 3 4' ======================================== 5' 作者:张三 6' 日期:2023-10-15 7' 版本:1.0 8' 描述:展示从下单到支付的完整流程 9' ======================================== 10 11note right of Order 12 订单创建后需要在30分钟内完成支付 13 否则将自动取消并释放库存 14end note 15 16@enduml 17
4. 保持简洁
- • 避免在一个图表中包含过多信息
- • 复杂系统应拆分为多个图表
- • 每个图表聚焦一个核心主题
5. 使用样式一致性
创建共享样式文件:
1' common-styles.puml 2@startuml 3skinparam backgroundColor #FFFFFF 4skinparam classBackgroundColor #E8F5E9 5skinparam classBorderColor #4CAF50 6skinparam classFontSize 12 7skinparam classFontName Microsoft YaHei 8 9skinparam sequenceArrowColor #2196F3 10skinparam sequenceLifeLineBorderColor #1976D2 11 12skinparam activityStartColor #4CAF50 13skinparam activityEndColor #F44336 14skinparam activityBackgroundColor #FFF9C4 15skinparam activityBorderColor #FBC02D 16 17@enduml 18
在其他文件中引用:
1@startuml 2!include ../styles/common-styles.puml 3 4' 你的图表内容 5@enduml 6
6. 版本管理
在图表中记录版本信息:
1@startuml 2header 3 版本: 2.1 4 修改日期: 2023-10-15 5 修改人: 李四 6end header 7 8footer Page %page% of %lastpage% 9 10@enduml 11
7. 自动化生成
创建脚本批量生成图片:
1#!/bin/bash 2# generate-all.sh 3 4PUML_DIR="./diagrams" 5OUTPUT_DIR="./output" 6 7mkdir -p $OUTPUT_DIR 8 9for file in $PUML_DIR/**/*.puml; do 10 echo "Processing $file..." 11 java -jar plantuml.jar -o $OUTPUT_DIR -tsvg $file 12done 13 14echo "All diagrams generated!" 15
常见问题与解决方案
1. 中文显示问题
如果中文显示为方框,需要配置字体:
1@startuml 2skinparam defaultFontName Microsoft YaHei 3' 或者 4skinparam defaultFontName SimHei 5@enduml 6
2. 图表太大
1@startuml 2scale 0.8 3' 或者 4scale 800 width 5' 或者 6scale 600 height 7@enduml 8
3. 箭头方向控制
1@startuml 2' 强制从左到右 3A -right-> B 4 5' 强制从上到下 6C -down-> D 7 8' 强制从右到左 9E -left-> F 10 11' 强制从下到上 12G -up-> H 13@enduml 14
4. 隐藏不必要的元素
1@startuml 2hide empty members 3hide circle 4hide stereotype 5@enduml 6
总结
PlantUML 是一个强大且灵活的工具,特别适合:
✅ 版本控制:纯文本格式,完美集成 Git
✅ 快速迭代:修改文本即可,无需拖拽
✅ 团队协作:易于代码审查和合并
✅ 文档同步:图表与代码放在一起,不易脱节
✅ 自动化:可集成到 CI/CD 流程
虽然 PlantUML 需要学习一定的语法,但其带来的效率提升和版本控制便利性远超传统的图形化工具。对于需要频繁更新和维护技术文档的团队来说,PlantUML 是一个理想的选择。
参考资源
- • 官方网站:plantuml.com/zh/
- • 官方文档:plantuml.com/zh/guide
- • 在线编辑器:www.plantuml.com/plantuml/um…
- • GitHub 仓库:github.com/plantuml/pl…
- • 标准库:github.com/plantuml/pl…
- • Real World PlantUML:real-world-plantuml.com/ (示例库)
附录:常用命令速查表
| 图表类型 | 开始标记 | 结束标记 |
|---|---|---|
| 时序图 | @startuml | @enduml |
| 用例图 | @startuml | @enduml |
| 类图 | @startuml | @enduml |
| 活动图 | @startuml | @enduml |
| 状态图 | @startuml | @enduml |
| 甘特图 | @startgantt | @endgantt |
| 思维导图 | @startmindmap | @endmindmap |
箭头类型
| 符号 | 说明 |
|---|---|
| -> | 实线箭头 |
| --> | 虚线箭头 |
| ->> | 实线双箭头 |
| -->> | 虚线双箭头 |
| - | 半箭头 |
关系类型(类图)
| 符号 | 关系 |
|---|---|
| `< | –` |
| `< | …` |
| *-- | 组合 |
| o-- | 聚合 |
| --> | 关联 |
| ..> | 依赖 |
《PlantUML 完整教程:从入门到精通》 是转载文章,点击查看原文。
