我們的流程一般與業務關聯,流程綁定業務code,出現問題的原因是當前業務code關聯了不止一個流程,比如審批流程A,審批流程B,那么,我們下一次執行流程的時候,傳入一個code,無法確定走哪一個流程圖,所以顯示
org.activiti.engine.ActivitiException: Query return 2 results instead of max 1,
不符合邏輯的,一個業務code按理說只可以走入一個流程,只有流程走完后,才可以用code綁定下一個流程
問題出現開始流程的處理上面
public ProcessInstance getProcessInstanceByCode(String code) { //流程實例 ProcessInstance processInstance = runtimeService .createProcessInstanceQuery()//創建查詢 .processInstanceBusinessKey(code)//根據業務ID查詢 .singleResult();//獲得唯一一條數據 return processInstance; }
正常我們獲取流程id是這樣的,我們需要在開始下一個流程時候進行判斷-》當前業務code有沒有走完的流程
public List<ProcessInstance> getAllProcessInstanceByCode(String code) { //流程實例 //創建查詢 //根據業務ID查詢 ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(code); //獲得code對應所有流程 List<ProcessInstance> processInstanceList = processInstanceQuery.list(); return processInstanceList; }
獲取當前業務code對應的所有流程,判讀返回集合是否為空集合,List<ProcessInstance> list,如果list是空的,說明沒有關聯其他流程,可以開始一個新流程綁定當前code ,否則需要走完code綁定的其他流程才可以哦