首先上代码:
/**
* 根据processInstanceId获取出线
* (获取本节点后面的所有出线)
* @param taskId
* @return
*/
public List<String> getFlows(String processInstanceId) {
Task task = engine.getTaskService().createTaskQuery().processInstanceId(processInstanceId).singleResult();
ExecutionEntity execution = (ExecutionEntity) engine.getRuntimeService().createExecutionQuery().executionId(task.getExecutionId()).singleResult();
String activitiId = execution.getActivityId();
logger.info("根据taskid获取activitiId:" + activitiId);
String processDefinitionId = engine.getHistoryService().createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) engine.getRepositoryService()).getDeployedProcessDefinition(processDefinitionId);
List<ActivityImpl> activities = processDefinitionEntity.getActivities();
logger.info("根据processInstanceId获取本流程图的所有节点");
List<PvmTransition> `outgoingTransitions` = new ArrayList<PvmTransition>();
List<String> messageList = new ArrayList<String>();
for (ActivityImpl activityImpl : activities) {
if (activityImpl.getId().equals(activitiId)) {
outgoingTransitions = activityImpl.getOutgoingTransitions();
for (PvmTransition pvmTransition : outgoingTransitions) {
messageList.add(pvmTransition.getProperty("name").toString());
}
logger.info("获取本节点的所有出线");
}
}
return messageList;
}
上述代码就是获取一个节点后面的出线上的name(也就是图二线上的字)。
List<PvmTransition> `outgoingTransitions` = new ArrayList<PvmTransition>();
就是出线信息,读者可以查看这个PvmTransition对象,查看具体信息
图一
图二