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