当我们的部署的流程定义有一天不想用了,怎么去删除它呢?
删除部署的流程定义
注意:删除部署的流程需要分为两种情况
- 没有启动流程
- 启动流程了
步骤:
- 获取processEngine对象
- 创建RepositoryService对象
- 获取流程部署的Id
- 执行删除流程定义
第一步:由于第三步获取流程部署的Id的代码使用次数会比较多,建议先封装一下(ReturnDeploymentId 类)
public static class ReturnDeploymentId {
public String getDeploymentId(String processDefinitionKey){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService=processEngine.getRepositoryService();
ProcessDefinitionQuery processDefinitionQuery=repositoryService.createProcessDefinitionQuery();
ProcessDefinition processDefinition=processDefinitionQuery.processDefinitionKey(processDefinitionKey)
.orderByProcessDefinitionVersion()
.desc()
.singleResult();
System.out.println("流程部署的ID:"+processDefinition.getDeploymentId());
return processDefinition.getDeploymentId();
}
}
第二步:创建类DeleteProcessDefinition
没有启动流程:【repositoryService.deleteDeployment(processDefinitionKey)】
public class DeleteProcessDefinition {
public static void main(String[] args) {
//1:获取processEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2:创建RepositoryService对象
RepositoryService repositoryService=processEngine.getRepositoryService();
//3:获取流程部署的Id
String processDefinitionKey= ReturnDeploymentId.getDeploymentId("day");
//4:执行删除流程定义
repositoryService.deleteDeployment(processDefinitionKey);
}
}
启动流程了: 【repositoryService.deleteDeployment(processDefinitionKey,true)】
参数true代表级联删除,此时就会先删除没有完成的流程结点,最后就可以删除流程定义信息 false的值代表不级联,默认时为false
public class DeleteProcessDefinition {
public static void main(String[] args) {
//1:获取processEngine对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2:创建RepositoryService对象
RepositoryService repositoryService=processEngine.getRepositoryService();
//3:获取流程部署的Id
String processDefinitionKey= ReturnDeploymentId.getDeploymentId("day");
//4:执行删除流程定义
repositoryService.deleteDeployment(processDefinitionKey,true);
}
}
我们看下数据库被影响的表
除了act_ge_property外,其余表信息都被清空
原创文章,未经允许禁止盗用