public virtual void handleChildTermination(CmmnActivityExecution execution, CmmnActivityExecution child) { fireForceUpdate(execution); if (execution.Active) { checkAndCompleteCaseExecution(execution); } else if (execution.Terminating && isAbleToTerminate(execution)) { string id = execution.Id; CaseExecutionState currentState = execution.CurrentState; if (TERMINATING_ON_TERMINATION.Equals(currentState)) { execution.performTerminate(); } else if (TERMINATING_ON_EXIT.Equals(currentState)) { execution.performExit(); } else if (TERMINATING_ON_PARENT_TERMINATION.Equals(currentState)) { throw LOG.illegalStateTransitionException("parentTerminate", id, TypeName); } else { throw LOG.terminateCaseException(id, currentState); } } }
// termination //////////////////////////////////////////////////////////// protected internal virtual void performTerminate(CmmnActivityExecution execution) { execution.performTerminate(); }