应用场景:由于流程各节点的出口各不相同,需要在前端动态显示该流程的出口按钮。
思路:在service层通过activiti的方法获得流程节点的出口名字,放到集合中返回controller层,在通过modeAndView展示到前端页面
WorkflowServiceImpl:负责获取所有出口的name
// 根据taskId查找当前任务出口
@Override
public List<String> getOutGoingTransNames(String taskId) {
// 获取流程定义
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
ProcessDefinitionEntity pd = (ProcessDefinitionEntity) repositoryService
.getProcessDefinition(task.getProcessDefinitionId());
// 获取流程实例
ProcessInstance pi = runtimeService.createProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId()).singleResult();
// 根据流程实例查找当前活动id
String activityId = pi.getActivityId();
// 根据活动id查找当前活动对象
ActivityImpl activity = pd.findActivity(activityId);
// 根据活动对象查找所有出口
List<PvmTransition> outgoingTransitions = activity.getOutgoingTrans