希赛考试网
首页 > 软考 > 系统集成项目管理工程师

flowable工作流审批记录删除哪个表

希赛网 2023-12-19 12:20:28

Flowable工作流是一个基于Java的轻量级流程引擎,可以用于各种业务流程的管理和自动化。在使用Flowable工作流进行审批管理时,有时需要删除已经审批过的记录。那么,flowable工作流审批记录删除操作对应哪个表呢?下面从多个角度分析这个问题。

1.数据表结构

首先,需要了解Flowable工作流的数据表结构。Flowable引擎将数据存储在一系列的表中,包括:

- ACT_RE_* 表:存储静态的流程定义和流程资源

- ACT_RU_* 表:存储运行时数据,如流程实例、任务实例、变量等

- ACT_HI_* 表:存储历史数据,如历史流程实例、历史任务实例、历史变量等

通过查询ACT_RE_* 表,可以查看流程定义的信息;查询ACT_RU_* 表,可以查看正在运行的流程实例信息;查询ACT_HI_* 表,则可以查看历史数据信息。

2.审批记录的存储位置

接下来,需要确定审批记录的存储位置。在Flowable工作流中,每个流程实例会对应一个或多个任务实例,而每个任务实例又会对应一个历史任务实例。因此,审批记录可以在ACT_RU_TASK 和ACT_HI_TASKINST表中找到。

ACT_RU_TASK 表用于存储正在运行的任务实例,其中包括实例标识ID、任务定义ID、流程实例ID等信息。而ACT_HI_TASKINST 表则用于存储历史任务实例,其中包括任务实例标识ID、任务定义ID、流程实例ID等信息,还有审批人员的信息和任务创建、完成时间等信息。

3.删除审批记录操作

针对审批记录的删除操作,可以通过SQL语句或Java代码实现。需要注意的是,删除操作需要根据业务需求进行谨慎操作,以免误删或造成数据异常。

使用SQL语句进行删除

首先需要通过查询ACT_RU_TASK 和 ACT_HI_TASKINST表,获取需要删除的任务实例和历史任务实例的ID。然后,通过SQL语句执行删除操作,示例代码如下:

```

DELETE FROM act_ru_task WHERE ID_ = #{taskId};

DELETE FROM act_hi_taskinst WHERE ID_ = #{taskId};

```

其中,#{taskId} 是要删除的任务实例或历史任务实例的ID。

使用Java代码进行删除

可以通过Flowable提供的API,调用相应的方法进行审批记录的删除操作,示例代码如下:

```

// 查询需要删除的任务实例

Task task = taskService.createTaskQuery().taskId(taskId).singleResult();

if (task != null) {

// 删除任务实例

taskService.deleteTask(taskId, true);

}

// 查询需要删除的历史任务实例

HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();

if (historicTask != null) {

// 删除历史任务实例

historyService.deleteHistoricTaskInstance(taskId);

}

```

需要注意的是,如果删除的是历史任务实例,还需要注意判断是否有相应的历史流程实例、任务实例和变量等信息,以免删除之后引起数据异常。

总结

针对Flowable工作流审批记录的删除操作,可以通过查询ACT_RU_TASK 和ACT_HI_TASKINST表,在SQL语句或Java代码中执行删除操作。删除操作需要谨慎进行,以免误删或造成数据异常。

扫码咨询 领取资料


软考.png


系统集成项目管理工程师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
系统集成项目管理工程师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件