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); } } } }
boolean transitionsContainsAToken(List<STransitionDefinition> transitions, SFlowNodeDefinition gatewayDefinition, long processInstanceId, SFlowElementContainerDefinition processContainer) throws SBonitaReadException { List<SFlowNodeDefinition> sourceElements = new ArrayList<SFlowNodeDefinition>(); List<SFlowNodeDefinition> targetElements = new ArrayList<SFlowNodeDefinition>(); logger.log(TAG, TechnicalLogSeverity.DEBUG, "Check if there is a token on "+transitions); for (STransitionDefinition sTransitionDefinition : transitions) { SFlowNodeDefinition source = processContainer.getFlowNode(sTransitionDefinition.getSource()); if (!source.equals(gatewayDefinition) && !sourceElements.contains(source)) { sourceElements.add(source); } SFlowNodeDefinition target = processContainer.getFlowNode(sTransitionDefinition.getTarget()); if (!target.equals(gatewayDefinition) && !targetElements.contains(target)) { targetElements.add(target); } } List<SFlowNodeDefinition> sourceAndTarget = extractElementThatAreSourceAndTarget(sourceElements, targetElements); if (containsToken(processInstanceId, sourceAndTarget, null)) return true; if (containsToken(processInstanceId, sourceElements, true)) return true; if (containsToken(processInstanceId, targetElements, false)) return true; logger.log(TAG, TechnicalLogSeverity.DEBUG, "No token to wait, gateway will fire"); return false; }
boolean transitionsContainsAToken(List<STransitionDefinition> transitions, SFlowNodeDefinition gatewayDefinition, long processInstanceId, SFlowElementContainerDefinition processContainer) throws SBonitaReadException { List<SFlowNodeDefinition> sourceElements = new ArrayList<SFlowNodeDefinition>(); List<SFlowNodeDefinition> targetElements = new ArrayList<SFlowNodeDefinition>(); logger.log(TAG, TechnicalLogSeverity.DEBUG, "Check if there is a token on "+transitions); for (STransitionDefinition sTransitionDefinition : transitions) { SFlowNodeDefinition source = processContainer.getFlowNode(sTransitionDefinition.getSource()); if (!source.equals(gatewayDefinition) && !sourceElements.contains(source)) { sourceElements.add(source); } SFlowNodeDefinition target = processContainer.getFlowNode(sTransitionDefinition.getTarget()); if (!target.equals(gatewayDefinition) && !targetElements.contains(target)) { targetElements.add(target); } } List<SFlowNodeDefinition> sourceAndTarget = extractElementThatAreSourceAndTarget(sourceElements, targetElements); if (containsToken(processInstanceId, sourceAndTarget, null)) return true; if (containsToken(processInstanceId, sourceElements, true)) return true; if (containsToken(processInstanceId, targetElements, false)) return true; logger.log(TAG, TechnicalLogSeverity.DEBUG, "No token to wait, gateway will fire"); return false; }