public virtual void execute(CmmnExecution execution) { CmmnExecution firstLeaf = findFirstLeaf(execution); firstLeaf.remove(); CmmnExecution parent = firstLeaf.Parent; if (parent != null) { parent.deleteCascade(); } }
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); } } }