コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        // termination ////////////////////////////////////////////////////////////

        protected internal virtual void performTerminate(CmmnActivityExecution execution)
        {
            execution.performTerminate();
        }