首页 > 代码库 > 15-流程操作(查询和删除部署信息和流程定义信息)

15-流程操作(查询和删除部署信息和流程定义信息)

技术分享

效果如下:

技术分享

查询部署表

技术分享

部署对象Deployment也是接口,它的四个方法刚好对应着部署表act_re_deployment的四个字段

技术分享

技术分享

查询流程定义列表

技术分享

假如这个流程图画错了,我不想使用这个流程了,把它删除掉,那就删除部署信息

删除部署信息

技术分享

流程部署表act_re_deployment里面ID_为1的记录被删除了,并且流程定义表act_re_procdef里面外键DEPLOYMENT_ID_为1的记录也被删除了,因为有外键约束嘛,不可能只删除流程部署表的信息

技术分享

现在看是没有问题,我来制造一个问题,比如选择流程部署的ID=1901的记录,那么流程定义表里面对应的记录的流程定义ID=qjlc:14:1904,按照这个流程定义的ID启动一个流程实例,启动完之后试着删除这个ID=1901的流程部署看看行不行。启动了一个ID_=2201的流程实例,删除结果报错了

技术分享

因为有外键约束所以不能删除部署表的信息,你删除这个紧接着也会删除关联它的其他表的信息。虽然传的参数只有部署的ID,但是删除的表可不只部署表这一张表。关联着的有我们的流程定义表,还有可能有我们的执行表和任务表。后面这两张表就属于关联的表,级联的表。

我们学过hibernate的级联删除cascade,activiti也有级联删除cascade。

技术分享

true代表是级联,false就代表不是级联,不级联有可能删除不成功

删除流程定义的代码其实和删除部署信息的代码是一样的,只是目标不一样。这两张表有一个外键的关联,因为删除子表里面的一条数据,其实是通过删除主表里面的一条数据来实现的。关联的,把子表里面的数据给它删除掉。所以虽然框架并没有提供直接删除流程定义的方法,但是代码其实和删除部署信息是一样的。

技术分享

15-流程操作(查询和删除部署信息和流程定义信息)