天天看點

activiti7-4-流程激活和挂起1.分析2. 全部流程執行個體的挂起和激活3. 單個流程執行個體挂起

我是一個目錄

  • 1.分析
  • 2. 全部流程執行個體的挂起和激活
  • 3. 單個流程執行個體挂起

1.分析

如果公司制度發生變化

1.原本沒有批完的流程怎麼辦?

例如:30人沒有處理完,怎麼辦?

看公司制度了,有可能 按原來的走,也有可能全部打回,重新發起,全部按照新流程走。

2.xx員工個人沒有批完的流程怎麼辦?

例如: 單獨一個人怎麼辦?

有可能暫時挂起。

2. 全部流程執行個體的挂起和激活

public static void main(String[] args){
        //1.獲得引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.獲得RepositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();

        //3.查詢流程執行個體
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("holiday").singleResult();

        //4.得到目前流程定義執行個體是否都為暫停狀态
        boolean suspended = processDefinition.isSuspended();

        String processDefinitionId = processDefinition.getId();

        //5.判斷
        if(suspended){
            //說明是暫停,就可以激活操作
            repositoryService.activateProcessDefinitionById(processDefinitionId,true,null);
            System.out.println("激活");
        }else{
            repositoryService.suspendProcessDefinitionById(processDefinitionId);
            System.out.println("挂起");
        }

    }
           

3. 單個流程執行個體挂起

public static void main(String[] args){
        //1.獲得引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.獲得RunTimeSerice
        RuntimeService runtimeService = processEngine.getRuntimeService();

        //3.查詢流程執行個體
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceBusinessKey("holiday").singleResult();

        //4.得到目前流程定義執行個體是否都為暫停狀态
        boolean suspended = processInstance.isSuspended();

        String processInstanceId = processInstance.getId();

        //5.判斷
        if(suspended){
            //說明是暫停,就可以激活操作
            runtimeService.activateProcessInstanceById(processInstanceId);
            System.out.println("激活");
        }else{
            runtimeService.suspendProcessInstanceById(processInstanceId);
            System.out.println("挂起");
        }

    }
           

注意,上面兩段代碼是因為我都隻有一個流程執行個體,是以用的是singleResult()方法。有多個的話,要調用list()方法。