
在业务流程建模符号(BPMN)中,数据不仅仅是被处理的“原材料”,它是驱动业务过程、产生业务价值以及确保流程状态一致性的核心要素。正如上下文所述,Data(数据)主要是在执行业务流程时所需产生或使用的信息。为了准确地在系统架构和流程图中表达这些信息流,BPMN 定义了四种关键的数据对象:Data Object(数据对象)、Data Input(数据输入)、Data Output(数据输出)和 Data Store(数据存储)。
本文将深入解析这四种数据对象的含义、应用场景及其在系统架构中的区别,帮助读者构建清晰、准确的业务流程模型。
1. 数据对象 (Data Object)
Data Object 是数据建模中最基础的概念。它代表了业务过程中产生、使用或消耗的信息实体。在视觉上,它通常表现为一张带有折角的文档图标。
- 核心定义: 它是流程中产生或消耗的信息,但本身不包含具体的流向(即不直接显示它是被输入还是被输出,它更像是一个通用的“信息容器”)。
- 应用场景: 用于表示在某个任务(Task)中创建、查看或修改的文档、表单或电子记录。例如,在“审批合同”的任务中,合同文件本身就是一个 Data Object。
- 建模意义: 它强调了信息的存在,而不强调该信息是作为过程的起点还是终点。它是连接业务活动与业务信息的桥梁。
示例说明
想象一个“生成月度报表”的任务。当这个任务执行时,它处理的是“销售数据”。此时,“销售数据”作为一个抽象的实体,首先表现为一个 Data Object,表明该任务与这份数据有关联。
2. 数据输入 (Data Input)
当流程开始或执行某个特定任务时,如果需要从外部获取信息,或者任务必须依赖某些初始数据才能启动,我们使用 Data Input。
- 核心定义: 指向数据对象内部的箭头,表示信息是进入该数据对象或被该数据对象吸收。
- 视觉特征: 一个指向文档内部(左侧)的箭头。
- 应用场景: 用于表示任务的输入要求。例如,在“处理订单”的任务中,客户填写的“订单表单”就是数据输入。如果没有这个输入,任务无法开始。
- 与数据对象的区别: 如果仅仅是一个折角文档,我们不知道数据是从哪里来的;加上指向内部的箭头,明确了这是流程的输入源。
3. 数据输出 (Data Output)
Data Output 是流程执行的结果体现。当任务完成时,产生了新的信息,或者更新了现有信息并需要将其展示给下游系统或人员。
- 核心定义: 从数据对象内部指向外部的箭头,表示信息是从该数据对象流出或产生的。
- 视觉特征: 一个指向文档外部(右侧)的箭头。
- 应用场景: 用于表示任务的产出物。例如,在“发送通知”的任务中,生成的“通知邮件”就是数据输出。它标志着任务的成功完成并产生了新的业务成果。
- 建模意义: 它清楚地定义了业务流程的结果。在系统架构图中,数据输出通常对应于 API 返回的响应数据或生成的文件下载链接。
4. 数据存储 (Data Store)
如果说前三种对象关注的是流程流转中的瞬时数据,那么 Data Store 则关注数据的持久化。它是业务流程中用于长期保存信息的逻辑容器。
- 核心定义: 代表数据库、文件系统或任何能够持久化存储数据的机制。
- 视觉特征: 一个圆柱体形状,通常内部标注有“Data Store”字样。
- 应用场景: 当业务数据需要在多个流程实例之间共享,或者需要在流程结束后保留以供将来查询时,必须使用 Data Store。例如,“客户信息表”、“库存数据库”或“订单历史记录”。
- 在架构中的角色: 它是系统架构中的持久层(Persistence Layer)。在 BPMN 中,任务通常会通过连接线指向数据存储,表示“读取”或“写入”操作。
总结:构建清晰的系统架构
掌握这四种数据对象的区别,对于设计健壮的 BPMN 模型至关重要。它们共同构成了业务流程的数据视图:
- Data Object 定义了我们要处理的信息实体。
- Data Input 明确了任务启动所需的前置条件。
- Data Output 展示了任务执行后的业务价值产出。
- Data Store 确保了数据的持久化和状态管理。
在实际的系统架构设计工具(如 PlantUML, Mermaid, 或 VPasCode)中,正确使用这些符号不仅能提升模型的可读性,还能帮助开发人员更清晰地理解数据流(Data Flow),从而减少系统设计中的歧义。通过精准地标注数据输入、输出和存储,我们实际上是在为系统绘制一份精确的数据字典。
