天天看點

activiti7中流程執行個體的挂起和激活

如下代碼可以實作流程執行個體的挂起和激活

但是裡面有一個坑

activateProcessDefinitionById和suspendProcessDefinitionById方法中的第三個參數是要填寫時間

我填寫了new Date()

然後就修改不成功

隻能寫null才能過去

這個坑先留着

//對流程定義來進行全部流程執行個體的挂起和激活
//假如到月底我不做處理出差申請了,那麼就把所有的出差審批都給挂起,月初了我再全部激活
@Test
    public void suspendAllProcessInstance() {
        //1.擷取引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2.擷取repositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //3.查詢流程定義, 擷取流程定義的查詢對象來查詢
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("myEvection")
                .singleResult();
        //4.查詢目前流程定義的執行個體是否都是挂起狀态
        //擷取目前執行個體是否是挂起狀态,對應的表中字段1為true,2位false
        boolean suspended = processDefinition.isSuspended();
        //5.擷取流程定義id
        String definitionId = processDefinition.getId();
        //6.如果是挂起狀态,改為激活狀态
        if (suspended) {
            repositoryService.activateProcessDefinitionById(definitionId, true, null);
            System.out.println(definitionId + "已激活");

        } else {
            //7.如果是激活狀态,則改為挂起狀态
            //參數1是流程定義的id,參數2是是否要激活,參數3是激活時間
            repositoryService.suspendProcessDefinitionById(definitionId, true, null);
            System.out.println(definitionId + "已挂起");
        }

    }
   


//單人的流程執行個體的挂起和激活
    @Test
    public void suspendOneProcessInstance(){
        //1.擷取引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //2.擷取runtimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
        //3.擷取流程執行個體的id
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceId("10001")
                .singleResult();
        //4.擷取流程執行個體的狀态
        boolean suspended = processInstance.isSuspended();
        //5.擷取流程執行個體id
        String id = processInstance.getId();
        System.out.println("流程執行個體id:" + id);

        if (suspended){
            runtimeService.activateProcessInstanceById(id);
            System.out.println("流程執行個體id:" + id +"激活");
        }else{
            runtimeService.suspendProcessInstanceById(id);
            System.out.println("流程執行個體id:" + id +"挂起");
        }

    }
           

繼續閱讀