理解系统交互:UML时序图

时序图

时序图(Sequence Diagram),又名序列图,是一种交互图,它显示了进程如何相互操作以及操作顺序。

Mermaid画时序图

文档
在线画图

基本结构示例

客户端 服务器 登录请求 响应结果 客户端 服务器

text 复制代码
sequenceDiagram
    participant A as 客户端
    participant B as 服务器
    A->>B: 登录请求
    B-->>A: 响应结果

基本元素

  • 参与者: participant Aactor A,后加as添加别名,如:actor A as 小明
    • 在指令前添加 createdestroy 创建和销毁角色,如:create participant Carldestroy Carl
  • 消息:-实线,--虚线
    • 实线,无箭头: ->
    • 虚线,无箭头: -->
    • 实线带箭头: ->>
    • 虚线带箭头: -->>
    • 实线,有双向箭头 (v11.0.0+):<<->>
    • 虚线,有双向箭头 (v11.0.0+):<<-->>
    • 实线,末端带叉号:-x
    • 虚线,末端带叉号:--x
    • 实线,末端带开放箭头 (异步):-)
    • 虚线,末端带开放箭头 (异步):--)
  • 给每个箭头添加序列号:autonumber
  • 激活和停用框/角色: activatedeactivate
    • 还可以通过在消息箭头后附加 +/- 后缀来使用,如:
      Alice->>John: ... activate John 等同于 Alice->>+John:...
    • 对于同一个角色,可以重复激活,激活样式会堆叠表示
  • 注释: Note left of, Note right of, Note over则横跨2个参与者
    • 编辑器忽略内容型注释:以 %%(双百分号)为前缀
  • 换行:<br/>
  • 循环: loop [文本]
  • 条件分支: alt [文本]else [文本]
  • 可选路径: opt [文本]
  • 并行路径: par [文本],用and添加多个路径,可以嵌套
  • 添加分组/方框:box,box后加方框颜色,默认透明
  • 自动发生并带条件处理的操作:critical [文本],用option添加条件(可省)
  • 中断:break [文本]
  • 背景高亮:rect rgb(191, 223, 255)
  • 转义字符:格式类似这样#9829;
  • 给角色添加弹出式菜单添加链接:links actorname:{"链接名字":"链接"},可添加多个链接,点击角色弹出菜单显示

注意 :像循环、分支、方框类会换行的元素,最后面需要加end结束。

复杂时序图示例

小明 抖音 服务器 数据库 小明起床刷手机 启动应用 请求认证 查询用户 返回用户数据 认证成功 显示仪表板 小明美滋滋 认证失败 显示错误 小明哭唧唧 alt 用户有效 用户无效 频繁请求 一直响应 loop 每分钟 小明间接和系统服务器、数据库交互 小明 抖音 服务器 数据库

text 复制代码
sequenceDiagram
    actor 用户 as 小明
    participant 客户端 as 抖音
    participant 服务器
    participant 数据库

    Note left of 用户: 小明起床刷手机
    用户->>客户端: 启动应用
    activate 客户端
    
    客户端->>服务器: 请求认证
    activate 服务器
    
    服务器->>数据库: 查询用户
    activate 数据库
    数据库-->>服务器: 返回用户数据
    deactivate 数据库
    
    alt 用户有效
        服务器-->>客户端: 认证成功
        客户端-->>用户: 显示仪表板
	    Note right of 用户: 小明美滋滋
    else 用户无效
        服务器-->>客户端: 认证失败
        客户端-->>用户: 显示错误
	    Note right of 用户: 小明哭唧唧
    end
    rect rgb(191, 223, 255)
	    loop 每分钟
	        用户->>客户端: 频繁请求
	        客户端-->>用户: 一直响应
	    end
    end
    
	Note over 用户,数据库: 小明间接和系统服务器、数据库交互
    
    deactivate 服务器
    deactivate 客户端

PlantUML画时序图

功能较多,语法复杂点,效果更灵活,效果示例如下,有需要可以深入了解一下
文档
在线画图

复杂图示例

text 复制代码
@startuml
' 设置标题和页脚
title PlantUML 时序图综合示例
footer 包含所有核心元素用法

' 定义参与者(多种类型)
actor 用户 as User #blue
participant "客户端" as Client
control "服务控制器" as Service
entity "数据库" as DB
database "缓存系统" as Cache
collections "消息队列" as MQ
boundary "API网关" as Gateway

' 初始消息
User -> Gateway : 提交请求
activate Gateway

' 分组示例
group 认证流程
    Gateway -> Service : 验证请求
    activate Service #LightBlue
    
    ' 条件分支
    alt 验证成功
        Service -> DB : 查询数据
        activate DB #LightGreen
        DB --> Service : 返回结果
        deactivate DB
    else 验证失败
        Service -->> User : 返回错误
        deactivate Service
        return
    end
end

' 创建新对象(正确用法)
create Service
Gateway -> Service ** : 创建服务实例
activate Service

' 异步消息
Service ->> MQ : 发布事件
activate MQ #FFFFCC

' 激活嵌套
Service -> Service : 内部处理
activate Service #CCCCCC
Service --> Service : 完成
deactivate Service

' 循环分组
loop 3 次重试
    Service -> Cache : 获取缓存
    activate Cache #FFD700
    Cache --> Service : 返回空
    deactivate Cache
end

' 注释示例
note over User, Client : 用户交互区域
note right of MQ : 异步消息系统\n解耦处理
note left of Service
  **服务控制器职责**:
  1. 请求路由
  2. 数据处理
  3. 错误处理
end note

' 延迟标记
Service --> Client : 处理中...
... 网络延迟 ...
Client -> User : 请等待

' 返回消息
Service <-- Cache : 缓存响应

' 生命线结束
destroy Service
Gateway --> User : 最终响应

' 自动编号
autonumber
Service -> DB : 保存日志
DB --> Service : 确认保存
autonumber stop

' 分组颜色
group #LightPink 清理资源
    Service -> Cache : 清除临时数据
    Service ->> MQ : 发送清理事件
end
@enduml
相关推荐
北极星日淘5 天前
前端 i18n 中日双语交互 + 翻译客服接口联动方案|日系海淘平台中文友好化开发实战
前端·交互
嘿黑嘿呦5 天前
chap 8排序
算法·蓝桥杯·排序算法·软件工程
UXbot5 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
蓝速科技5 天前
蓝速科技 AI 数字人部署与交互实战指南
人工智能·科技·交互
旧曲重听15 天前
2026前端技术从「夯」到「拉」
前端·程序人生·职场和发展·软件工程
承渊政道5 天前
飞算JavaAI 智能引导背后的多 Agent 协作机制解析:从老旧 Java 后台升级到可运行工程
java·开发语言·spring boot·安全·intellij-idea·软件工程·ai编程
apcipot_rain6 天前
计科八股20260616(1)——堆存中位数、链表判环、黑白测试、敏捷开发与瀑布模型、配置管理、持续集成、池化
数据结构·算法·软件工程
UXbot6 天前
原型设计工具如何帮助新人快速进入产品行业?
前端·低代码·ui·交互·团队开发·原型模式·web app
Resurgence_zc6 天前
openGauss 资源池化主备页面交互流程梳理
网络·交互·数据库开发
potion()6 天前
浏览器用户画像分析-大屏静态布局制作+数据接入+交互设置
交互·助睿数智·商业数据分析