EAS工作流中单据状态不变更的问题原创
金蝶云社区-id_bao
id_bao
12人赞赏了该文章 1,155次浏览 未经作者许可,禁止转载编辑于2021年03月12日 14:53:11
封面
  • 目录

  • 概念澄清

  • 问题表象

  • 问题分类

  • 分析过程

  • 结束语(如果觉得文章太长可以直接跳到结束语,但还是建议阅读全文)



概念澄清

  1. 审批节点的审批

    审批节点的审批操作处理的是待办任务,并不会把 单据 的状态 变为 审核或者已审批状态

  2. 自动节点配置的审核

    审核方法指 业务单据自身的审核 方法,会把 单据状态 变为 已审核 或者 已审批。

  3. 在流程配置中通常在 审批节点之后会紧跟着一个 自动节点-在自动节点中配置 业务的审核,如下图(审核通过代表的是业务设置单据状态为已审核):


     

  4. b1.PNG

  5. 结合上面第3点,给用户的表象就是 通过流程中心/消息中心/流程助手 审批完某个单据之后,单据状态会变为 已审核。

  6. 也就是说流程中的 单据状态是否能变成 已审核,取决于 :

    • 流程中是否配置了 设置 单据为 审核 的自动节点。

    • 流程是否能正确调用 业务的 审核方法

    • 业务的审核方法 是否能正确的执行


问题表象

流程中的单据在审批人 审批通过之后,单据状态没有从已提交变成已审核

image.png

问题分类

  1. 流程的“审核通过”节点报错挂起,这类问题提单或咨询对应的业务同事即可快速解决

  2. 流程的“审批通过”正常执行,节点并未任何报错,但是单据状态 还是没有变成 “审核通过”

分析过程


  1. 先去检查流程的审批节点的后续节点是否存在 自动节点,设置单据状态为已审批/已审核。例如下图:



  2. b1.PNG

  3. 确定流程中配置了“审核通过”的自动节点之后。去客户端 查看 上机日志。因为上机日志会记录外部对单据的操作,通过这些操作我们可以来确定单据有没有被审核,是否在审核之后又被修改了。打开上机日志列表页面之后,通过单据编码去过滤 单据的 操作记录。

    • 假设 单据编码为 llp202011-0069,则在日志查询的自定义面板的过滤条件为: 操作对象 等于 llp202011-0069。

    • 点击确定之后就会加载出 这个单据的所有操作记录,如下图:

      image.png

    • 如上图的 付款单修改操作 会把单据状态变为 提交状态;付款单审批操作 会把单据状态变为 审批状态。

  

 3. 补充已下知识点:修改操作和审批操作在什么场景下被调用?

    • 保存单据,提交单据的时候会使单据状态 变为 新增或修改

    • 审核(注意,上图中的“付款单审批”是业务单据的审核,并不是流程中的审批)操作 会使单据状态 变为 审批或审核

    • 特殊的一点是:在流程审批的时候,如果此时审批的单据页面状态是“可以编辑的”,那么在做流程审批的时候也会调用 业务的提交操作,已保证可能被修改的单据数据可以被保存。即 此时的流程审批 也会把单据的状态变为 已提交。



  4. 看完第3点之后 ,接着第2点。通过在工作流》流程图》业务流程列表中“审核通过”节点的完成时间来定位 上级日中       这个单据的 审核操作 是否存在:

      image.png

通过上图可以定位到 审核操作 发生在2020-11-25 15:20:54(有两条记录的原因是业务调用了2次上机日志接口来记录数据)。与客户现场的 “审核通过”节点开始时间相同,则证明 流程正常的调用了业务的方法。

      到这里分叉出2个逻辑线:

    • 上机日志记录到 审核操作发生之后,又存在 用户无意识的单据重复提交操作。如下图,在审核操作5秒之后又存在一次修改操作:

      image.png

    • 上机日志中并没有其他修改单据状态的操作,则证明 业务审核操作内部发生逻辑错误 并未成功执行审核。则需要找业务的同时分析。

    • 下面来分析 “用户无意识的单据重复提交操作”


  5. 用户无意识的重复提交单据

      目前发现的场景是:用户在客户端做完审批之后,审批页面并未正常关闭,用户以为没有审批成功,再次或多次点击 审批页面的 提交 按钮之后,页面关闭。此时的单据界面状态又是编辑状态,在前面第3点提到过,编辑状态下的单据会被提交保存,使状态变为 已提交。如下图:

    image.png

    针对这个问题工作流在850已出补丁:PT154344

    怎么认定用户是在审批页面无意识的重复提交?

    • 再次提交操作的发生时间不会 离 自动节点的审核操作发生时间 太久(界定在几分钟之内)

    • 实际的业务会根据 审核状态来进行,假设业务A在流程中调用,并且需要单据是审核状态才能进行,如果业务A已发生,但是单据状态不是审核,排除此类

    • 单据此时没有正在运行的流程,排除此类




结束语

流程中单据状态不变更的问题到这里就全部分析完了,目前为止分为3类:

  1. 业务报错,且错误正常抛出,流程挂起,这种最好解决

  2. 流程没有挂起,自动节点正常运转,单据状态未变更。这种要先去查看这个单据的上机日志

  3. 如果上机日志中有 对应时间(自动节点的调用时间) 的业务审核/审批的操作记录

  4. 则去查看后面有没有紧跟着(多数相差几分钟内) 不正常的 提交操作,有的话850已出补丁:PT154344

  5. 没有不正常的提交操作,则需要找业务分析自己的审核方法内部是不是存在:异常未抛出可能导致的逻辑错误

  6. 强烈建议所有的在工作流中运行的业务方法都要抛出异常,不要吃掉异常

赞 12