Exemple #1
0
        private static ActivityExecutionStatus ExecuteActivity(Activity activity, ActivityExecutionContext context, bool locksAcquired)
        {
            TransactedContextFilter activityExecutorFromType = (TransactedContextFilter)ActivityExecutors.GetActivityExecutorFromType(typeof(TransactedContextFilter));

            if (!locksAcquired && !context.AcquireLocks(activityExecutorFromType))
            {
                return(activity.ExecutionStatus);
            }
            if (GetTransactionOptions(activity) != null)
            {
                context.CheckpointInstanceState();
            }
            return(activityExecutorFromType.NextActivityExecutorInChain(activity).Execute(activity, context));
        }
 public override ActivityExecutionStatus Execute(Activity activity, ActivityExecutionContext executionContext)
 {
     if (executionContext == null)
     {
         throw new ArgumentNullException("executionContext");
     }
     if (activity == null)
     {
         throw new ArgumentNullException("activity");
     }
     activity.RegisterForStatusChange(Activity.LockCountOnStatusChangeChangedEvent, this);
     activity.HoldLockOnStatusChange(this);
     if (executionContext.AcquireLocks(this))
     {
         return(this.ExecuteActivityNow(executionContext));
     }
     return(activity.ExecutionStatus);
 }
        private static ActivityExecutionStatus ExecuteActivity(Activity activity, ActivityExecutionContext context, bool locksAcquired)
        {
            // acquire needed synchronization
            TransactedContextFilter executor = (TransactedContextFilter)ActivityExecutors.GetActivityExecutorFromType(typeof(TransactedContextFilter));

            if (!locksAcquired && !context.AcquireLocks(executor))
            {
                return(activity.ExecutionStatus);
            }

            // checkpoint for instance state
            //
            WorkflowTransactionOptions transaction = TransactedContextFilter.GetTransactionOptions(activity);

            if (transaction != null)
            {
                context.CheckpointInstanceState();
            }

            // delegate to the next executor for the activity
            return(executor.NextActivityExecutorInChain(activity).Execute(activity, context));
        }