Skip to content
难度基础(★)
建议时长45分钟

10.4.7 活动图

活动图描述一个过程如何一步一步执行。它可以展示控制流和数据流,适合功能建模、业务流程建模和用例内部流程分析。

它看起来像流程图,但比普通流程图更适合面向对象建模,尤其能表达并发活动。

活动图表达什么

活动图关注的是“动作如何流转”,不是“对象处于什么状态”。

适合用活动图的问题不适合混成活动图的问题
用户下单流程如何走订单有哪些状态
审批流程有哪些分支审批单从待审到通过如何迁移
多个任务能否并发执行某个类有哪些属性和方法
一个用例内部有哪些步骤系统部署在哪些服务器上

基本组成

元素含义图形线索
初始节点流程开始实心圆
活动/动作一个具体步骤圆角矩形
活动之间的流向箭头线
分支根据条件选择路径菱形
监护条件分支路径上的判断条件[条件]
并发分岔一条流分成多条并行流粗实线
并发汇合多条并行流汇合粗实线
终止节点流程结束终止圆
mermaid
flowchart TB
  Start((开始)) --> Login["提交登录信息"]
  Login --> Check{"账号有效?"}
  Check -- "[否]" --> Fail["提示错误"]
  Fail --> End((结束))
  Check -- "[是]" --> Fork["并发分岔"]
  Fork --> LoadProfile["加载用户资料"]
  Fork --> LoadPermission["加载权限"]
  LoadProfile --> Join["并发汇合"]
  LoadPermission --> Join
  Join --> Home["进入首页"]
  Home --> End

图中菱形表示普通条件分支,粗实线表示可以并发执行的分岔与汇合。课程中特别强调:活动图能够表达并发过程。

分支与并发不要混淆

对比项条件分支并发分岔
图形菱形粗实线
语义多条路径中选择一条多条路径可以同时进行
路径标注常有 [yes][no] 或监护条件通常不表示互斥选择
例子支付成功/支付失败同时发送短信和生成通知

监护条件是路径能否被选择的条件,通常写在流上。例如 [库存充足][余额不足]

泳道活动图

如果要说明每个活动由谁发起或负责,可以把活动图按责任主体划分成泳道。

泳道可能包含的活动
客户提交订单、确认收货
系统校验库存、生成订单、发送通知
供应商发货、更新物流

泳道的价值在于把流程责任看清楚:同一个流程可能跨越客户、系统、供应商多个参与方,单纯从上到下画步骤容易丢掉“谁做这一步”。

活动图与状态图的区别

对比项活动图状态图
关注点活动步骤、控制流、数据流对象状态、事件、迁移
节点含义动作或活动状态
箭头含义流向状态迁移
典型题干业务流程、活动流、并发分支状态变化、事件触发、状态机

看到“活动流”“完成任务所需进行的活动”,选活动图;看到“对象状态转换”,选状态图。

例题

单选
描述业务处理流程、条件分支和并发活动,常使用:
单选
活动图中,分支路径上的 `[余额充足]` 这类判断条件通常称为:

自查要点

  1. 活动图为什么比普通流程图更适合表达并发?
  2. 菱形分支和粗实线分岔有什么区别?
  3. 监护条件通常写在哪里?
  4. 泳道活动图解决的是什么问题?