# 范围边界事件

# 一、基本概念

范围边界事件是指附着在子流程(范围)边界上的事件,用于捕获和处理流程执行过程中的特定情况。与任务边界事件类型相同,但应用场景更广泛。

# 二、常用事件类型及场景

# 1. 信号/消息边界事件

配置方式

  1. 拖拽信号边界事件吸附到子流程边界
  2. 设置信号名称和信号Key(必须包含业务ID如订单ID)

典型场景

  • 订单处理中突发取消(示例):

    • 子流程内:开始 → 确认订单 → 备货 → 发货
    • 边界事件:捕获"订单取消"信号 → 连接取消处理节点

    信号事件示例图 ▲ 信号事件示例图

注意事项

  • 必须配置信号Key实现精准匹配
  • 支持消息边界事件(需配置消息名称)

# 2. 定时边界事件

配置方式

  1. 拖拽定时事件到子流程边界
  2. 设置时间表达式(如8小时)

典型场景

  • 业务流程超时控制:

    • 示例:备货+发货总时长≤8小时
    • 超时后触发:销售主管介入节点(非中断事件)

    定时边界示例图 ▲ 定时边界示例图

优势

  • 解决传统OA流程无法设置多步骤总时长的问题

# 3. 升级边界事件

配置方式

  1. 设置子流程内节点抛出升级事件(如SysDecision)
  2. 边界事件配置捕获相同事件

典型场景

  • 层级审批终审场景:

    子流程内任一节点 → 满足条件时抛出SysDecision事件 → 边界事件捕获 → 跳出审批流程

    升级边界示例图 ▲ 升级边界示例图

# 4. 条件边界事件

配置方式

  1. 设置基于表单数据的条件(如Convert.ToDecimal(FormRootRow["折扣"])<=0.5
  2. 建议使用非中断类型

典型场景

  • 动态业务规则监控:

    审批过程中折扣低于0.5 → 触发销售总监审批节点

条件边界流程示例 ▲ 条件边界流程示例

# 三、配置步骤

  1. 创建子流程范围
  2. 拖拽边界事件到子流程边界
  3. 设置事件属性:
    • 信号/消息:配置名称和Key
    • 定时:设置触发方式、时长
    • 升级:匹配抛出事件名
    • 条件:编写条件表达式
  4. 连接后续处理节点

# 四、注意事项

  1. 中断 vs 非中断:
    • 中断事件:终止子流程内所有活动
    • 非中断事件:子流程继续执行
  2. 业务数据关联:
    • 信号/消息必须包含业务标识
    • 条件事件可访问运行时表单数据
  3. 事件优先级:
    • 多个事件同时触发时按配置顺序处理

# 五、最佳实践

  1. 订单处理流程:
    • 信号事件处理取消
    • 定时事件控制处理时效
  2. 审批流程:
    • 升级事件实现动态终审
    • 条件事件监控关键参数变更
  3. 组合使用:
    • 定时+消息实现复杂业务超时处理

注:所有配置均可在流程设计器中通过拖拽和属性面板完成,无需编写代码。