# 流程触发

在BPMN2标准中,流程启动方式相比传统OA流程更加丰富和灵活。本文将详细介绍信号启动、条件启动和消息启动三种主要方式,并通过实例演示其配置方法。

# 一、 信号启动流程

概念:第三方系统通过向BPM发送信号(信号名+信号数据)自动触发流程。

# 信号启动的特点

  • 松耦合:外部系统无需了解流程内部实现。
  • 广播机制:一个信号可触发多个流程。
  • 容错性强:内置异常处理机制。

# 配置步骤

  1. 添加信号开始事件节点。
  2. 设置信号名称(如订单创建)。
  3. 定义信号数据结构(编辑Payload,加两个字段,a:字符串,b:数字)。
  4. 映射信号数据到流程表单字段。

配置信号开始事件 ▲ 配置信号开始事件

# 信号发送方式

  • 控制台命令signal 订单创建 {a:'你好',b:123.45}

控制台发送信号 ▲ 控制台发送信号

# 二、 条件启动流程

# 条件启动的特点

  • 状态跃迁触发:仅当条件从false变为true时触发。
  • 实时监控:自动监听变量变化。
  • 适用于:库存预警、阈值监控等场景。

# 配置步骤

  1. 添加条件开始事件节点。
  2. 设置监控变量(如库存)。
  3. 编写条件表达式(如Convert.ToDecimal(GlobalVariables.库存)<50)。

配置条件开始事件 ▲ 配置条件开始事件

# 变量设置方式

  • 控制台命令set 库存 30

设置系统变量触发条件 ▲ 设置系统变量触发条件

# 三、 消息启动流程

# 消息启动的特点

  • 独占触发:同一消息只触发一个流程实例。
  • 精准投递:适用于需要防重复的场景。
  • 行为类似:配置方式与信号启动相同。

# 与信号启动的对比

特性 信号启动 消息启动
触发机制 广播式(触发所有订阅者) 独占式(只触发一个)
适用场景 多系统协同 防重复处理
模拟命令 signal message

# 四、 三种启动方式的适用场景

  1. 信号启动

    • 电商订单创建。
    • IoT设备事件处理。
    • 跨系统业务流程。
  2. 条件启动

    • 库存预警。
    • 系统监控告警。
    • 阈值触发任务。
  3. 消息启动

    • 支付结果处理。
    • 唯一性业务处理。
    • 防重复消费场景。

# 五、 技术优势分析

  1. 解耦设计

    • 外部系统只需发送标准信号/消息。
    • 流程变更不影响外部系统。
  2. 可视化配置

    • 无需编写发起代码。
    • 业务人员可参与配置。
  3. 健壮性保障

    • 内置重试机制。
    • 异常流程可视化监控。

通过掌握BPMN2的流程启动机制,可以构建更加灵活、健壮的业务流程系统。建议新项目优先采用信号/消息启动方式,逐步替代传统的API调用方式。