本文总结了问题分类审批后流程停滞的排查过程,主要分为三类问题:运行中状态、已完成状态但有错误日志、已完成状态无错误日志。对于运行中状态,可能是后台事务异常,需根据事务状态进行修复或分析。已完成状态但报错通常因分支条件不满足,需检查流程变量和审批信息。无错误日志则可能后台事务未运行,排查方式相同。文章还提到会签节点问题和审批信息丢失的解决方案,强调需不断修改以减少此类问题。
问题分类
排查过程
总结
问题分类
审批之后,流程不往下走的问题频繁。总体上分为3类:
审批之后节点表现为挂起状态,如下图:
审批之后节点表现为运行中状态,即节点在闪烁,如下图:
审批之后节点表现为已完成状态,如下图:
以上三类问题,本文将不会关注显示为挂起状态的节点,因为节点挂起肯定会有报错,在流程图 》错误日志列表中获取对应的错误日志,自行分析或者提单支持即可。
排查过程
问题一 : 审批之后节点表现为 运行中 状态,即节点在闪烁
已产生审批意见,但是鼠标放到 审批节点 节点提示信息显示 :审批人正在处理中。如下图:
针对这类问题,原因可能是处理这个任务的后台事务不正常了,排查过程为:
按照 标题 类似 assignment 去过滤,如下图:
如果查出来的 后台事务 的 状态 为 已失败。则双击打开这条任务,复制出错误堆栈保存到文本中。然后关闭返回到列表页面 选中任务 点击修复。页面会弹出开始修复的提示。关闭提示之后,再多次刷新列表,如果没有新的数据产生,则表明 修复成功,去查询对应的流程是否变为正常了。如果多次刷新列表页面之后,依然出现 已失败 的数据。则双击打开查看错误堆栈,自行分析或者把错误复制出来,与前面的错误一并交由提单支持。
如果查出来的 后台事务状态为 执行中。则需要收集对应实例的线程堆栈 查看该线程是否被阻塞。收集/查看线程堆栈的方式:https://vip.kingdee.com/questions/144399284928928256/answers/144399492765080064
如果查出来的 后台事务状态为 已完成。再看结束/状态变化时间如果已经早于当前时间了,则可以选中这个后台事务 执行 挂起 操作,然后在对已挂起的任务执行 唤醒 操作。
2. 已产生审批意见,但是鼠标放到 审批节点 节点提示信息显示 :审批人有多个,且审批人已完成。如下图:
这种问题常见于:会签节点,首先双击本节点,查看节点属性是否为会签节点(Signable=true),如下图:
如果是会签节点的话,这个问题可以打补丁:850版本 PT151226
问题二 : 审批之后节点表现为 已完成 状态,且有错误日志
这种节点的审批人也都是已完成状态。排查过程如下:
首先查看错误日志列表中有对应审批时间点的错误日志:
如果有错误日志,且错误日志为 没有满足条件的转移:
把 输出的流程变量 带入到 分支条件中,仔细观察是否满足。如果不满足,则看哪个 输出的流程变量不对,结合单据与流程定义进行检查。
如果分支条件中有用到 输出的审批信息,但是在流程属性》流程变量 中 去查看 这些 审批信息 的值都为 空,并且其他 流程变量 不为空。则说明审批信息的流程变量存在丢失的问题。这是个已知问题,已有解决方案,可以提单到支持部,出私包解决,后期会安排补丁。
如果检查了条件都是满足的还需注意。审批结果 要与 同意,不同意作比较;不能和 真(true),假(false)作比较。如果这里配置错了就去修改下。
2. 没有满足条件的转移 的意思是:常见于多分支的审批节点,每个分支上都设置了业务条件,审批完成向下流转的时候,没有一个分支的业务条件满足,流程不知道该怎么走,所以 就报了 没有满足条件的转移 并且流程停止。排查思路如下:
3. 如果存在其他类型的错误日志,则提单支持或者自行分析。如果没有错误日志,则需要去查看对应的后台事物是不是没有正常运行,排查方式 和 问题一的第1点相同。
问题三: 审批之后节点表现为 已完成 状态,但是没有错误日志
处理过程和问题一相同
总结
以上汇聚了几种造成审批不运转的原因:工作流对应的后台事务不正常,会签完成但是节点没完成,分之条件不满足。每种都有处理思路或者解决方案。但是本文并不能覆盖所有的场景,需要后期不断地修改,希望能做到这类问题越来越少。
推荐阅读