Example #1
0
 internal override void InternalAbort(System.Activities.ActivityInstance instance, ActivityExecutor executor, Exception terminationReason)
 {
     using (NativeActivityAbortContext context = new NativeActivityAbortContext(instance, executor, terminationReason))
     {
         this.Abort(context);
     }
 }
        internal bool TryPopulateValue(LocationEnvironment targetEnvironment, System.Activities.ActivityInstance targetActivityInstance, ActivityContext resolutionContext, object argumentValueOverride, Location resultLocation, bool skipFastPath)
        {
            if (argumentValueOverride != null)
            {
                Location location = this.boundArgument.CreateDefaultLocation();
                targetEnvironment.Declare(this, location, targetActivityInstance);
                location.Value = argumentValueOverride;
                return(true);
            }
            if (!this.boundArgument.IsEmpty)
            {
                if (skipFastPath)
                {
                    this.BoundArgument.Declare(targetEnvironment, targetActivityInstance);
                    return(false);
                }
                resolutionContext.Activity = this.boundArgument.Expression;
                return(this.boundArgument.TryPopulateValue(targetEnvironment, targetActivityInstance, resolutionContext));
            }
            if ((resultLocation != null) && this.IsResult)
            {
                targetEnvironment.Declare(this, resultLocation, targetActivityInstance);
                return(true);
            }
            Location location2 = this.boundArgument.CreateDefaultLocation();

            targetEnvironment.Declare(this, location2, targetActivityInstance);
            return(true);
        }
Example #3
0
 internal void FixupInstance(System.Activities.ActivityInstance parent, ActivityInstanceMap instanceMap, ActivityExecutor executor)
 {
     if (!this.IsCompleted)
     {
         if (this.Activity == null)
         {
             throw FxTrace.Exception.AsError(new InvalidOperationException(System.Activities.SR.ActivityInstanceFixupFailed));
         }
         this.parent      = parent;
         this.instanceMap = instanceMap;
         if (this.PropertyManager != null)
         {
             this.PropertyManager.OnDeserialized(this, parent, this.Activity.MemberOf, executor);
         }
         else if (this.parent != null)
         {
             this.PropertyManager = this.parent.PropertyManager;
         }
         else
         {
             this.PropertyManager = executor.RootPropertyManager;
         }
         if (!this.noSymbols)
         {
             this.environment.OnDeserialized(executor, this);
         }
     }
 }
 internal override void InternalExecute(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
 {
     if (this.runtimeImplementation != null)
     {
         executor.ScheduleActivity(this.runtimeImplementation, instance, null, null, null);
     }
 }
Example #5
0
        internal sealed override void InternalExecute(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
        {
            AsyncOperationContext asyncContext = executor.SetupAsyncOperationBlock(instance);

            instance.IncrementBusyCount();
            AsyncCodeActivityContext context = new AsyncCodeActivityContext(asyncContext, instance, executor);
            bool flag = false;

            try
            {
                IAsyncResult result = this.BeginExecute(context, AsyncCodeActivity.OnExecuteComplete, asyncContext);
                if (result == null)
                {
                    throw FxTrace.Exception.AsError(new InvalidOperationException(System.Activities.SR.BeginExecuteMustNotReturnANullAsyncResult));
                }
                if (!object.ReferenceEquals(result.AsyncState, asyncContext))
                {
                    throw FxTrace.Exception.AsError(new InvalidOperationException(System.Activities.SR.BeginExecuteMustUseProvidedStateAsAsyncResultState));
                }
                if (result.CompletedSynchronously)
                {
                    ((IAsyncCodeActivity)this).FinishExecution(context, result);
                    asyncContext.CompleteOperation();
                }
                flag = true;
            }
            finally
            {
                context.Dispose();
                if (!flag)
                {
                    asyncContext.CancelOperation();
                }
            }
        }
 internal void Dispose()
 {
     this.isDisposed = true;
     this.instance   = null;
     this.executor   = null;
     this.Activity   = null;
 }
 internal void Reinitialize(System.Activities.ActivityInstance instance, ActivityExecutor executor)
 {
     this.isDisposed = false;
     this.instance   = instance;
     this.executor   = executor;
     this.Activity   = this.instance.Activity;
 }
Example #8
0
        public static Collection <System.Activities.ActivityInstance> getchildList2(this System.Activities.ActivityInstance root) // System.Activities.ActivityInstance.ChildList
        {
            var result    = new Collection <System.Activities.ActivityInstance>();
            var childList = root.GetType().GetField("childList", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(root);

            if (childList == null)
            {
                return(result);
            }
            var count = (int)childList.GetType().GetField("Count", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(childList);

            if (count == 0)
            {
                return(result);
            }
            if (count == 1)
            {
                var multipleItems = (List <System.Activities.ActivityInstance>)childList.GetType().GetField("multipleItems", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(childList);
                foreach (var item in multipleItems)
                {
                    result.Add(item);
                }
            }
            else
            {
                var singleItem = (System.Activities.ActivityInstance)childList.GetType().GetField("singleItem", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(childList);
                result.Add(singleItem);
            }
            return(result);
        }
 public static FaultBookmark CreateFaultBookmark(FaultCallback onFaulted, System.Activities.ActivityInstance owningInstance)
 {
     if (onFaulted != null)
     {
         return(new FaultBookmark(new FaultCallbackWrapper(onFaulted, owningInstance)));
     }
     return(null);
 }
Example #10
0
 internal void AddChild(System.Activities.ActivityInstance item)
 {
     if (this.childList == null)
     {
         this.childList = new ChildList();
     }
     this.childList.Add(item);
     this.childCache = null;
 }
Example #11
0
 private bool GenerateInstanceMapCallback(System.Activities.ActivityInstance instance, ActivityExecutor executor)
 {
     this.instanceMap.AddEntry(instance);
     instance.instanceMap = this.instanceMap;
     if (instance.HasActivityReferences)
     {
         instance.extendedData.FillInstanceMap(instance.instanceMap);
     }
     return(true);
 }
Example #12
0
 internal ExecutionProperties(ActivityContext currentContext, System.Activities.ActivityInstance scope, ExecutionPropertyManager properties)
 {
     this.context    = currentContext;
     this.scope      = scope;
     this.properties = properties;
     if (this.context != null)
     {
         this.currentIdSpace = this.context.Activity.MemberOf;
     }
 }
 public static bool IsInScope(System.Activities.ActivityInstance potentialChild, System.Activities.ActivityInstance scope)
 {
     if (scope == null)
     {
         return(true);
     }
     System.Activities.ActivityInstance parent = potentialChild;
     while ((parent != null) && (parent != scope))
     {
         parent = parent.Parent;
     }
     return(parent != null);
 }
Example #14
0
        internal sealed override void InternalCancel(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
        {
            AsyncOperationContext context;

            if (executor.TryGetPendingOperation(instance, out context))
            {
                using (AsyncCodeActivityContext context2 = new AsyncCodeActivityContext(context, instance, executor))
                {
                    context.HasCalledAsyncCodeActivityCancel = true;
                    this.Cancel(context2);
                }
            }
        }
Example #15
0
        public static Collection <System.Activities.ActivityInstance> GetChildren(this System.Activities.ActivityInstance root)
        {
            //if (!root.HasChildren2())
            //{
            //    return new Collection<System.Activities.ActivityInstance>();
            //}
            var childCache = root.getchildList2() as Collection <System.Activities.ActivityInstance>;

            if (childCache == null)
            {
                return(new Collection <System.Activities.ActivityInstance>());
            }
            return(childCache);
        }
Example #16
0
        internal override void InternalExecute(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
        {
            NativeActivityContext context = executor.NativeActivityContextPool.Acquire();

            try
            {
                context.Initialize(instance, executor, bookmarkManager);
                this.Execute(context);
            }
            finally
            {
                context.Dispose();
                executor.NativeActivityContextPool.Release(context);
            }
        }
        internal sealed override void InternalExecute(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
        {
            CodeActivityContext context = executor.CodeActivityContextPool.Acquire();

            try
            {
                context.Initialize(instance, executor);
                TResult local = this.Execute(context);
                base.Result.Set(context, local);
            }
            finally
            {
                context.Dispose();
                executor.CodeActivityContextPool.Release(context);
            }
        }
Example #18
0
        internal bool Initialize(System.Activities.ActivityInstance parent, ActivityInstanceMap instanceMap, LocationEnvironment parentEnvironment, long instanceId, ActivityExecutor executor, int delegateParameterCount)
        {
            this.parent      = parent;
            this.instanceMap = instanceMap;
            this.id          = instanceId;
            if (this.instanceMap != null)
            {
                this.instanceMap.AddEntry(this);
            }
            if (this.parent != null)
            {
                if (this.parent.PropertyManager != null)
                {
                    this.PropertyManager = this.parent.PropertyManager;
                }
                if (parentEnvironment == null)
                {
                    parentEnvironment = this.parent.Environment;
                }
            }
            int capacity = this.Activity.SymbolCount + delegateParameterCount;

            if (capacity == 0)
            {
                if (parentEnvironment == null)
                {
                    this.environment = new LocationEnvironment(executor, this.Activity);
                }
                else
                {
                    this.noSymbols   = true;
                    this.environment = parentEnvironment;
                }
                return(false);
            }
            this.environment = new LocationEnvironment(executor, this.Activity, parentEnvironment, capacity);
            this.substate    = Substate.ResolvingArguments;
            return(true);
        }
 public void Add(System.Activities.ActivityInstance item)
 {
     if (this.multipleItems != null)
     {
         if (this.addRequiresNewList)
         {
             this.multipleItems      = new List <System.Activities.ActivityInstance>(this.multipleItems);
             this.addRequiresNewList = false;
         }
         this.multipleItems.Add(item);
     }
     else if (this.singleItem != null)
     {
         this.multipleItems = new List <System.Activities.ActivityInstance>(2);
         this.multipleItems.Add(this.singleItem);
         this.multipleItems.Add(item);
         this.singleItem = null;
     }
     else
     {
         this.singleItem = item;
     }
 }
Example #20
0
        internal sealed override void InternalAbort(System.Activities.ActivityInstance instance, ActivityExecutor executor, Exception terminationReason)
        {
            AsyncOperationContext context;

            if (executor.TryGetPendingOperation(instance, out context))
            {
                try
                {
                    if (!context.HasCalledAsyncCodeActivityCancel)
                    {
                        context.IsAborting = true;
                        this.InternalCancel(instance, executor, null);
                    }
                }
                finally
                {
                    if (context.IsStillActive)
                    {
                        context.CancelOperation();
                    }
                }
            }
        }
Example #21
0
        internal void Abort(ActivityExecutor executor, BookmarkManager bookmarkManager, Exception terminationReason, bool isTerminate)
        {
            AbortEnumerator enumerator = new AbortEnumerator(this);

            while (enumerator.MoveNext())
            {
                System.Activities.ActivityInstance current = enumerator.Current;
                if (!current.HasNotExecuted)
                {
                    current.Activity.InternalAbort(current, executor, terminationReason);
                    executor.DebugActivityCompleted(this);
                }
                if (current.PropertyManager != null)
                {
                    current.PropertyManager.UnregisterProperties(current, current.Activity.MemberOf, true);
                }
                executor.TerminateSpecialExecutionBlocks(current, terminationReason);
                executor.CancelPendingOperation(current);
                executor.HandleRootCompletion(current);
                current.MarkAsComplete(executor.RawBookmarkScopeManager, bookmarkManager);
                current.state = ActivityInstanceState.Faulted;
                current.FinalizeState(executor, false, !isTerminate);
            }
        }
        public static void ProcessActivityInstanceTree(System.Activities.ActivityInstance rootInstance, ActivityExecutor executor, Func <System.Activities.ActivityInstance, ActivityExecutor, bool> callback)
        {
            Queue <IList <System.Activities.ActivityInstance> > instancesRemaining = null;
            TreeProcessingList otherList = new TreeProcessingList();

            otherList.Add(rootInstance);
            TreeProcessingList nextInstanceList = null;

            if (rootInstance.HasChildren)
            {
                nextInstanceList = new TreeProcessingList();
            }
            while (((instancesRemaining != null) && (instancesRemaining.Count > 0)) || (otherList.Count != 0))
            {
                if (otherList.Count == 0)
                {
                    otherList.Set(instancesRemaining.Dequeue());
                }
                for (int i = 0; i < otherList.Count; i++)
                {
                    System.Activities.ActivityInstance instance = otherList[i];
                    if (callback(instance, executor) && instance.HasChildren)
                    {
                        instance.AppendChildren(nextInstanceList, ref instancesRemaining);
                    }
                }
                if ((nextInstanceList != null) && (nextInstanceList.Count > 0))
                {
                    nextInstanceList.TransferTo(otherList);
                }
                else
                {
                    otherList.Reset();
                }
            }
        }
 internal HandleInitializationContext(ActivityExecutor executor, System.Activities.ActivityInstance scope)
 {
     this.executor = executor;
     this.scope    = scope;
 }
 internal NativeActivityTransactionContext(System.Activities.ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarks, RuntimeTransactionHandle handle) : base(instance, executor, bookmarks)
 {
     this.executor          = executor;
     this.transactionHandle = handle;
 }
 protected override void OnInitialize(HandleInitializationContext context)
 {
     this.owningInstance = context.OwningActivityInstance;
     this.executor = context.Executor;
     this.PerformDefaultRegistration();
 }
Example #26
0
 internal abstract void Declare(LocationEnvironment targetEnvironment, System.Activities.ActivityInstance activityInstance);
Example #27
0
 internal abstract bool TryPopulateValue(LocationEnvironment targetEnvironment, System.Activities.ActivityInstance targetActivityInstance, ActivityContext resolutionContext);
 internal AsyncCodeActivityContext(AsyncOperationContext asyncContext, System.Activities.ActivityInstance instance, ActivityExecutor executor) : base(instance, executor)
 {
     this.asyncContext = asyncContext;
 }
 internal void Reinitialize(System.Activities.ActivityInstance owner)
 {
     this.owner = owner;
 }
Example #30
0
 internal NativeActivityFaultContext(System.Activities.ActivityInstance executingActivityInstance, ActivityExecutor executor, BookmarkManager bookmarkManager, Exception exception, ActivityInstanceReference source) : base(executingActivityInstance, executor, bookmarkManager)
 {
     this.exception = exception;
     this.source    = source;
 }
 internal AsyncOperationContext(ActivityExecutor executor, System.Activities.ActivityInstance owningActivityInstance)
 {
     this.executor = executor;
     this.owningActivityInstance = owningActivityInstance;
 }
 internal void Initialize(HandleInitializationContext context)
 {
     this.owner = context.OwningActivityInstance;
     this.isUninitialized = false;
     this.OnInitialize(context);
 }
Example #33
0
        internal override bool TryPopulateValue(LocationEnvironment targetEnvironment, System.Activities.ActivityInstance activityInstance, ActivityContext resolutionContext)
        {
            T            local;
            Location <T> location = Argument.CreateLocation <T>();

            targetEnvironment.Declare(base.RuntimeArgument, location, activityInstance);
            if (this.Expression.TryGetValue(resolutionContext, out local))
            {
                location.Value = local;
                return(true);
            }
            return(false);
        }
Example #34
0
 internal override void Declare(LocationEnvironment targetEnvironment, System.Activities.ActivityInstance targetActivityInstance)
 {
     targetEnvironment.Declare(base.RuntimeArgument, this.CreateDefaultLocation(), targetActivityInstance);
 }
 internal WorkflowDataContext(ActivityExecutor executor, System.Activities.ActivityInstance activityInstance)
 {
     this.executor = executor;
     this.activityInstance = activityInstance;
     this.properties = this.CreateProperties();
 }