如下代碼可以實作流程執行個體的挂起和激活
但是裡面有一個坑
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 +"挂起");
}
}