示例#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));
        }
示例#2
0
        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));
        }