protected internal override void EventNotificationsCompleted(PvmExecutionImpl execution)
        {
            base.EventNotificationsCompleted(execution);

            var          transition = execution.Transition;
            IPvmActivity destination;

            if (transition == null)
            {
                destination = execution.Activity;
            }
            else
            {
                destination = transition.Destination;
            }
            execution.Transition = (null);
            execution.Activity   = (ActivityImpl)(destination);

            var executionStartContext = execution.ExecutionStartContext;

            if (executionStartContext != null)
            {
                executionStartContext.ExecutionStarted(execution);
                execution.DisposeExecutionStartContext();
            }

            execution.DispatchDelayedEventsAndPerformOperation(PvmAtomicOperationFields.ActivityExecute);
        }
Ejemplo n.º 2
0
 protected internal override void EventNotificationsCompleted(PvmExecutionImpl execution)
 {
     execution.DispatchDelayedEventsAndPerformOperation((e) => {
         e.LeaveActivityInstance();
         e.PerformOperation(PvmAtomicOperationFields.TransitionDestroyScope);
     });
 }
        protected internal override void EventNotificationsCompleted(PvmExecutionImpl execution)
        {
            base.EventNotificationsCompleted(execution);

            var executionStartContext = execution.ExecutionStartContext;

            if (executionStartContext != null)
            {
                executionStartContext.ExecutionStarted(execution);
                execution.DisposeExecutionStartContext();
            }

            execution.DispatchDelayedEventsAndPerformOperation(PvmAtomicOperationFields.ActivityExecute);
        }
        protected internal override void EventNotificationsCompleted(PvmExecutionImpl execution)
        {
            var destination = execution.Transition.Destination;

            // check start behavior of next activity
            switch (destination.ActivityStartBehavior)
            {
            case ActivityStartBehavior.Default:
                execution.Activity = (ActivityImpl)(destination);
                execution.DispatchDelayedEventsAndPerformOperation(PvmAtomicOperationFields.TransitionCreateScope);
                break;

            case ActivityStartBehavior.InterruptFlowScope:
                execution.Activity = (null);
                execution.PerformOperation(PvmAtomicOperationFields.TransitionInterruptFlowScope);
                break;

            default:
                throw new ProcessEngineException("Unsupported start behavior for activity '" + destination +
                                                 "' started from a sequence flow: " +
                                                 destination.ActivityStartBehavior);
            }
        }