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代码中执行删除操作。删除操作需要谨慎进行,以免误删或造成数据异常。
扫码咨询 领取资料