Activiti获取当前任务后续路径,动态生成执行路径按钮

xiaoxiao2021-02-28  102

需求:我们要在人工任务操作界面,动态生成后续路径选择按钮,选择对应按钮执行相应路径流程

实现方式:

流程定义路径处条件如下图所示:

nextbrach等于对应路径id,用于前台选择对应路径时执行。

1、JAVA后台动态获取当前任务执行路径:

public List<Map<String,String>> getNextBranches(String taskId) { List<Map<String,String>> transList = new ArrayList<Map<String,String>>(); // 获取流程定义 Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(task.getProcessDefinitionId()); // 获取流程实例 ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); // 获取当前活动的ID String activitiId = pi.getActivityId(); // 获取当前活动对象 ActivityImpl activity = pd.findActivity(activitiId); // 获取当前对象后续路径 List<PvmTransition> transitions = activity.getOutgoingTransitions(); // 遍历后续路径,封装至集合返回前台生成按钮 Map<String,String> map =new HashMap<String,String>(); for (PvmTransition trans : transitions) { String transName = (String) trans.getProperty("name"); String transId =trans.getId(); if(StringUtils.isNotBlank(transName)){ map.put("key", transId); map.put("value", transName); transList.add(map); map =new HashMap<String,String>(); } } if(transList.size() == 0){ map.put("", "提交下一步"); transList.add(map);//默认 } return transList; } 2、前台遍历返回路径,生成对应按钮;

3、点击按钮,将对应key传至完成参数,并在JAVA后台完成时传入对应map(taskService.complete(taskId, map);)

var data = {}; data["nextbranch"] = $("#"+this.id).attr("data-id");//data-id=key

转载请注明原文地址: https://www.6miu.com/read-79542.html

最新回复(0)