Activiti(九)删除部署的流程定义

当我们的部署的流程定义有一天不想用了,怎么去删除它呢?


删除部署的流程定义


注意:删除部署的流程需要分为两种情况

  • 没有启动流程
  • 启动流程了

步骤:

  1. 获取processEngine对象
  2. 创建RepositoryService对象
  3. 获取流程部署的Id
  4. 执行删除流程定义

第一步:由于第三步获取流程部署的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外,其余表信息都被清空



原创文章,未经允许禁止盗用



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章