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);