1. PlantUML和时序图简要介绍

  • PlantUML 可以通过简洁的文本描述语言来生成 UML图(如用例图、类图、时序图等)。
  • 时序图(Sequence Diagram)属于 UML 的行为图,用于展示系统中对象或参与者之间交互的时间顺序。常用于展示用例执行过程、建模系统行为或通信流程以及辅助分析系统的逻辑结构和模块责任。

2. 常用语法

2.1 声明参与者

在 PlantUML 中,时序图的构建始于声明参与者(participants)。不同关键字代表不同类型的参与者,其视觉表现也有所区别。

声明关键字 有什么用 长什么样 适用场景
actor 外部参与者 小人图标 用户、第三方服务等系统外部对象
participant 默认,未指定类型 矩形 通用场景
boundary 接口或系统边界 圆角矩形 Web 界面、接口、UI 层
control 控制流处理 小圆角矩形 Controller、Service 层
entity 数据或业务实体 六边形 POJO、模型类
database 持久化存储 圆柱形 数据库、缓存
collections 数据集合容器 多层堆叠图形 List、Map 等集合

定义参与者示例

默认会按照参与者声明的顺序进行排序, 也可以使用 order 关键字排序,order 后面的数字数值越小,越靠前,数值一样大,按照声明顺序。

在这里插入图片描述

别名:还可以使用as给他们起别名方便后面使用,-> 表示发送消息,--> 表示返回消息。

  1. 取别名以后原名字不能再使用;
  2. 声明参与者的时候,如果名字中间有空格或者想使用除字母、数字外的其他字符,可以使用双引号"" 将名字括起来,但是别名是不允许有双引号。

在这里插入图片描述

2.2 消息发送
2.2.1 箭头样式

除了2.1部分介绍的基本箭头样式,还可以选择样式来表达不同信息:

消息作用 使用方式
表示一条丢失的消息 末尾加 x
让箭头只有上半部分或者下半部分 <>替换成\或者 /
细箭头 将箭头标记写两次 (如 >>//)
箭头末尾加圈 ->o
双向箭头 <->

在这里插入图片描述

注:消息太长,可以使用 \n 进行换行。

2.2.2 消息编号

可以使用autonumber 自动对消息进行编号,其中:

  • autonumber X 表示从指定的数字 X 开始编号 ;
  • autonumber X Y 表示从指定数字 X 开始编号,步长为Y
    在这里插入图片描述
2.3 组合信息

下面这些关键字都是用来组合信息的,根据场景需要选择对应的关键字,使用 end 结束这个一个信息组合。

关键字 有什么用 类比Java场景
alt / else 条件分支,类似 if / else if / else
opt 可选执行逻辑,仅一个条件块 if (单分支)
loop 重复执行某段流程 for / while
par 并行执行多个片段 多线程 / 并发结构
break 提前跳出流程(一般配合 loop 使用) break
critical 标记关键区段,避免并发冲突 synchronized / 临界区
group 自定义分组并加标题(无语义约束) 注释区 / 分区块
使用案例

下面以一个点外卖的例子作为这些关键字的使用示例。
在这里插入图片描述
简要说明:
​​group​​:把整个下单流程分组
​​alt/else​​:选择支付方式(微信或支付宝)
​​opt​​:可选步骤(用优惠券)
​​critical​​:关键步骤(商家必须接单)
​​loop + break​​:循环等待接单,超时则跳出
​​par​​:商家做餐和平台通知用户​​同时进行​

2.4 生命线

activate表示参与者的生命活动激活
deactivate表示参与者的生命活动撤销
在这里插入图片描述

3. 美化

3.1 主题美化

具体参考plantuml 内置 theme 整理

3.2 颜色

参与者#为参与者设置颜色,可以是 RGB 或者颜色对应的单词。
箭头:在箭头中间插入 [#color] 可以设置箭头颜色。
在这里插入图片描述

3.3 分割符

== xxx == 可以分割流程。
在这里插入图片描述

3.4 间隔

如果信息过于密集,可以使用 ||| 来增加空间,或者 ||size|| 指定空间大小。

3.5 skinparam 外观参数

skinparam handwritten true 开启手绘风格
skinparam backgroundColor #颜色RGB 指定背景颜色
skinparam ParticipantPadding 数值 指定参与者的外边距
skinparam BoxPadding 数值 指定 box 的外边距

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐