BPMN基本元素:任务与子流程——活动的承载
在BPMN中,活动(Activity) 代表流程中”做什么”的具体行为。最常见的活动形式是任务(Task) 和 子流程(Sub-Process)。本文讲解任务的分类、应用场景,以及子流程如何用于流程复用与分层。
任务的五大类型
BPMN定义了5种标准任务类型,每种代表不同的执行方式:
用户任务(User Task)
含义:需要人工介入的工作,如审批、填表、确认等。
特点:
- 流程在此暂停,等待人类完成
- 通常分配给特定角色或用户
- 完成后由人类主动点击”完成”按钮
常见场景:
- 审批流程(经理审批、财务审批)
- 数据填报(客户信息、合同签署)
- 质量检查(产品检验)
符号:
用户任务
服务任务(Service Task)
含义:由系统自动执行的任务,无需人工干预。
特点:
- 流程自动运行,不需等待
- 通常调用后端API、数据库操作或第三方服务
- 执行成功/失败应有异常处理
常见场景:
- 调用支付网关
- 发送邮件/短信通知
- 计算与数据更新
- 调用外部API(如天气查询、汇率转换)
符号:
服务任务
伪代码示意:
1 | // 服务任务的逻辑执行示例 |
脚本任务(Script Task)
含义:执行嵌入式脚本(如JavaScript、Python)的任务。
特点:
- 通常用于数据转换、计算或判断
- 脚本代码可在流程定义中直接编写
- 无需调用外部服务
常见场景:
- 计算订单总额
- 数据格式转换
- 业务规则评估
符号:
脚本任务
伪代码示意:
1 | // 脚本任务示例:计算税率 |
接收任务(Receive Task)
含义:流程等待接收外部消息后继续执行。
特点:
- 流程暂停,等待外部系统的消息
- 与消息启动事件不同,接收任务在流程中途
- 无超时机制(通常配合边界事件实现超时)
常见场景:
- 等待支付确认
- 等待第三方系统通知
- 等待合作伙伴反馈
符号:
接收任务
发送任务(Send Task)
含义:向外部系统或人员发送消息的任务。
特点:
- 自动执行,无需等待
- 消息发送成功后流程继续
- 通常用于通知、提醒
常见场景:
- 发送审批通过通知
- 向供应商发起询价请求
- 发送订单确认邮件
符号:
发送任务
子流程(Sub-Process)
概念
子流程是一个完整的流程,嵌入在另一个流程中。它可以:
- 复用已有流程
- 将复杂流程分层
- 隐藏细节,简化可读性
嵌入式子流程(Embedded Sub-Process)
在主流程中直接定义的子流程,可展开/折叠:
1 | 主流程: |
特点:
- 子流程内有自己的启动/结束事件
- 支持嵌套(子流程内还可有子流程)
- 可复用相同的变量与数据
调用活动(Call Activity)
引用外部流程的方式,类似”函数调用”:
1 | 主流程: |
特点:
- 外部流程独立维护
- 多个流程可共用同一个子流程
- 便于流程版本管理与重用
任务与子流程的选择标准
| 场景 | 选择 | 原因 |
|---|---|---|
| 单个完整的业务操作 | 任务 | 简洁明快 |
| 多步骤业务流程(如审批) | 子流程 | 逻辑聚合,易于隐藏细节 |
| 需要多个流程共用 | 调用活动 | 独立维护,避免重复 |
| 需要人工操作 | 用户任务 | 清晰的参与者与交互 |
| 系统自动处理 | 服务任务 | 明确自动化,无需等待 |
小案例:采购流程
1 | 创建采购单 |
小结
掌握任务与子流程:
- ✓ 五种任务类型及其自动化程度
- ✓ 用户任务标记”人工环节”,服务任务标记”自动化”
- ✓ 子流程用于分层与复用
- ✓ 调用活动用于跨流程引用
能够设计出清晰的任务分配、智能的自动化与复用流程。