protected boolean isExtraScopeNeeded(FlowNode flowNode) { return flowNode.getSubProcess() != null; }
protected boolean hasMultiInstanceParent(FlowNode flowNode) { boolean hasMultiInstanceParent = false; if (flowNode.getSubProcess() != null) { if (flowNode.getSubProcess().getLoopCharacteristics() != null) { hasMultiInstanceParent = true; } else { boolean hasNestedMultiInstanceParent = hasMultiInstanceParent(flowNode.getSubProcess()); if (hasNestedMultiInstanceParent) { hasMultiInstanceParent = true; } } } return hasMultiInstanceParent; }
protected void continueThroughFlowNode(FlowNode flowNode) { // Check if it's the initial flow element. If so, we must fire the execution listeners for the process too if (flowNode.getIncomingFlows() != null && flowNode.getIncomingFlows().size() == 0 && flowNode.getSubProcess() == null) { executeProcessStartExecutionListeners(); } // For a subprocess, a new child execution is created that will visit the steps of the subprocess // The original execution that arrived here will wait until the subprocess is finished // and will then be used to continue the process instance. if (flowNode instanceof SubProcess) { createChildExecutionForSubProcess((SubProcess) flowNode); } if (flowNode instanceof Activity && ((Activity) flowNode).hasMultiInstanceLoopCharacteristics()) { // the multi instance execution will look at async executeMultiInstanceSynchronous(flowNode); } else if (forceSynchronousOperation || !flowNode.isAsynchronous()) { executeSynchronous(flowNode); } else { executeAsynchronous(flowNode); } }
protected boolean isExtraScopeNeeded(FlowNode flowNode) { return flowNode.getSubProcess() != null; }
protected boolean hasMultiInstanceParent(FlowNode flowNode) { boolean hasMultiInstanceParent = false; if (flowNode.getSubProcess() != null) { if (flowNode.getSubProcess().getLoopCharacteristics() != null) { hasMultiInstanceParent = true; } else { boolean hasNestedMultiInstanceParent = hasMultiInstanceParent(flowNode.getSubProcess()); if (hasNestedMultiInstanceParent) { hasMultiInstanceParent = true; } } } return hasMultiInstanceParent; }
protected void continueThroughFlowNode(FlowNode flowNode) { // Check if it's the initial flow element. If so, we must fire the execution listeners for the process too if (flowNode.getIncomingFlows() != null && flowNode.getIncomingFlows().size() == 0 && flowNode.getSubProcess() == null) { executeProcessStartExecutionListeners(); } // For a subprocess, a new child execution is created that will visit the steps of the subprocess // The original execution that arrived here will wait until the subprocess is finished // and will then be used to continue the process instance. if (flowNode instanceof SubProcess) { createChildExecutionForSubProcess((SubProcess) flowNode); } if (flowNode instanceof Activity && ((Activity) flowNode).hasMultiInstanceLoopCharacteristics()) { // the multi instance execution will look at async executeMultiInstanceSynchronous(flowNode); } else if (forceSynchronousOperation || !flowNode.isAsynchronous()) { executeSynchronous(flowNode); } else { executeAsynchronous(flowNode); } }