删除流程定义
现在我们将之前用zip方式部署的流程文件删除掉,代码如下:
/**
* 删除流程定义
*/
@Test
public void deleteProcessDefinition(){
// 使用部署id,完成删除
String deploymentId = "5001";
/**
* 不带级联的删除,只能删除没有启动的流程,如果流程已经启动了,就会抛出异常
*/
//processEngine.getRepositoryService().deleteDeployment(deploymentId);
/**
* 级联删除,不管流程是否启动,都可以删除
* 会删除和当前规则相关的所有数据,正在执行的数据,和历史数据
*/
processEngine.getRepositoryService().deleteDeployment(deploymentId, true);
System.out.println("删除成功");
}
运行单元测试之后,现在我们看看流程定义的三张表
act_re_procdef(流程定义数据表 ),现在我们可以看到,原先zip方式部署的那条记录已经不见了,已经从数据库删除掉了
act_re_procdef(流程定义数据表 )
act_ge_bytearray(资源文件表)
删除流程定义(使用key删除不同版本的流程定义)
我们将之前通过classpath路径部署的文件删除掉
/**
* 删除流程定义(使用key删除不同版本的流程定义)
*/
@Test
public void deleteProcessDefinitionBykey(){
// 流程定义的key
String processDefinitionKey = "myProcess_1";
// 根据流程定义的key查询出不同的版本
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.list();
// 遍历,获取每个流程的Id
if(list != null && list.size() > 0){
for(ProcessDefinition d:list){
// 获取部署id
String deploymentId = d.getDeploymentId();
System.out.println(deploymentId);
processEngine.getRepositoryService()
.deleteDeployment(deploymentId);
}
}
System.out.println("删除成功");
}
运行单元测试之后,输出结果如下:
现在我们看看流程定义的三张表
act_re_procdef(流程定义数据表 ),没有数据,数据都已经删除了
act_re_procdef(流程定义数据表 )
act_ge_bytearray(资源文件表)