示例#1
0
        public virtual void execute(CmmnExecution execution)
        {
            CmmnExecution firstLeaf = findFirstLeaf(execution);

            firstLeaf.remove();

            CmmnExecution parent = firstLeaf.Parent;

            if (parent != null)
            {
                parent.deleteCascade();
            }
        }
示例#2
0
        protected internal override void postTransitionNotification(CmmnExecution execution)
        {
            if (!execution.CaseInstanceExecution)
            {
                execution.remove();
            }
            else
            {
                CmmnExecution    superCaseExecution = execution.SuperCaseExecution;
                PvmExecutionImpl superExecution     = execution.SuperExecution;

                if (superCaseExecution != null)
                {
                    TransferVariablesActivityBehavior behavior = (TransferVariablesActivityBehavior)getActivityBehavior(superCaseExecution);
                    behavior.transferVariables(execution, superCaseExecution);
                    superCaseExecution.complete();
                }
                else if (superExecution != null)
                {
                    SubProcessActivityBehavior behavior = (SubProcessActivityBehavior)getActivityBehavior(superExecution);

                    try
                    {
                        behavior.passOutputVariables(superExecution, execution);
                    }
                    catch (Exception e)
                    {
                        LOG.completingSubCaseError(execution, e);
                        throw e;
                    }
                    catch (Exception e)
                    {
                        LOG.completingSubCaseError(execution, e);
                        throw LOG.completingSubCaseErrorException(execution, e);
                    }

                    // set sub case instance to null
                    superExecution.SubCaseInstance = null;

                    try
                    {
                        behavior.completed(superExecution);
                    }
                    catch (Exception e)
                    {
                        LOG.completingSubCaseError(execution, e);
                        throw e;
                    }
                    catch (Exception e)
                    {
                        LOG.completingSubCaseError(execution, e);
                        throw LOG.completingSubCaseErrorException(execution, e);
                    }
                }

                execution.SuperCaseExecution = null;
                execution.SuperExecution     = null;
            }

            CmmnExecution parent = execution.Parent;

            if (parent != null)
            {
                CmmnActivityBehavior behavior = getActivityBehavior(parent);
                if (behavior is CmmnCompositeActivityBehavior)
                {
                    CmmnCompositeActivityBehavior compositeBehavior = (CmmnCompositeActivityBehavior)behavior;
                    compositeBehavior.handleChildCompletion(parent, execution);
                }
            }
        }