Activiti7.0实战学习(七):流程定义信息之删除
背景
- 数据库中要有必要的数据信息。比如流程定义表,流程定义的部署,流程实例的启动。
- 根据ID删除,根据的是act_ru_deployment表的id进行删除的。
- 这个删除操作影响了哪些表中的数据记录呢?
- 流程定义信息的删除,操作的是act_ru_deployment表。是因为我们部署流程定义的信息的时候,其实就是把bpmn中的数据写到数据库中而已。因此,它删除的时候,没有找act_ru_procdef表,但是删除后,这张表的相关数据也会被删除。
过程
- 数据库中表act_ru_deployment的数据记录
-
如果删除了一个不存在的ID会Activiti是怎么应对的?
-
控制台打印(Activiti是抛出一个异常)
-
删除ID是1的代码逻辑
-
删除ID是1的流程定义信息后,数据库影响了哪些表?
act_ru_deployment表中关于这条id的数据被删除
act_ru_procdef表中相关联的数据被删除
act_hi_taskinst表中数据变化
act_hi_actinst表中数据变化
从这些数据表的变化,可以逻辑推出,受影响的就是流程定义表,流程部署表,而关于这个流程的实例和这个实例已经完成的历史记录数据是不会受到影响的。
-
注意事项
因为流程定义信息和流程部署是一对一的一个关系,也就是数据库中会这样存储,一条流程定义记录和与之对应的一条流程部署记录。然而,一条流程部署记录对应无数个流程实例。因此,当还有存在实例未完成的情况下,还是上面的删除逻辑,会删除流程定义信息吗?答案是不能。那又怎样删除呢?多给一个参数true即可。repositoryService.deleteDeployment(“1”,true); 默认是false。
小结
- 要理解流程定义信息的来源,流程定义信息的部署,流程实例的启动。
- 一条流程定义信息记录对应一条流程部署信息记录。
- 一条流程部署信息记录对应无数流程实例。
- 删除的时候,操作的是流程部署表,而不是流程定义表。
- 删除的注意事项。这个理解其实就是基本的业务逻辑的理解。如果还有任务没有完成,但是这个时候我却把元数据删除了,后续任务还怎么能流转呢?这里的元数据其实就可以理解为流程定义信息。