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)); }