@Override public List<String> getNextTransitionNames( long companyId, long userId, long workflowTaskInstanceId) throws WorkflowException { try { KaleoTaskInstanceToken kaleoTaskInstanceToken = KaleoTaskInstanceTokenLocalServiceUtil.getKaleoTaskInstanceToken(workflowTaskInstanceId); if (kaleoTaskInstanceToken.isCompleted()) { return Collections.emptyList(); } KaleoTask kaleoTask = kaleoTaskInstanceToken.getKaleoTask(); KaleoNode kaleoNode = kaleoTask.getKaleoNode(); List<KaleoTransition> kaleoTransitions = kaleoNode.getKaleoTransitions(); List<String> transitionNames = new ArrayList<>(kaleoTransitions.size()); for (KaleoTransition kaleoTransition : kaleoTransitions) { transitionNames.add(kaleoTransition.getName()); } return transitionNames; } catch (Exception e) { throw new WorkflowException(e); } }
protected void doExecute( KaleoNode currentKaleoNode, ExecutionContext executionContext, List<PathElement> remainingPathElements) throws PortalException, SystemException { List<KaleoTransition> kaleoTransitions = currentKaleoNode.getKaleoTransitions(); Map<String, KaleoInstanceToken> childKaleoInstanceTokens = new HashMap<String, KaleoInstanceToken>(); for (KaleoTransition kaleoTransition : kaleoTransitions) { KaleoInstanceToken parentKaleoInstanceToken = executionContext.getKaleoInstanceToken(); KaleoInstanceToken childKaleoInstanceToken = kaleoInstanceTokenLocalService.addKaleoInstanceToken( parentKaleoInstanceToken.getKaleoInstanceTokenId(), executionContext.getWorkflowContext(), executionContext.getServiceContext()); childKaleoInstanceTokens.put(kaleoTransition.getName(), childKaleoInstanceToken); } for (KaleoTransition kaleoTransition : kaleoTransitions) { KaleoInstanceToken childKaleoInstanceToken = childKaleoInstanceTokens.get(kaleoTransition.getName()); ExecutionContext forkedExecutionContext = new ExecutionContext( childKaleoInstanceToken, executionContext.getWorkflowContext(), executionContext.getServiceContext()); PathElement pathElement = new PathElement( currentKaleoNode, kaleoTransition.getTargetKaleoNode(), forkedExecutionContext); remainingPathElements.add(pathElement); } }