目录
概念澄清
问题表象
问题分类
分析过程
结束语(如果觉得文章太长可以直接跳到结束语,但还是建议阅读全文)
概念澄清
审批节点的审批
审批节点的审批操作处理的是待办任务,并不会把 单据 的状态 变为 审核或者已审批状态
自动节点配置的审核
审核方法指 业务单据自身的审核 方法,会把 单据状态 变为 已审核 或者 已审批。
在流程配置中通常在 审批节点之后会紧跟着一个 自动节点-在自动节点中配置 业务的审核,如下图(审核通过代表的是业务设置单据状态为已审核):
结合上面第3点,给用户的表象就是 通过流程中心/消息中心/流程助手 审批完某个单据之后,单据状态会变为 已审核。
也就是说流程中的 单据状态是否能变成 已审核,取决于 :
流程中是否配置了 设置 单据为 审核 的自动节点。
流程是否能正确调用 业务的 审核方法
业务的审核方法 是否能正确的执行
问题表象
流程中的单据在审批人 审批通过之后,单据状态没有从已提交变成已审核
问题分类
流程的“审核通过”节点报错挂起,这类问题提单或咨询对应的业务同事即可快速解决
流程的“审批通过”正常执行,节点并未任何报错,但是单据状态 还是没有变成 “审核通过”
分析过程
先去检查流程的审批节点的后续节点是否存在 自动节点,设置单据状态为已审批/已审核。例如下图:
确定流程中配置了“审核通过”的自动节点之后。去客户端 查看 上机日志。因为上机日志会记录外部对单据的操作,通过这些操作我们可以来确定单据有没有被审核,是否在审核之后又被修改了。打开上机日志列表页面之后,通过单据编码去过滤 单据的 操作记录。
假设 单据编码为 llp202011-0069,则在日志查询的自定义面板的过滤条件为: 操作对象 等于 llp202011-0069。
点击确定之后就会加载出 这个单据的所有操作记录,如下图:
如上图的 付款单修改操作 会把单据状态变为 提交状态;付款单审批操作 会把单据状态变为 审批状态。
3. 补充已下知识点:修改操作和审批操作在什么场景下被调用?
保存单据,提交单据的时候会使单据状态 变为 新增或修改
审核(注意,上图中的“付款单审批”是业务单据的审核,并不是流程中的审批)操作 会使单据状态 变为 审批或审核
特殊的一点是:在流程审批的时候,如果此时审批的单据页面状态是“可以编辑的”,那么在做流程审批的时候也会调用 业务的提交操作,已保证可能被修改的单据数据可以被保存。即 此时的流程审批 也会把单据的状态变为 已提交。
4. 看完第3点之后 ,接着第2点。通过在工作流》流程图》业务流程列表中“审核通过”节点的完成时间来定位 上级日中 这个单据的 审核操作 是否存在:
通过上图可以定位到 审核操作 发生在2020-11-25 15:20:54(有两条记录的原因是业务调用了2次上机日志接口来记录数据)。与客户现场的 “审核通过”节点开始时间相同,则证明 流程正常的调用了业务的方法。
到这里分叉出2个逻辑线:
上机日志记录到 审核操作发生之后,又存在 用户无意识的单据重复提交操作。如下图,在审核操作5秒之后又存在一次修改操作:
上机日志中并没有其他修改单据状态的操作,则证明 业务审核操作内部发生逻辑错误 并未成功执行审核。则需要找业务的同时分析。
下面来分析 “用户无意识的单据重复提交操作”
5. 用户无意识的重复提交单据
再次提交操作的发生时间不会 离 自动节点的审核操作发生时间 太久(界定在几分钟之内)
实际的业务会根据 审核状态来进行,假设业务A在流程中调用,并且需要单据是审核状态才能进行,如果业务A已发生,但是单据状态不是审核,排除此类
单据此时没有正在运行的流程,排除此类
目前发现的场景是:用户在客户端做完审批之后,审批页面并未正常关闭,用户以为没有审批成功,再次或多次点击 审批页面的 提交 按钮之后,页面关闭。此时的单据界面状态又是编辑状态,在前面第3点提到过,编辑状态下的单据会被提交保存,使状态变为 已提交。如下图:
针对这个问题工作流在850已出补丁:PT154344
怎么认定用户是在审批页面无意识的重复提交?
结束语
流程中单据状态不变更的问题到这里就全部分析完了,目前为止分为3类:
业务报错,且错误正常抛出,流程挂起,这种最好解决
流程没有挂起,自动节点正常运转,单据状态未变更。这种要先去查看这个单据的上机日志
如果上机日志中有 对应时间(自动节点的调用时间) 的业务审核/审批的操作记录
则去查看后面有没有紧跟着(多数相差几分钟内) 不正常的 提交操作,有的话850已出补丁:PT154344
没有不正常的提交操作,则需要找业务分析自己的审核方法内部是不是存在:异常未抛出可能导致的逻辑错误
强烈建议所有的在工作流中运行的业务方法都要抛出异常,不要吃掉异常
推荐阅读