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);//(順序不能換)
      }

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM