/** * 下一个节点 * * @param taskid * @return * @throws */ public List<FlowNode> getNextNode(String taskid) { HistoricTaskInstance myTask = processEngine.getHistoryService().createHistoricTaskInstanceQuery().taskId(taskid).singleResult(); String processDefinitionId = myTask.getProcessDefinitionId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); String myActivityId = myTask.getTaskDefinitionKey(); if (ValidateUtil.isEmpty(myActivityId)) { return Lists.newArrayList(); } List<FlowNode> flowNodeList = Lists.newArrayList(); FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(myActivityId); List<FlowNode> flowNodes = Lists.newArrayList(); flowNodes.add(flowNode); addNextNode(flowNodes, flowNodeList); return flowNodeList; }
/** * @param list 存放网关节点 * @param flowNodeList 任务节点 * @return addNextNode * @description 解析当前节点的接下来的任务节点 */ private void addNextNode(List<FlowNode> list, List<FlowNode> flowNodeList) { if (ValidateUtil.isEmpty(list)) { return; } List<FlowNode> flowNodeList1 = Lists.newArrayList(); for (FlowNode flowNode : list) { List<SequenceFlow> sequenceFlows = flowNode.getOutgoingFlows(); for (SequenceFlow sequenceFlow : sequenceFlows) { FlowNode flowNode1 = (FlowNode) sequenceFlow.getTargetFlowElement(); if (flowNode1 == null) { continue; } if (flowNode1 instanceof UserTask) { if (flowNode1.getName() == null) { flowNode1.setName(" "); } flowNodeList.add(flowNode1); } else if (flowNode1 instanceof EndEvent) { flowNode1.setName("结束"); flowNodeList.add(flowNode1); } else if (flowNode1 instanceof StartEvent) { flowNode1.setName("开始"); flowNodeList.add(flowNode1); } else { flowNodeList1.add(flowNode1); } } } addNextNode(flowNodeList1, flowNodeList); }