流程审批时,用户不小心点击了不通过按钮,将流程结束了。如何将结束的流程恢复成审批状态,最直接的方法是修改数据库此方法仅供参考):

1.首先找到流程实例对应的id,例如:PROC_INST_ID_ ='202501161879810315761889281',此id多表共用。在ACT_HI_PROCINST 表中,通过PROC_INST_ID_筛选数据,删除实例对应的END_TIME_,DURATION_,DELETE_REASON_三个字段的数据

2.在ACT_HI_TASKINST 表中通过PROC_INST_ID_找到取消的任务节点,删除对应END_TIME_,DURATION_,DELETE_REASON_三个字段的数据(因为我的流程在并行任务处结束,所以需要操作多条记录

REV_字段值改为1

3.在ACT_HI_VARINST 表中,使用PROC_INST_ID_和上一步ACT_HI_TASKINST表中修改记录的EXECUTION_ID_筛选数据,将字段NAME_为TASK_REASON的记录删除,对字段NAME_为TASK_STATUS的记录将LONG_和TEXT_的值修改为1(若有多个字段NAME_为TASK_STATUS的记录,根据字段TASK_ID_的值区分应该修改哪一个

仅使用PROC_INST_ID_筛选数据,找到字段NAME_为ROCESS_STATUS的记录,将将LONG_和TEXT_的值也修改为1

4.在ACT_HI_COMMENT表中,通过 PROC_INST_ID_找到字段MESSAGE_值为"审批不通过..."的记录并删除

5.在ACT_HI_ACTINST表中,先通过PROC_INST_ID_筛选数据,根据ACT_NAME_可以找到需要操作的任务名,然后删除对应END_TIME_,DURATION_,DELETE_REASON_字段的数据

6.ACT_RU_ACTINST 表里对应的实例数据在流程结束后已经全部转化为历史数据,使用PROC_INST_ID_查是空的,所以需要从ACT_HI_ACTINST表导入对应的实例数据。

7.ACT_RU_IDENTITYLINK表里的数据也需要导入,可使用以下sql快速导入:

INSERT INTO ACT_RU_IDENTITYLINK(ID_,REV_,GROUP_ID_,TYPE_,USER_ID_,TASK_ID_,PROC_INST_ID_,SCOPE_ID_,SUB_SCOPE_ID_,SCOPE_TYPE_,SCOPE_DEFINITION_ID_)(
SELECT ID_,1 REV_,GROUP_ID_,TYPE_,USER_ID_,TASK_ID_,PROC_INST_ID_,SCOPE_ID_,SUB_SCOPE_ID_,SCOPE_TYPE_,SCOPE_DEFINITION_ID_ FROM ACT_HI_IDENTITYLINK WHERE PROC_INST_ID_  = '202501161879810315761889281'
)

使用前先将PROC_INST_ID_替换成自己的

8.在ACT_RU_EXECUTION 表中新建流程实例对应的执行记录 ,这一步稍微比较复杂,需要找准表之间字段的对应关系。

在ACT_HI_TASKINST表中找到第2步操作过的记录,有多少个记录就要在ACT_RU_EXECUTION 表创建多少个子执行记录,此外还要再创建一个父执行记录。子执行记录的PARENT_ID_为父执行记录的ID_,父执行记录的BUSINESS_KEY_与ACT_HI_PROCINST表对应实例的BUSINESS_KEY_一致,父执行记录的ID_和ACT_HI_PROCINST表对应实例的ID_一致,其他数据参考其他审批中的流程来补充。(若流程结束前有一个待审批状的会签任务,则要创建一个会签任务主执行记录和会签审批人同等数量的会签任务子执行记录

9.ACT_RU_TASK表需要添加对应任任务记录,字段ID_和EXECUTION_ID_对应ACT_RU_ACTINST表的字段TASK_ID_和EXECUTION_ID_,其他字段参照正常审批中的流程来寻找对应关系进行填充

10.ACT_RU_VARIABLE表需要添加对应记录,从ACT_HI_VARINST导入,导入的记录为ACT_RU_EXECUTION对应的记录,可通过以下sql快速导入:

INSERT INTO ACT_RU_VARIABLE(ID_,REV_,TYPE_,NAME_,EXECUTION_ID_,PROC_INST_ID_,TASK_ID_,BYTEARRAY_ID_,DOUBLE_,LONG_,TEXT_,TEXT2_)(SELECT ID_,REV_,VAR_TYPE_,NAME_,EXECUTION_ID_,PROC_INST_ID_,TASK_ID_,BYTEARRAY_ID_,DOUBLE_,LONG_,TEXT_,TEXT2_ FROM ACT_HI_VARINST WHERE EXECUTION_ID_ IN ('202501211881653090855460866','202501211881654293458886658'))

使用前先将EXECUTION_ID_替换成自己的,导入后将ACT_RU_VARIABLE表中字段REV_值全部修改为1,BYTEARRAY_ID_不一致但是不影响

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐