示例#1
0
        protected internal virtual void signalCompensationDone(ActivityExecution execution)
        {
            // default behavior is to join compensating executions and propagate the signal if all executions have compensated

            // only wait for non-event-scope executions cause a compensation event subprocess consume the compensation event and
            // do not have to compensate embedded subprocesses (which are still non-event-scope executions)

            if (((PvmExecutionImpl)execution).NonEventScopeExecutions.Count == 0)
            {
                if (execution.Parent != null)
                {
                    ActivityExecution parent = execution.Parent;
                    execution.remove();
                    parent.signal(SIGNAL_COMPENSATION_DONE, null);
                }
            }
            else
            {
                ((ExecutionEntity)execution).forceUpdate();
            }
        }