List<SFlowNodeDefinition> extractElementThatAreSourceAndTarget(List<SFlowNodeDefinition> sourceElements, List<SFlowNodeDefinition> targetElements) { List<SFlowNodeDefinition> sourceAndTarget = new ArrayList<SFlowNodeDefinition>(); Iterator<SFlowNodeDefinition> iterator = sourceElements.iterator(); while (iterator.hasNext()){ SFlowNodeDefinition sourceElement = iterator.next(); if(targetElements.contains(sourceElement) || sourceElement.getIncomingTransitions().isEmpty() /* if it's a start element it's also considered as a target */){ iterator.remove(); targetElements.remove(sourceElement); sourceAndTarget.add(sourceElement); } } return sourceAndTarget; }
List<SFlowNodeDefinition> extractElementThatAreSourceAndTarget(List<SFlowNodeDefinition> sourceElements, List<SFlowNodeDefinition> targetElements) { List<SFlowNodeDefinition> sourceAndTarget = new ArrayList<SFlowNodeDefinition>(); Iterator<SFlowNodeDefinition> iterator = sourceElements.iterator(); while (iterator.hasNext()){ SFlowNodeDefinition sourceElement = iterator.next(); if(targetElements.contains(sourceElement) || sourceElement.getIncomingTransitions().isEmpty() /* if it's a start element it's also considered as a target */){ iterator.remove(); targetElements.remove(sourceElement); sourceAndTarget.add(sourceElement); } } return sourceAndTarget; }
void addBackwardReachableTransitions(SFlowElementContainerDefinition processContainer, SFlowNodeDefinition gatewayDefinition, List<STransitionDefinition> transitions, List<STransitionDefinition> backwardReachable, List<STransitionDefinition> notIn) { for (STransitionDefinition sTransitionDefinition : transitions) { if (!backwardReachable.contains(sTransitionDefinition) && !notIn.contains(sTransitionDefinition)) { backwardReachable.add(sTransitionDefinition); //if the source is the gateway we stop searching backward SFlowNodeDefinition flowNode = processContainer.getFlowNode(sTransitionDefinition.getSource()); if (!flowNode.equals(gatewayDefinition)) { addBackwardReachableTransitions(processContainer, gatewayDefinition, flowNode.getIncomingTransitions(), backwardReachable, notIn); } } } }
void addBackwardReachableTransitions(SFlowElementContainerDefinition processContainer, SFlowNodeDefinition gatewayDefinition, List<STransitionDefinition> transitions, List<STransitionDefinition> backwardReachable, List<STransitionDefinition> notIn) { for (STransitionDefinition sTransitionDefinition : transitions) { if (!backwardReachable.contains(sTransitionDefinition) && !notIn.contains(sTransitionDefinition)) { backwardReachable.add(sTransitionDefinition); //if the source is the gateway we stop searching backward SFlowNodeDefinition flowNode = processContainer.getFlowNode(sTransitionDefinition.getSource()); if (!flowNode.equals(gatewayDefinition)) { addBackwardReachableTransitions(processContainer, gatewayDefinition, flowNode.getIncomingTransitions(), backwardReachable, notIn); } } } }
protected List<STransitionDefinition> getTransitionDefinitions(final SGatewayInstance gatewayInstance, final SProcessDefinition processDefinition) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition gatewayDefinition = processContainer.getFlowNode(gatewayInstance.getFlowNodeDefinitionId()); return gatewayDefinition.getIncomingTransitions(); }
protected List<STransitionDefinition> getTransitionDefinitions(final SGatewayInstance gatewayInstance, final SProcessDefinition processDefinition) { final SFlowElementContainerDefinition processContainer = processDefinition.getProcessContainer(); final SFlowNodeDefinition gatewayDefinition = processContainer.getFlowNode(gatewayInstance.getFlowNodeDefinitionId()); return gatewayDefinition.getIncomingTransitions(); }
FlowNodeTransitionsWrapper buildTransitionsWrapper(final SFlowNodeDefinition flowNode, final SProcessDefinition sProcessDefinition, final SFlowNodeInstance child) throws SBonitaException { final FlowNodeTransitionsWrapper transitionsDescriptor = new FlowNodeTransitionsWrapper(); // Retrieve all outgoing transitions if (flowNode == null) { // not in definition transitionsDescriptor.setInputTransitionsSize(0); transitionsDescriptor.setAllOutgoingTransitionDefinitions(Collections.<STransitionDefinition> emptyList()); } else { transitionsDescriptor.setInputTransitionsSize(flowNode.getIncomingTransitions().size()); transitionsDescriptor.setAllOutgoingTransitionDefinitions(new ArrayList<>(flowNode.getOutgoingTransitions())); transitionsDescriptor.setDefaultTransition(flowNode.getDefaultTransition()); } // Evaluate all outgoing transitions, and retrieve valid outgoing transitions transitionsDescriptor.setValidOutgoingTransitionDefinitions(evaluateOutgoingTransitions(transitionsDescriptor, sProcessDefinition, child)); return transitionsDescriptor; } }
List<STransitionDefinition> incomingTransitions = gatewayDefinition.getIncomingTransitions(); List<STransitionDefinition> incomingWithTokens = new ArrayList<STransitionDefinition>(); List<STransitionDefinition> incomingWithoutTokens = new ArrayList<STransitionDefinition>();
List<STransitionDefinition> incomingTransitions = gatewayDefinition.getIncomingTransitions(); List<STransitionDefinition> incomingWithTokens = new ArrayList<STransitionDefinition>(); List<STransitionDefinition> incomingWithoutTokens = new ArrayList<STransitionDefinition>();
FlowNodeTransitionsWrapper buildTransitionsWrapper(final SFlowNodeDefinition flowNode, final SProcessDefinition sProcessDefinition, final SFlowNodeInstance child) throws SBonitaException { final FlowNodeTransitionsWrapper transitionsDescriptor = new FlowNodeTransitionsWrapper(); // Retrieve all outgoing transitions if (flowNode == null) { // not in definition transitionsDescriptor.setInputTransitionsSize(0); transitionsDescriptor.setAllOutgoingTransitionDefinitions(Collections.<STransitionDefinition> emptyList()); } else { transitionsDescriptor.setInputTransitionsSize(flowNode.getIncomingTransitions().size()); transitionsDescriptor.setAllOutgoingTransitionDefinitions(new ArrayList<>(flowNode.getOutgoingTransitions())); transitionsDescriptor.setDefaultTransition(flowNode.getDefaultTransition()); } // Evaluate all outgoing transitions, and retrieve valid outgoing transitions transitionsDescriptor.setValidOutgoingTransitionDefinitions(evaluateOutgoingTransitions(transitionsDescriptor, sProcessDefinition, child)); return transitionsDescriptor; } }