【入门篇】Activiti流程定义删除

来源:互联网 发布:淘宝旧版本3.7.0下载 编辑:程序博客网 时间:2024/06/05 07:17

需求

当这个流程被废弃的时候,需要对activiti事先定义好的流程进行删除

涉及到的库表


方案

这里有两种删除方式,因为涉及到两张表,部署表和流程定义表。

第一种方式

根据流程部署id删除这一次部署的所有流程定义,建议一次部署只部署一个流程,根据流程部署id删除一个流程的定义
约束:如果该流程定义没有启动流程实例可以删除,如果该流程定义以及启动流程实例,不允许删除,如果删除就抛出异常

第二种方式

采用级联删除,不管流程定义是否启动了实例(是否使用),通过级联删除将该流程定义及相关的信息全部删除;但是一般情况下,不采用级联删除,而是采用对该流程进行暂停操作,特殊情况下需要删除流程定义及相关信息,就要使用级联删除,删除的功能给超级管理员用

代码实现

//流程定义的删除@Testpublic void deleteProcessDefinition(){//得到repositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();//根据流程定义id查询部署idString processDefinitionId = "purchasingflow:8:1204";ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();//流程定义所属部署idString deploymentId = processDefinition.getDeploymentId();    //1.根据流程部署id删除这一次部署的所有流程定义//建议一次部署只部署一个流程,根据流程部署id删除一个流程的定义//约束:如果该流程定义没有启动流程实例可以删除,如果该流程定义以及启动流程实例,不允许删除,如果删除就抛出异常repositoryService.deleteDeployment(deploymentId);//2.级联删除:不管该流程定义是否启动流程实例(是否使用),通过级联删除将该流程定义及相关的信息全部删除//一般情况下不适用级联删除,一般情况下对流程定义执行暂停操作//特殊情况下需要删除流程定义及相关的信息,就要使用级联删除,删除的功能给超级管理员使用//repositoryService.deleteDeployment(deploymentId,true);}


原创粉丝点击