
在业务流程建模(Business Process Diagram, BPD)中,清晰地区分“任务(Task)”与“子流程(Sub-process)”是构建高质量系统架构的关键。正如我们在提供的上下文和图表中所见,建模不仅仅是记录步骤,更是关于如何根据受众和系统边界来抽象信息。
本文将深入探讨这两个核心概念,结合您提供的视觉元素,解析如何在复杂的系统架构中进行分层建模。
1. 核心概念:任务(Task)
在业务流程图中,任务(Task)代表了业务流程中的最小执行单元。它是不可再分的原子操作(Atomic Operation)。
- 定义:一个具体的、单一的动作或活动。
- 特点:在当前的建模层级中,我们不需要(或无法)将其进一步拆解。
- 示例:查看您提供的图片,
Place Order(下订单)、Conduct Testing(进行测试)、Schedule Meeting(安排会议)和Collect Parcel(取包裹)都是典型的任务。
当我们在顶层视图(Level 0 或 Level 1)中展示一个系统时,这些任务就像一个个黑盒。对于外部观察者(如客户)而言,他们只关心“下订单”这个动作是否完成,而不关心订单系统内部是如何验证库存或计算税率的。
2. 核心概念:子流程(Sub-process)
当业务逻辑变得复杂,或者我们需要向特定的利益相关者展示更多细节时,简单的任务就不再适用了。这时,我们需要引入子流程(Sub-process)。
子流程的定义:
子流程是一个非原子的(Non-atomic)、复杂的任务。它可以被进一步分解为更小的工作单元。在建模中,子流程通常包含另一个 BPD(业务流程图)来描述其内部细节。
在视觉表现上,子流程通常与任务非常相似(例如圆角矩形),但关键的区别在于其可分解性。如果您看到一个带有加号(+)图标的矩形(如图片所示),这通常暗示该节点是一个子流程或可展开的复杂任务。
子流程的层级结构
子流程允许我们进行分层建模(Layered Modeling):
- 父级视图:展示宏观流程,如“处理订单”。
- 子级视图:点击或展开“处理订单”,进入一个新的 BPD,展示具体的步骤,如“验证支付”、“检查库存”、“生成发票”。
3. 决策模型:何时选择任务,何时选择子流程?
这是建模中最具挑战性的部分。根据上下文,选择任务还是子流程不仅仅取决于工作的复杂度,更取决于受众的需求(Audience Needs)和详细程度(Level of Detail)。
场景 A:客户视角(宏观视角)
想象一下,如果您是客户,您并不关心您的支付是如何被处理的。您只关心“支付”这个动作是否成功。
- 建模选择:使用任务(Task)。
- 原因:对于客户而言,支付是一个原子事件。展示内部的银行接口、加密算法或风控检查只会增加认知负担,造成干扰。
场景 B:商店/系统视角(微观视角)
现在,假设您是商店的运营人员或系统架构师。您必须知道如何处理客户的支付。如果支付失败怎么办?如果库存不足怎么办?
- 建模选择:使用子流程(Sub-process)。
- 原因:“处理支付”对于商店来说是一个复杂的、非原子的过程。它需要被分解为多个步骤,以便开发团队编写代码或运营团队制定 SOP(标准作业程序)。
4. 视觉符号解析:那个“加号”意味着什么?
在您提供的图片中,每个黄色矩形下方都有一个带有加号的方框(+)。在 BPMN(业务流程建模符号)或类似的建模工具中,这通常被称为展开图标(Expand Icon)。
- 含义:这明确指示该节点是一个子流程(Sub-process)。
- 功能:它告诉读者:“这里有一个更详细的故事。点击它,或者查看另一张图表,你将看到内部发生了什么。”
- 对比:如果只是一个普通的任务,通常不会显示这个加号,或者它只是一个简单的矩形,表示在当前层级它是终点。
5. 总结:构建清晰的系统架构
优秀的系统架构设计依赖于正确的抽象层级。通过理解上下文,我们可以决定:
- Place Order:对客户是任务,对订单系统是子流程。
- Conduct Testing:对测试团队是任务,对质量保证部门是子流程。
记住,任务(Task)是终点,而子流程(Sub-process)是通往更深层次理解的门户。在建模时,始终问自己:“我的读者需要知道这一步的内部细节吗?”如果答案是肯定的,请使用子流程;如果答案是否定的,请将其作为一个简单的任务处理。
