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";
}