【EAS工作流】数据库表空间不足/事务日志满等异常导致流程卡住原创
金蝶云社区-汪伟康
汪伟康
14人赞赏了该文章 484次浏览 未经作者许可,禁止转载编辑于2023年10月17日 09:35:39

问题:数据库表空间不足等异常导致工作流后台事务未正常结束,流程流转卡住。


该问题对应的多种原因场景及解决方案具体阐述如下:


  • 1.针对【已失败】状态的后台事务

1)、首先通过【后台事务监控】,标题类似WF,状态等于已失败,查询出异常的工作流后台事务。

2)、双击对应创建时间的已失败的后台事务,可看到错误信息,如对应“表空间不足”之类的报错即就是我们需要处理的后台事务

3)、选中2中已失败的后台事务-点击修复,修复成功,对应流程即恢复正常


(注:后台事务【修复】操作就是重新执行该条后台事务任务)

image.png

image.png



image.png



  • 2.针对【执行中】的后台事务

1)、一样通过后台事务监控 过滤出 标题类似WF 状态为执行中的后台事务

image.png

image.png


2)、查询已办任务对应的流程实例(替换后台事务标题中的任务id) 

SELECT FCODE  FROM T_wfr_procinst where fprocinstid in(SELECT FPROCINSTID  FROM T_WFR_ASSIGNDETAIL where FASSIGNID = 'd2576c57-3cd2-426c-a5af-2ea007fa3166WFWKITEM')


3)、工作流监控中 通过流程编码 查询流程实例,发现是对应问题流程


image.png

4)、需要对这些后台事务进行后台修改状态为失败

    --查询并备份这些执行中,实际已经失败的后台事务(建议替换下面后台事务创建时间来保证查询范围精确)

    --1.查询(查询分析器中执行的话,以下日期比较格式是sql server语法,oracle需要修改日期格式为{ts'2023-10-08 00:00:00'}

  SELECT * FROM T_job_inst where ftitle like '%WF%' and FSTATE = 'Running' and FCREATEDTIME >='2023-10-08 00:00:00' and  FCREATEDTIME <'2023-10-09 00:00:00';


 

    --2.备份数据到表T_job_inst_bk231009(该表名可自定义)

    SELECT * into T_job_inst_bk231009 FROM T_job_inst where ftitle like '%WF%' and FSTATE = 'Running' and FCREATEDTIME >='2023-10-08 00:00:00' and  FCREATEDTIME <'2023-10-09 00:00:00';



    --3.修改状态为失败

 UPDATE T_job_inst SET FSTATE = 'Failed'  WHERE  FJOBINSTID in (SELECT FJOBINSTID FROM T_job_inst_bk231009);



5)、 在后台事务监控中过滤 已失败的 后台事务,注意对比是之前那几个执行中 的,确认 就批量选中,点修复。

修复成功之后会刷新列表,再没有数据代表后台事务重新执行成功,此时再去看对应流程是否正常。

image.png

image.png


流程打开刷新之后流转正常了

image.png


  • 3. 针对【已接收】【重新调度】【等待中】【已就绪】状态的后台事务

如果上述1,2场景都已经处理掉了,还有存在没有往下流转的流程,那么很可能就是这第3种情况。

1)、首先我们可以通过流程实例id来查询其对于的未结束的后台事务(替换参数为流程实例id)

SELECT * FROM  T_job_inst  WHERE  FJOBINSTID = '32dc3925-ea12-42cd-bf39-563ae4553e45WFPCINST'


注:流程实例id不知道怎么查?可通过流程实例编码来查询:

select fprocinstid from t_wfr_procinst where fcode = '替换流程实例编码';


2)、如果1)中查到了,那么可以通过标题ftitle字段到后台事务监控中 过滤出来,前台看的更清楚,如下图是已就绪状态的工作流后台事务未执行导致。

image.png


3)、这种场景很简单,我们选中该后台事务点 【挂起】,然后再点【唤醒】即可解决。

如果存在大批量该类状态后台事务导致,也可以通过状态和计划时间过滤出来,然后批量选中  点【挂起】,然后再点【唤醒】解决。

image.png


赞 14