第4章:绘制开始与结束事件:各类开始事件(无触发、消息、定时)规范

开始事件是流程的起点,决定流程在何种条件下被触发。BPMN 2.0 定义了多种开始事件类型,本章聚焦于三种最常用类型:无触发开始事件(None Start Event)、消息开始事件(Message Start Event)和定时开始事件(Timer Start Event)。掌握它们的适用场景与绘制规范,是从流程建模走向企业级可执行流程的第一步。

开始事件类型对比图 无触发 None 圆圈无内部标记 消息 Message 信封图标 (✉) 定时 Timer 时钟图标 (⏰) 典型用例 人工启动流程 无外部触发条件 典型用例 收到订单后启动 集成系统消息到达 典型用例 每天上午9点执行 定时触发任务 事件类型分组

适用场景

开始事件类型 典型场景 示例
无触发开始事件 流程由用户手动启动,无外部消息或定时条件 员工发起请假申请;管理员执行数据清理作业
消息开始事件 流程需等待外部系统发送消息后启动 收到客户订单消息后启动订单处理流程
定时开始事件 流程按固定时间、周期或日历表达式触发 每天23:00自动执行库存盘点;每月1日生成报表

前置条件

  • 无触发开始事件:已定义流程启动入口(如用户界面按钮、API调用点);无需外部依赖。
  • 消息开始事件:已定义消息的载荷结构(XML Schema 或 JSON Schema);消息发送方已同意使用 BPMN 定义的格式;流程引擎已配置消息接收端点。
  • 定时开始事件:已确认定时表达式(日期/时间/周期);流程服务器时钟同步且时区正确;定时器资源(如 Quartz 调度器)已启用。

操作步骤

  1. 创建开始事件节点:在画布上拖拽一个开始事件形状(圆形)。右键选择设为开始事件(若建模工具支持)。
  2. 指定事件类型:双击圆形,在属性面板中设置事件定义:
    • 无触发:选择 None 或不设置任何事件定义。
    • 消息触发:选择 Message,并绑定消息定义(选择已导入的消息结构或输入消息名称)。
    • 定时触发:选择 Timer,并填写以下配置之一:
    时间日期: 2025-12-31T23:59:00
    周期: R3/2025-01-01T09:00:00/PT24H
    持续时间: PT1H (流程创建后1小时启动)
    表达式: 0 0 8 * * ? (每天8点,cron格式)
  3. 配置属性(可选但推荐):设置名称、文档、执行监听器等。消息开始事件建议勾选异步以避免阻塞。
  4. 连接序列流:从开始事件拖出序列流箭头,连接到第一个活动节点。规范中开始事件应只有一个出向序列流。

输入输出物

物料 说明
输入
  • 流程定义文件(BPMN 2.0 XML)
  • 消息定义(若使用消息开始事件)
  • 定时器表达式(若使用定时开始事件)
输出
  • 包含开始事件节点的 BPMN 图(.bpmn 文件)
  • 已配置的流程引擎部署包(含消息关联、定时器定义)

责任边界

  • 流程分析师:选择正确的开始事件类型,并确保与业务场景匹配;定义消息结构或定时节奏。
  • 流程架构师:审核开始事件是否与集成方案(消息通道、ESB)一致;确认定时器不会与服务器负载冲突。
  • 开发工程师:在流程引擎中配置消息接收端点或定时器调度器;实现消息转换(若需要)。

记录材料

以下为消息开始事件的 BPMN XML 片段(包含消息定义和开始事件声明):

<definitions id="ProcessDef_1" targetNamespace="http://bpmn.io/schema/bpmn">
  <message id="OrderMessage" name="orderMsg" />

  <process id="OrderProcess" isExecutable="true">
    <startEvent id="StartEvent_1" name="收到新订单">
      <messageEventDefinition messageRef="OrderMessage" />
    </startEvent>
    ...
  </process>
</definitions>

定时开始事件的 BPMN 片段(使用 ISO 8601 周期表达式):

<startEvent id="TimerStart_1" name="每日盘点">
  <timerEventDefinition>
    <timeCycle>R/P1D</timeCycle>
  </timerEventDefinition>
</startEvent>

异常处理

常见异常与对策:

  • 消息开始事件接收不到:检查消息通道名称是否匹配;确认流程引擎已订阅该消息;验证消息结构是否与定义一致(使用 Schema 校验)。
  • 定时开始事件未触发:排查服务器时区配置;检查 cron 表达式是否准确;查看流程引擎日志是否有定时器初始化错误。
  • 开始事件连接了多个序列流:BPMN 规范不允许开始事件有多个出向流(只能有一个)。需删除多余连线,或使用并行网关延迟分支。
  • 无触发开始事件被误配置为消息类型:若用户期望手动启动却配置了消息监听,会导致流程无法被用户触发。务必在属性面板中清楚区分。

验收标准

完成本节点绘制后,需满足以下条件方可通过验收:

  1. 开始事件图标正确显示对应类型(无触发:空心圆 / 消息:圆内信封 / 定时:圆内时钟)。
  2. 消息开始事件已关联到有效的消息定义(在 BPMN 文件中存在 <message> 定义,且 ID 匹配)。
  3. 定时开始事件的时间表达式能被流程引擎解析(建议在测试环境执行一次模拟验证)。
  4. 开始事件只有一条出向序列流。
  5. 在流程引擎部署测试中,可按预期方式触发流程:手动启动/消息发送/定时到达。