解码每个BPMN符号和网关,以获得清晰的流程图

业务流程模型与符号(BPMN)作为流程建模的通用语言。它使组织能够可视化工作流、定义逻辑,并在技术与非技术团队之间沟通复杂的操作。然而,图表的精确性完全依赖于符号的正确使用。误解一个网关或一个事件可能导致自动化错误、合规风险或运营瓶颈。

本指南详细解析了BPMN 2.0的各个元素。我们探讨事件、活动、网关和连接对象的具体功能。目标是确保您的图表不仅视觉上美观,而且逻辑严谨,并严格符合标准。

BPMN 2.0 Symbol Reference Guide infographic in charcoal sketch style showing four core element categories: Events (start/intermediate/end circles with message, timer, error icons), Activities (rounded rectangles for user/service/manual tasks and sub-processes), Gateways (diamonds with X for XOR, + for AND, o for OR, hexagon for event-based), and Connecting Objects (solid sequence flow, dashed message flow, dotted association lines), plus pool/lane swimlane structure for process modeling clarity

理解核心构建模块 🧱

BPMN图表由四类主要元素构成。每一类元素在定义业务流程生命周期中都发挥着独特作用。要构建一个稳健的模型,必须理解外观相似的形状之间的细微差别。

  • 事件:发生的事情。以圆形表示,用于定义流程的开始、中间或结束。
  • 活动:需要完成的工作。以圆角矩形表示,代表任务或子流程。
  • 网关:决策与同步。这些菱形控制流程的走向。
  • 连接对象:连接所有内容的箭头。

1. 事件:您流程的脉搏 ⏱️

事件是您流程的触发点和结果。它们以圆形表示。圆圈边框的粗细表示事件的类型。理解这些差异对于准确的模拟和执行至关重要。

开始事件 🟢

开始事件标志着一个流程实例的开始。它没有传入的顺序流。开始事件的边框较细。圆圈内部的符号定义了触发流程的条件。

  • 消息开始:由接收到消息触发(例如电子邮件或API调用)。以信封图标表示。
  • 定时器开始:由时间条件触发(例如每周一上午9点)。以时钟图标表示。
  • 信号开始:由系统广播的信号触发。
  • 错误开始:很少使用,表示由特定错误条件触发的开始。

结束事件 🔴

结束事件表示流程实例的结束。它们没有传出的顺序流。边框较粗,表示终止。内部符号定义了结果。

  • 消息结束:在完成时发送一条消息。
  • 信号结束: 向其他进程广播一个信号。
  • 错误结束: 表示该流程因错误而结束。
  • 取消结束: 专门用于事务性流程或子流程,表示取消。
  • 终止结束: 立即停止该流程的所有运行实例,无论其他并行路径如何。

中间事件 ⚪

中间事件发生在开始和结束之间。它们既有传入的序列流,也有传出的序列流。边框较细,但内部有一个双线圆圈,以区别于开始和结束事件。

  • 捕获事件: 流程等待某件事发生。例如捕获消息、计时器或信号。流程会暂停,直到条件满足。
  • 抛出事件: 流程生成某些内容。例如发送消息或触发信号。这通常在任务完成后发生。
  • 补偿: 针对长时间运行流程中的错误进行特殊处理。

2. 活动:定义工作 🛠️

活动表示流程中实际执行的工作。它们以圆角矩形绘制,矩形内的图标表示活动的具体类型。

任务 📝

任务是工作最小的单位。在该图的上下文中,它不能再进一步分解。

  • 用户任务: 由人类参与者执行的工作。需要人工交互。
  • 服务任务: 由IT系统或服务执行的工作。无需人工干预。
  • 手动任务: 在现实世界中手动完成的工作,可能在系统外部进行。
  • 脚本任务: 由脚本或代码片段执行的工作。
  • 业务规则任务: 由规则引擎或策略执行的工作。
  • 发送/接收任务:异步消息传递的特定类型任务。

子流程 📂

当流程过于复杂时,会被分解为子流程。这通过一个底部带有加号(+)的圆角矩形来表示。

  • 折叠的子流程:显示加号。细节被隐藏,以保持主流程图的整洁。
  • 展开的子流程:显示内部任务和流程。用于详细文档记录。
  • 调用活动:对在其他地方定义的可重用流程模板的引用。

3. 网关:逻辑控制器 🔄

网关决定流程的流向。它们是逻辑控制中最关键的元素。如果没有正确使用网关,流程将无法做出决策或处理并行的工作流。

排他网关(XOR) ⚡

排他网关表示一个决策点,仅选择一条路径。它看起来像一个菱形,内部有一个X。当条件互斥时使用。

  • 逻辑:如果条件A为真,则走路径A;如果条件B为真,则走路径B。只有一条路径处于激活状态。
  • 用途:审批流程(批准与拒绝),基于数据值的分支。
  • 默认流程:如果没有条件匹配,则采用默认流程。这必须明确标注。

并行网关(AND) ⚙️

并行网关同时分割或合并流程。它看起来像一个菱形,内部有一个+

  • 拆分:创建多个并行路径。所有路径同时执行。
  • 汇聚:等待所有传入的并行路径完成后才继续。
  • 用途: 同时发送通知邮件并更新数据库。在继续之前等待多个审批。

包容网关(或)🌐

包容网关允许选择一个或多个路径。它看起来像一个菱形,内部有一个o在里面。

  • 拆分:评估条件。如果条件A为真,则路径A激活。如果条件B为真,则路径B激活。两者都可以为真。
  • 合并:等待所有活动路径完成。它不会等待未选择的路径。
  • 用法:复杂的分支,可以同时选择多个选项(例如,选择多种运输方式)。

基于事件的网关 ⚠️

此网关等待特定事件发生。它看起来像一个菱形,内部有一个六边形。用于等待外部触发。

  • 逻辑:流程等待多个事件中的一个发生。一旦某个事件发生,其他潜在路径将被取消。
  • 用法:等待支付确认或超时到期。

网关类型对比

网关类型 符号 拆分逻辑 合并逻辑
排他网关(异或) 菱形内带X 根据条件选择唯一一条路径。 合并单个传入路径。
并行网关(与) 菱形内带+ 同时创建所有路径。 等待所有传入路径完成。
包含性(或) 菱形内部的 o 激活满足条件的任意路径。 等待所有活动路径完成。
基于事件 六边形内部 等待任意事件发生。 等待发生的事件。

4. 连接对象:连接流程 🔗

连接器定义了信息和控制在元素之间传递的方式。箭头的样式表示连接的性质。

顺序流 🟦

顺序流连接同一过程中的元素。它是一条实线,带有开放的箭头。

  • 功能:表示执行顺序。
  • 方向:从上到下,从左到右流动。
  • 用途:连接单个泳道内的任务、事件和网关。

消息流 🟧

消息流连接不同泳道或参与方之间的元素。它是一条虚线,带有开放的箭头。

  • 功能:表示参与者之间的信息交换。
  • 方向:可以跨越泳道和泳池。
  • 用途:从客户向供应商发送请求。

关联 🟩

关联将数据工件或注释链接到流程元素。它是一条虚线,带有实心箭头(或开放箭头,取决于方向)。

  • 功能:提供上下文或数据引用,而不影响流程控制。
  • 用法:将文档链接到任务,或将文本备注链接到特定网关。

5. 池与泳道:组织职责 🏊

复杂流程涉及多个参与方。BPMN 使用池与泳道来可视化这些关系。

池 🟦

池代表流程中的一个参与者。它是一个容纳流程定义的容器。每个池都有自己独立的开始和结束事件。

  • 公共池:代表外部组织或实体。
  • 私有池:代表内部部门或系统。
  • 消息流:只能在不同池之间发生。

泳道 🟨

泳道是池内的子区域。它们代表特定角色、部门或系统,负责该部分的活动。

  • 职责:明确谁执行哪项任务。
  • 视觉清晰度:有助于追踪角色之间的交接。
  • 泳道:常与泳道互换使用,用来描述水平或垂直划分。

6. 常见模式与反模式 🛑

即使是经验丰富的建模者也会犯错。识别常见模式与反模式,能确保图表的长期可用性。

无限循环 ⚠️

一个没有终止条件的序列流返回到之前的位置,会形成无限循环。在图表中,如果表示重试机制,这是可以接受的,但在执行时会导致系统挂起。

  • 解决方案: 确保循环中有计数限制或中断条件。

孤立任务

没有输入或输出连接的任务是孤立任务。这表明图表不完整。

  • 解决方案: 将所有任务连接到一个逻辑流程路径上。

缺少网关

未正确连接或拆分的并行流程可能导致死锁。如果一个流程分为两条并行路径,但只有一条路径重新合并,另一条路径可能会无限期挂起。

  • 解决方案: 始终使用并行网关来合并所有并行分支。

7. 图表绘制的最佳实践 📏

为保持高质量的流程文档,应遵循以下结构化指南。

命名的一致性

  • 为任务使用清晰、以行动为导向的名称(例如,审核发票而不是发票).
  • 根据触发条件命名事件(例如,收到发票而不是开始).
  • 用条件标注网关(例如,金额 > 1000).

视觉层次

  • 将开始事件放置在顶部或左侧。
  • 将结束事件放置在底部或右侧。
  • 保持流程方向一致(自上而下或自左向右)。
  • 避免线条交叉。使用折点来使流程更顺畅。

数据对象

  • 将数据表示为附着在任务上的文档图标。
  • 使用关联关系来显示读取或写入的数据。
  • 不要将数据对象放置在顺序流上;它们属于任务或网关。

8. 高级网关逻辑 🧠

高级建模通常需要嵌套网关或复杂条件。理解不同网关类型之间的交互至关重要。

嵌套网关

将一个网关放置在另一个网关内部可以简化复杂逻辑,但会增加读者的认知负担。

  • 建议:保持逻辑简单。如果一个网关需要五个条件,考虑将流程拆分为子流程。

基于事件的选择

使用基于事件的网关时,确保所有等待的事件都是不同的。如果两个事件可能同时发生,行为将变得不确定。

  • 建议:如果存在歧义,使用明确的逻辑来优先考虑一个事件而非另一个事件。

9. 解决常见符号混淆问题 🤔

即使是专家有时也会混淆相似的符号。以下是常见混淆的快速参考。

任务 vs. 服务任务

  • 任务:人工工作。
  • 服务任务:系统工作。
  • 检查:需要有人点击按钮吗?如果是,就是任务;如果系统自动完成,就是服务任务。

并行网关 vs. 包含网关

  • 并行:所有路径都运行。
  • 包含:选定的路径运行。
  • 检查:是否可能只有一条路径运行?如果是,使用包含网关;如果所有路径都必须运行,使用并行网关。

中间捕获 vs. 抛出

  • 捕获:流程等待。
  • 抛出:流程发送。
  • 检查:箭头是指向事件(捕获)还是从事件中指出(抛出)?

10. 实施注意事项 🚀

虽然本指南侧重于符号表示,但这些图表的实现通常涉及执行引擎。理解符号表示可确保逻辑能够转化为代码或工作流规则。

  • 条件评估: 确保网关条件是可测试的表达式。
  • 超时: 使用定时中间事件进行服务级别协议(SLA)跟踪。
  • 通知: 使用消息结束事件来触发外部警报。

符号规则摘要 📜

遵循BPMN标准可确保您的图表具有可移植性,并且任何利益相关者都能理解。

  • 事件是圆形: 开始(细线),结束(粗线),中间(双细线)。
  • 活动是圆角矩形: 任务(内部有图标),子流程(内部有加号)。
  • 网关是菱形: XOR(X),AND(+),OR(o),事件(六边形)。
  • 连接是线条: 顺序(实线),消息(虚线),关联(虚线)。
  • 图示是文档: 数据、分组、注释。

通过掌握这些符号,您将为流程优化奠定基础。清晰的图表能减少歧义,简化沟通,并促进准确的自动化。学习符号表示所投入的努力,将在最终业务流程的清晰度上得到回报。

请记住,图表是一种合同。如果逻辑不清晰,执行就会出错。请定期审查您的模型,以确保它们仍然反映当前的业务现实。