一、活动图是啥?—— 流程图的“升级加强版”🚀
🧠
活动图像“智能流程图”:它能描述系统的动态执行逻辑,不仅能展示“步骤顺序”,还能表达“分支判断、并行执行、多角色协作”等复杂流程——比传统流程图的语义更丰富,是业务流程和系统操作流程的“可视化工具”。
🤖 类比:
如果传统流程图是“步行路线图”(只能走固定路线),那活动图就是“导航 APP 的路线规划”——能显示“左转 / 右转的分支”“多条路线并行选择”“不同交通工具(角色)的协作路段”。
✍️ 核心作用:
- 描述业务流程:展示“用户下单→商家发货→骑手配送”等实际业务的执行步骤;
- 梳理系统操作:明确“ATM 取款→输入密码→验证→出钞”等系统功能的执行逻辑;
- 沟通跨角色协作:用“泳道”区分不同角色(比如“老师出卷 / 学生答卷”)的工作内容。
二、活动图的“基础零件”:动作 + 控制流 + 判断 / 合并 🧩
👆 1. 动作 & 活动节点:流程的“步骤”
动作 是流程中不可拆分的“原子步骤”(比如“填写取款单”“检查密码”),用“两端圆弧形的矩形”表示;活动节点 是多个动作的组合(比如“订单处理”包含“审核 / 支付 / 发货”),用于简化复杂流程。
🎬 2. 开始 & 终止:流程的“起点 / 终点”
“开始”是流程的起点(用“实心小圆”表示),一个活动图只能有一个开始;“终止”是流程的终点(用“实心小圆 + 外圈”表示),一个活动图可以有多个终止(对应不同的流程结束方式)。
➡️ 3. 控制流:步骤的“连接线”
控制流是连接动作 / 活动节点的“箭头”,表示流程的执行顺序——比如“填写取款单→检查有无密码”的箭头,就是控制流。
❓ 4. 判断节点:流程的“分支路口”
判断节点(菱形)是流程的“分支开关”,根据“监护条件”选择不同的执行路径——比如“检查密码是否正确”的判断节点,会根据“[密码正确]”/“[密码错误]”分别跳转到“出钞”或“审核失败”。
🔀 5. 合并节点:流程的“汇合点”
合并节点(菱形)是多个分支流程的“汇合处”——比如“出钞”和“打印清单”两个分支,最终会合并到同一个终止节点,简化图形结构。
三、活动图的“进阶零件”:泳道 + 并行 + 对象流 📈
🏊 1. 泳道:流程的“角色分工表”
泳道是按“执行角色”划分的流程区域——比如“考试流程”分为“老师泳道”(出卷 / 批卷)和“学生泳道”(答卷 / 领取成绩单),清晰展示不同角色的工作内容。
🔀 2. 分叉 / 结合节点:流程的“并行开关”
分叉节点(粗横线)让流程“同时执行多个任务”(比如“主任务→同时执行任务 A 和任务 B”);结合节点(粗横线)让并行的任务“全部完成后再继续”(比如“任务 A 和任务 B 都完成后,才执行下一个任务”)。
// 启动并行任务
Thread taskA = new Thread(() -> doTaskA());
Thread taskB = new Thread(() -> doTaskB());
taskA.start();
taskB.start();
// 等待并行任务完成(结合节点)
taskA.join();
taskB.join();
// 执行下一个任务
doNextTask();
📦 3. 对象流:流程的“数据载体”
对象流是流程中“对象的创建 / 使用 / 状态变化”——比如“生成订单”活动会创建“订单对象(未支付)”,“支付”活动会将其状态改为“已支付”,用虚线连接活动和对象,展示数据的流转。
四、活动图的建模步骤:画好“业务剧本”📋
📌 步骤:
- 识别核心流程:确定要展示的业务 / 系统流程(比如“机票购买流程”);
- 拆分执行步骤:把流程拆分为“原子动作”(比如“选择商品→生成订单→支付”);
- 添加分支 / 并行逻辑:用判断节点表示分支(比如“支付成功 / 失败”),用分叉 / 结合节点表示并行(比如“同时检查库存和价格”);
- 划分泳道(可选):按执行角色划分泳道(比如“客户 / 订单中心”);
- 补充对象流(可选):展示流程中对象的创建 / 状态变化(比如“订单对象的状态流转”)。
五、活动图的实战价值:复杂流程的“沟通利器”🔧
🚀
在实际工作中,活动图是 跨团队沟通的“共同语言”:产品经理用它向开发团队展示业务流程,开发团队用它梳理代码的执行逻辑,测试团队用它设计测试用例。
☁️ 复杂场景:工作流引擎的依据
对于 OA 系统、审批系统等“工作流密集型”系统,活动图可以直接作为“工作流引擎”的配置依据——引擎根据活动图的“步骤、分支、角色”自动执行流程,减少手动编码的工作量。