activiti部署与流程删除相关

最近学习完activiti的基本知识,做一些流程相关的东西,在删除部署信息以及流程实例时出现问题

报错显示不能删除,并且链接了一些外键,因此查找了原因,需要级联删除;

 

Activiti 删除部署与流程实例介绍: 

  很多新手在刚接触的Activiti的时候,当想删除该流程的时候会感到头痛吧!当然包括我也一样,想删除,那么多表也不知道从哪里删除,瞎弄了好久还是无法删除完。Activiti 删除部署,就是删除上传的流程。删除流程实例,就是删除startProcessInstanceByKey()保存成功的任务。

Activiti 删除部署:

  删除部署需要获取到部署Id(有多种方式):

      Task task=taskService.createTaskQuery() // 创建任务查询

                 .taskId(taskId) // 根据任务id查询

                .singleResult();

      String processDefinitionId=task.getProcessDefinitionId(); // 获取流程定义id

 

      /**

      *  createProcessDefinitionQuery() // 创建流程定义查询

      *  processDefinitionId(processDefinitionId) // 根据流程定义id查询   

      **/

       ProcessDefinition processDefinition=repositoryService.createProcessDefinitionQuery()

                                 .processDefinitionId(processDefinitionId)

                                 .singleResult(); 

      String deploymentId =  processDefinition.getDeploymentId();  //部署id

      或者:   

      /**

      *  .createHistoricProcessInstanceQuery() //对应历史的流程实例表

      *  processInstanceBusinessKey(key)  //key表示的是业务的BusinessKey 

      **/

      

      HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery() 
                          .processInstanceBusinessKey(key) 
                          .singleResult();

      ProcessDefinition processDefinition= repositoryService.createProcessDefinitionQuery()                  

                               .processDefinitionId(hpi.getProcessDefinitionId())

                               .singleResult();

      String deploymentId =  processDefinition.getDeploymentId();  //部署id

   删除部署信息:

       repositoryService.deleteDeployment(部署id); //普通删除,如果当前部署的规则还存在正在制作的流程,则抛异常

       repositoryService.deleteDeployment(部署id,boolean值);  //级联删除,如果 boolean值为true时,会删除所有和当前部署的规则相关的信息,包括历史的信息。

 

Activiti 删除流程实例:

  获取该流程的实例id:    

      /**

 

      *  .createHistoricProcessInstanceQuery() //对应历史的流程实例表

 

      *  processInstanceBusinessKey(key)  //key表示的是业务的BusinessKey 

 

      **/ 

      HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery() 
                          .processInstanceBusinessKey(key) 
                          .singleResult();

      String processInstanceId = hpi.getId(); //流程实例ID

 

  判断该流程实例是否结束,未结束和结束两者删除表的信息是不一样的。

      ProcessInstance pi = runtimeService.createProcessInstanceQuery()//
                         .processInstanceId(processInstanceId)// 使用流程实例ID查询
                         .singleResult();     

      if(pi==null){
        //该流程实例已经完成了
        historyService.deleteHistoricProcessInstance(processInstanceId);
      }else{

        //该流程实例未结束的
        runtimeService.deleteProcessInstance(processInstanceId,"");
        historyService.deleteHistoricProcessInstance(processInstanceId);//(顺序不能换)
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值