You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BPMN错误结束事件时,程序首次执行失败即抛异常而非超时后触发

bpmn_model

问题解决方法

你现在的问题出在Timer Boundary Event的配置逻辑不对,R5/PT10S是让定时器在任务启动后立刻重复触发5次、每次间隔10秒,并没有和任务的失败重试绑定,所以任务首次失败后边界事件直接触发,导致立刻抛出异常。要实现「失败后重试5次、每次间隔10秒,全部失败再抛异常」的需求,按以下方式调整:

  • 调整定时器与任务失败的绑定逻辑
    不要用定时器的重复执行配置,而是把Timer Boundary Event设置为条件触发:

    1. 给执行任务(User/Service Task)添加失败重试变量,比如初始值设为retryCount=5
    2. 把定时器的触发条件设为${execution.getVariable('retryCount') > 0},周期设为PT10S
    3. 任务执行失败时,先递减retryCount,当retryCount变为0时,再触发Error End Event抛出异常
  • 利用BPMN引擎自带的重试机制(推荐)
    以Camunda/Activiti这类主流引擎为例,直接在任务属性里配置:

    1. 设置任务的retries初始值为5,retryTimeout为10000(毫秒,即10秒)
    2. 任务执行失败时,引擎会自动递减retries,并在超时后自动重试
    3. 当retries减到0时,再通过Error End Event抛出异常,或者直接由引擎抛出重试耗尽的错误
  • 关闭引擎的失败立即触发开关
    部分引擎默认在任务失败时直接触发边界事件,需要在引擎配置中关闭该行为,让重试机制优先执行。


内容的提问来源于stack exchange,提问作者Mr.Simple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:12:11