mermaid 序列图 解析

bash 复制代码
sequenceDiagram
    participant UI as 用户界面
    participant Executor as 任务执行器
    participant StateMgr as 状态管理器
    participant Repo as 数据仓库
    
    UI->>Executor: 执行任务3350c74e...
    Executor->>StateMgr: 更新状态为"measuring"
    StateMgr->>Repo: 持久化到nodestate.xml
    StateMgr->>UI: 发送statusChanged信号
    Executor->>Hardware: 实际采集数据
    Hardware->>Executor: 返回测量结果
    Executor->>Repo: 存储原始数据到results/raw_results/
    Executor->>StateMgr: 更新状态为"measured"

用户界面 任务执行器 状态管理器 数据仓库 Hardware 执行任务3350c74e... 更新状态为"measuring" 持久化到nodestate.xml 发送statusChanged信号 实际采集数据 返回测量结果 存储原始数据到results/raw_results/ 更新状态为"measured" 用户界面 任务执行器 状态管理器 数据仓库 Hardware


1. 这是什么图?

这是一张 序列图(Sequence Diagram),属于统一建模语言(UML,Unified Modeling Language)中的一种图。

2. 序列图的作用

序列图主要用于描述对象之间交互的顺序和过程,它能够清晰地展示系统中各个组件(对象或模块)之间的消息传递和协作关系。具体作用如下:

  • 设计阶段:帮助开发者设计系统的交互逻辑,明确各个组件之间的职责和交互顺序。
  • 开发阶段:作为开发人员编写代码的参考,确保代码实现符合设计的交互逻辑。
  • 维护阶段:帮助维护人员理解系统的交互过程,快速定位问题。

3. 如何读这种图?

序列图的阅读主要围绕以下几个方面展开:

(1)参与者(Participants)
  • 图中用矩形框表示参与者,例如:
    • UI(用户界面)
    • Executor(任务执行器)
    • StateMgr(状态管理器)
    • Repo(数据仓库)
    • Hardware(硬件设备)
  • 这些参与者可以是软件组件、模块,也可以是硬件设备等。
(2)消息(Messages)
  • 消息用箭头表示,箭头的方向表示消息的发送方向。
  • 消息的内容(如"执行任务3350c74e..."、"更新状态为'measuring'"等)写在箭头上方。
(3)时间顺序
  • 箭头从上到下表示时间的先后顺序,越靠上的箭头表示越早发生的交互。
(4)垂直线(Lifelines)
  • 每个参与者下方有一条垂直线,称为生命线(Lifeline),表示参与者在交互过程中存在的时间范围。
(5)激活条(Activation Bars)
  • 当参与者正在处理消息时,生命线上会有一个激活条(矩形框),表示该参与者正在执行操作。

4. 具体解读这张图

以下是这张序列图的详细解读:

(1)交互过程
  1. 用户界面(UI) 发起任务请求,向 任务执行器(Executor) 发送消息"执行任务3350c74e..."。
  2. 任务执行器(Executor) 收到任务后,向 状态管理器(StateMgr) 发送消息"更新状态为'measuring'",表示任务开始测量。
  3. 状态管理器(StateMgr) 接收到消息后,将当前状态持久化到 数据仓库(Repo) 的 nodestate.xml 文件中。
  4. 状态管理器(StateMgr) 同时向 用户界面(UI) 发送 statusChanged 信号,通知 UI 状态已更新。
  5. 任务执行器(Executor) 向 硬件设备(Hardware) 发送消息,请求实际采集数据。
  6. 硬件设备(Hardware) 完成数据采集后,将测量结果返回给 任务执行器(Executor)。
  7. 任务执行器(Executor) 将采集到的原始数据存储到 数据仓库(Repo) 的 results/raw_results/ 目录中。
  8. 任务执行器(Executor) 再次向 状态管理器(StateMgr) 发送消息"更新状态为'measured'",表示任务测量完成。
(2)交互顺序
  • 从上到下依次为:
    1. UI -> Executor
    2. Executor -> StateMgr
    3. StateMgr -> Repo
    4. StateMgr -> UI
    5. Executor -> Hardware
    6. Hardware -> Executor
    7. Executor -> Repo
    8. Executor -> StateMgr
(3)参与者角色
  • UI:负责用户交互,发起任务请求并接收状态更新信号。
  • Executor:负责任务的执行,协调其他组件完成任务。
  • StateMgr:负责管理任务的状态,并将状态持久化到数据仓库。
  • Repo:负责存储状态信息和原始数据。
  • Hardware:负责实际采集数据。

5. 总结

这张序列图清晰地展示了任务执行过程中各个组件之间的交互顺序和消息传递关系。通过阅读这张图,可以快速理解系统的交互逻辑,帮助开发和维护人员更好地理解和设计系统。

相关推荐
会编程的小孩3 小时前
C++ qt的安装
c++
小成202303202658 小时前
C++~07补充
开发语言·c++
hold?fish:palm9 小时前
40 二叉树的直径
c++·leetcode
LaoWaiHang9 小时前
关于Qt中鼠标左键事件被子控件截留的处理
qt
解决小子9 小时前
【虚幻引擎】【C++】【GAS框架】构建角色基类、属性集、数值钳制
c++·笔记·游戏引擎·虚幻·gas·能力系统
lunar_coder10 小时前
【C++】如何解决智能指针的析构函数,如何实现shared_ptr的引用计数以及解决shared_ptr的循环引用
c++·1024程序员节
白白白小纯11 小时前
C++进阶.多态
c++
凯瑟琳.奥古斯特12 小时前
力扣1016高效解法:剪枝优化技巧
开发语言·c++·算法·leetcode·职场和发展
xiangyun6112 小时前
C++ priority_queue 底层:手撕二叉堆与 Top K 问题
c++·算法·面试·stl·1024程序员节
坤坤子吖13 小时前
C++继承:友元、静态成员、多继承与组合
开发语言·c++·笔记·学习·1024程序员节