理解系统交互: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
相关推荐
魔都吴所谓12 分钟前
[前端]HTML模拟实现一个基于摄像头的手势识别交互页面
前端·html·交互
人机与认知实验室32 分钟前
人机环系统智能中的各种交互及其非数据问题
交互
张较瘦_6 小时前
[论文阅读] 人工智能+软件工程(软件测试) | 当大语言模型遇上APP测试:SCENGEN如何让手机应用更靠谱
论文阅读·人工智能·软件工程
MARS_AI_6 小时前
4S 店使用大模型接电话,有效减少商机流失
人工智能·自然语言处理·交互·语音识别
二倍本贝8 小时前
【慧游鲁博】【12】小程序端 · 智能导览对接后端文物图片识别功能
小程序·uni-app·vue·软件工程
保持学习ing19 小时前
SpringBoot前后台交互 -- 登录功能实现(拦截器+异常捕获器)
java·spring boot·后端·ssm·交互·拦截器·异常捕获器
电子科技圈1 天前
IAR开发平台升级Arm和RISC-V开发工具链,加速现代嵌入式系统开发
arm开发·嵌入式硬件·设计模式·性能优化·软件工程·代码规范·risc-v
深空数字孪生1 天前
小程序 UI 设计,怎样在方寸间实现高效交互
ui·小程序·交互
希尔贝壳AISHELL1 天前
AISHELL-5 全球首套智能驾舱中文语音交互数据集开源
交互