springboot整合activity6_刪除Key相同的所有流程定義,查詢流程實例狀態(無廢話版)--------------------------------------------(七)

1.源碼地址:https://github.com/heidaodageshiwo/springbootactivity

 

有時候我們一個流程定義不需要的,包括所有版本,這時候我們在用戶界面上一個一個刪除太麻煩;

所有有時候我們又這樣的需求,一下子把所有Key相同的流程定義全部刪除;

 

我們的思路是這樣的;

第一步:根據Key獲取所有的流程定義;

第二步:遍歷集合,獲取每個流程定義的流程部署Id

第三步:我們根據流程部署Id即可刪除所有的流程定義;

 

代碼:

    /**
     * 刪除流程定義
     */
    @RequestMapping("/procdef_delete_suoyoubanben")
    /**
     * 刪除所有Key相同的流程定義
     * @throws Exception
     */
     public void deleteByKey()throws Exception{
        List<ProcessDefinition> pdList=repositoryService  // 獲取service類
                .createProcessDefinitionQuery() // 創建流程定義查詢
                .processDefinitionKey("MySecondProcess") // 根據Key查詢
                .list();
        for(ProcessDefinition pd:pdList){  // 遍歷集合 獲取流程定義的每個部署Id,根據這個id來刪除所有流程定義
            repositoryService
                    .deleteDeployment(pd.getDeploymentId(), true);
        }
    }

 

查詢流程實例狀態

 

在開發中,我們有時候需要查看下某個流程實例的狀態,運行中 Or 執行結束 ?

 

這時候我們可以用流程實例Id去運行時執行表去查,假如能查到數據,說明流程實例還是運行,假如沒查到,就說明這個流程實例已經運行結束了;

 @Autowired
    RuntimeService runtimeService;
    @RequestMapping("/execution_list")
    /**
     * 查詢流程狀態(正在執行 or 已經執行結束)
     */
    public String processState(){
        ProcessInstance pi=runtimeService // 獲取運行時Service
                .createProcessInstanceQuery() // 創建流程實例查詢
                .processInstanceId("17505") // 用流程實例ID查詢
                .singleResult();
        if(pi!=null){
            System.out.println("流程正在執行!");
        }else{
            System.out.println("流程已經執行結束!");
        }
        return "processState";
    }

 

 

 

 

 

 

 

 

 

 

 

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