/**
* 下一个节点
*
* @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);
}