# 回退失败问题排查与解决手册
当遇到流程回退失败时,请根据您看到的具体现象,直接查阅下方对应的章节,按照步骤操作即可。
# 现象一:点击回退按钮后,流程无响应或直接报错
# 1. 报错信息包含“未找到活动定义,活动定义ID:null”
原因:流程定义文件可能已修改,回退的目标节点ID在最新版定义中已不存在。
解决步骤:
查询目标ID:在数据库中找到当前流程实例记录的目标活动ID。将
12345替换为您的流程实例IDSELECT CURRENTACTIVITYID FROM WFPROCESSINST WHERE PROCESSINSTID = 12345;检查定义:在流程设计器中打开该流程,搜索上一步查到的活动ID,确认是否被删除或重命名。
解决方案:
- 临时修复:修改回退按钮配置,将提交策略改为跳转提交,绕过对原路径的校验。
- 彻底修复:如果是定义错误,需修正流程定义并重新发布。注意:重新发布通常只影响新流程实例。
# 2. 报错信息包含“回退策略配置错误”或流程卡在聚合节点
原因:多分支聚合场景下,回退后,之前走过的分支被重置,但聚合节点需要所有分支条件满足才能再次通过。
解决步骤:
修改按钮策略:找到该人工节点的回退按钮配置。
启用“跳转提交”:将提交策略从原路径提交改为跳转提交。
(备选方案)重置分支条件:如果必须使用原路径提交,则在回退事件中编写逻辑,手动重置所有分支的连线条件变量。
context.relativeData.__bfp_entity.branchCondition1 = true; context.relativeData.__bfp_entity.branchCondition2 = true;
# 3. 报错信息包含“工作项处理时发生错误”或“人工活动启动时发生错误”
原因:回退成功后,启动目标活动时失败,通常是目标活动的参与者配置有问题。
解决步骤:
检查参与者:确认回退目标节点的参与者是否被正确解析。
检查事件:如果目标活动配置了“启动前事件”,请检查对应的事件服务(逻辑流/EOS服务)是否执行成功。
# 现象二:回退成功,但后续流程无法正常推进
# 1. 回退到某节点后,待办任务中找不到处理人
原因:回退操作重置了活动状态,但未正确设置新的处理人,导致参与者“丢失”。
解决步骤:
- 确认问题:查看流程实例,确认目标节点是否处于“等待”状态但无处理人。
- 解决方案:参照【现象一-第3点】的步骤,在回退按钮中重新指定参与者。不要依赖流程定义自动计算,因为历史上下文的参与者信息可能已改变。
# 2. 在多工作项(会签)节点,部分人处理后回退,再次提交时参与者混乱
原因:多工作项场景下,回退策略选择不当,破坏了原有多实例的逻辑。
解决步骤:
- 评估策略:在多工作项场景,慎用原路径提交。
- 推荐配置:
- 如果希望回退后让所有人重新处理,建议使用跳转提交,并在回退目标节点上使用多实例(会签)配置。
- 如果希望回退后由指定人处理,使用跳转提交并重新指定参与者为单个人。
# 现象三:界面问题——页面上没有“回退”按钮
# 1. 符合回退条件的节点,但按钮不显示
原因:按钮权限未开启,或按钮配置了显示条件。
解决步骤:
检查按钮配置:在流程设计器中,选中该人工活动,打开“操作权限”选项卡。
确认勾选:确保“回退”按钮前的复选框已勾选。
检查显示条件:查看“回退”按钮是否配置了“显示条件”。如果有,检查条件表达式在当前场景下是否返回
true。return this.formData.canBack === true;检查首环节:流程的第一个人工环节默认不支持回退。如果业务上需要,可以在第一个环节前增加一个自动活动作为“虚拟节点”。
# 附录:快速排查清单
如果上述现象未能覆盖您的问题,请按以下清单快速排查:
- 看日志:搜索
bps应用eos-trace.log,关键词backActivity、回退、21010004等。 - 看策略:确认回退按钮的配置是原路径提交还是跳转提交?
- 看目标:回退的目标节点ID在当前的流程定义文件中还存在吗?
- 看权限:回退后节点的参与者是谁?是否为空?
- 看分支:如果是聚合节点,回退后所有分支的条件都满足吗?
- 看事件:回退触发的事件执行成功了吗?