flowable通过数据库删除某任务

前言

  1. flowabel虽然存在通过api删除任务,但要求任务必须完成才可删除
  2. flowable表中存在许多外键,以下仅说明用到的,其它请自行表中查询,删除时需要按照指定顺序,最后提前备份好数据,以便恢复

表关系

ACT_RU_IDENTITYLINK(处理人/候选组变量) TASK_ID_(ACT_RU_TASK的ID_)
ACT_RU_TASK(运行时任务) ID_:任务id EXECUTION_ID_(ACT_RU_EXECUTION的ID_) PROC_INST_ID_:流程实例id
ACT_HI_TASKINST(历史任务实例) ID__(ACT_RU_TASK的ID_) EXECUTION_ID_(ACT_RU_EXECUTION的ID_)
ACT_RU_EXECUTION(执行实例) ID_:执行实例id
ACT_RU_ACTINST(任务实例) TASK_ID_(ACT_RU_TASK的ID_) EXECUTION_ID_(ACT_RU_EXECUTION的ID_)
ACT_RU_VARIABLE(任务变量) TASK_ID_(ACT_RU_TASK的ID_):存在说明为任务本地变量 EXECUTION_ID_(ACT_RU_EXECUTION的ID_)

操作步骤

  1. 首先找到所需任务,一般通过ACT_RU_TASK(运行时任务)的PROC_INST_ID_(流程实例id)或者ID_(任务id),这里我们记录任务id,如果需要全量删除,还需记录EXECUTION_ID_(执行实例id)
  2. 删除ACT_RU_IDENTITYLINK(处理人/候选组变量): 通过TASK_ID筛选数据并删除
  3. 删除ACT_RU_TASK:此表的ID_ACT_RU_IDENTITYLINKTASK_ID 存在外键关联,所以需要先删除ACT_RU_IDENTITYLINK的数据,直接删除对应ID_ 的数据
  4. 删除ACT_HI_TASKINST(任务流程实例): 防止流程履历显示,筛选ID_ACT_RU_TASKID_ 相等的数据删除
  5. 通过以上操作,该任务已不在页面显示,但数据库存在冗余数据,以下操作可视情况进行操作
  6. 删除ACT_RU_EXECUTION(执行实例):此表的ID_ACT_RU_TASKEXECUTION_ID_ 存在外键关联,通过ID_ 删除
  7. 删除ACT_RU_ACTINST:通过EXECUTION_ID_ 删除
  8. 删除ACT_RU_VARIABLE:通过EXECUTION_ID_ 删除,注意:任务变量删除需谨慎,可能部分会在后续流程使用,请按需删除
  9. 其余的历史任务表(ACT_HI_*),按需删除,此处不再赘述

sql

-- ID_:cd239bdd-bfdb-11ee-a5bc-40b07609fa82
-- EXECUTION_ID_: cd2374ca-bfdb-11ee-a5bc-40b07609fa82
DELETE FROM ACT_RU_IDENTITYLINK WHERE TASK_ID_ = "cd239bdd-bfdb-11ee-a5bc-40b07609fa82";
DELETE FROM ACT_RU_TASK WHERE ID_="cd239bdd-bfdb-11ee-a5bc-40b07609fa82";
DELETE FROM ACT_HI_TASKINST WHERE ID_="cd239bdd-bfdb-11ee-a5bc-40b07609fa82";

-- 其它sql
DELETE FROM ACT_RU_EXECUTION WHERE `ID_` = 'cd2374ca-bfdb-11ee-a5bc-40b07609fa82'
DELETE FROM ACT_RU_ACTINST WHERE EXECUTION_ID_ ="cd239bdd-bfdb-11ee-a5bc-40b07609fa82";
-- 任务变量删除需谨慎,可能部分会在后续流程使用,请按需删除
DELETE FROM ACT_RU_VARIABLE WHERE EXECUTION_ID_ = "cd2374ca-bfdb-11ee-a5bc-40b07609fa82";
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐