if (currentSubProcess.getOutgoingFlows().size() > 0) {
protected ExecutionEntity handleRegularExecutionEnd(ExecutionEntityManager executionEntityManager, ExecutionEntity parentExecution) { ExecutionEntity executionToContinue = null; if (!parentExecution.isProcessInstanceType() && !(parentExecution.getCurrentFlowElement() instanceof SubProcess)) { parentExecution.setCurrentFlowElement(execution.getCurrentFlowElement()); } if (execution.getCurrentFlowElement() instanceof SubProcess) { SubProcess currentSubProcess = (SubProcess) execution.getCurrentFlowElement(); if (currentSubProcess.getOutgoingFlows().size() > 0) { // create a new execution to take the outgoing sequence flows executionToContinue = executionEntityManager.createChildExecution(parentExecution); executionToContinue.setCurrentFlowElement(execution.getCurrentFlowElement()); } else { if (parentExecution.getId().equals(parentExecution.getProcessInstanceId()) == false) { // create a new execution to take the outgoing sequence flows executionToContinue = executionEntityManager.createChildExecution(parentExecution.getParent()); executionToContinue.setCurrentFlowElement(parentExecution.getCurrentFlowElement()); executionEntityManager.deleteChildExecutions(parentExecution, null, false); executionEntityManager.deleteExecutionAndRelatedData(parentExecution, null, false); } else { executionToContinue = parentExecution; } } } else { executionToContinue = parentExecution; } return executionToContinue; }