1、設置出口變量
當一個任務有一個或多個出口時,可以在出口連線出設置判斷條件如圖:
2、根據任務Id獲取出口集合
public List<String> getOutGoingTransNames(String taskId) { List<String> transNames = new ArrayList<>(); // 1.獲取流程定義 Task task = this.taskService.createTaskQuery().taskId(taskId).singleResult(); ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId()); // 2.獲取流程實例 ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); // 3.通過流程實例查找當前活動的ID String activitiId = pi.getActivityId(); // 4.通過活動的ID在流程定義中找到對應的活動對象 ActivityImpl activity = pd.findActivity(activitiId); // 5.通過活動對象找當前活動的所有出口 List<PvmTransition> transitions = activity.getOutgoingTransitions(); // 6.提取所有出口的名稱,封裝成集合 for (PvmTransition trans : transitions) { String transName = (String) trans.getProperty("name"); if(StringUtils.isNotBlank(transName)){ transNames.add(transName); } } if(transNames.size()==0){ transNames.add("提交");//默認 } return transNames; }
3、應用
在頁面展示的時候遍歷節點出口,在提交的時候傳入相應的提交出口名稱
提交代碼:
Map<String, Object> vars = new HashMap<>(); vars.put("outcome", outcome);//outcome為提交按鈕的名稱
// 完成任務
taskService.complete(taskId,vars);