public void LoadActivityTree(Activity rootActivity, System.Activities.ActivityInstance rootInstance, List <System.Activities.ActivityInstance> secondaryRootInstances, ActivityExecutor executor) { this.instanceMapping = new Dictionary <Activity, InstanceList>(this.rawDeserializedLists.Length); for (int i = 0; i < this.rawDeserializedLists.Length; i++) { Activity activity; InstanceList list = this.rawDeserializedLists[i]; if (!QualifiedId.TryGetElementFromRoot(rootActivity, list.ActivityId, out activity)) { throw FxTrace.Exception.AsError(new InvalidOperationException(System.Activities.SR.ActivityInstanceFixupFailed)); } this.instanceMapping.Add(activity, list); list.Load(activity, this); } this.rawDeserializedLists = null; Func <System.Activities.ActivityInstance, ActivityExecutor, bool> callback = new Func <System.Activities.ActivityInstance, ActivityExecutor, bool>(this.OnActivityInstanceLoaded); rootInstance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(rootInstance, executor, callback); if (secondaryRootInstances != null) { foreach (System.Activities.ActivityInstance instance in secondaryRootInstances) { instance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(instance, executor, callback); } } }
public ExecutionPropertyManager(System.Activities.ActivityInstance owningInstance) { this.owningInstance = owningInstance; this.properties = new Dictionary <string, ExecutionProperty>(); if (owningInstance.HasChildren) { System.Activities.ActivityInstance previousOwner = (owningInstance.PropertyManager != null) ? owningInstance.PropertyManager.owningInstance : null; ActivityUtilities.ProcessActivityInstanceTree(owningInstance, null, (instance, executor) => this.AttachPropertyManager(instance, previousOwner)); } else { owningInstance.PropertyManager = this; } }
public void LoadActivityTree( Activity rootActivity, ActivityInstance?rootInstance, List <ActivityInstance> secondaryRootInstances, ActivityExecutor executor) { Fx.Assert(this.rawDeserializedLists != null, "We should always have deserialized some lists."); if (this.rawDeserializedLists == null) { throw new NullReferenceException("We should always have deserialized some lists."); } this.instanceMapping = new Dictionary <Activity, InstanceList>(this.rawDeserializedLists?.Length ?? 0); for (var i = 0; i < this.rawDeserializedLists.Length; i++) { var list = this.rawDeserializedLists[i]; if (!QualifiedId.TryGetElementFromRoot(rootActivity, list.ActivityId, out var activity)) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityInstanceFixupFailed)); } this.instanceMapping.Add(activity, list); list.Load(activity, this); } // We need to null this out once we've recreated the dictionary to avoid having out of // sync data this.rawDeserializedLists = null; // then walk our instance list, fixup parent references, and perform basic validation var processInstanceCallback = new Func <ActivityInstance, ActivityExecutor, bool>(OnActivityInstanceLoaded); rootInstance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(rootInstance, executor, processInstanceCallback); if (secondaryRootInstances != null) { foreach (var instance in secondaryRootInstances) { instance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(instance, executor, processInstanceCallback); } } }
public ExecutionPropertyManager(ActivityInstance owningInstance) { Fx.Assert(owningInstance != null, "null instance should be using the internal host-based ctor"); this.owningInstance = owningInstance; // This object is only constructed if we know we have properties to add to it this.properties = new Dictionary <string, ExecutionProperty>(); if (owningInstance.HasChildren) { var previousOwner = owningInstance.PropertyManager != null ? owningInstance.PropertyManager.owningInstance : null; // we're setting a handle property. Walk the children and associate the new property manager // then walk our instance list, fixup parent references, and perform basic validation ActivityUtilities.ProcessActivityInstanceTree(owningInstance, null, (instance, executor) => AttachPropertyManager(instance, previousOwner)); } else { owningInstance.PropertyManager = this; } }
public void LoadActivityTree(Activity rootActivity, ActivityInstance rootInstance, List <ActivityInstance> secondaryRootInstances, ActivityExecutor executor) { Fx.Assert(_rawDeserializedLists != null, "We should always have deserialized some lists."); _instanceMapping = new Dictionary <Activity, InstanceList>(_rawDeserializedLists.Length); for (int i = 0; i < _rawDeserializedLists.Length; i++) { InstanceList list = _rawDeserializedLists[i]; Activity activity; if (!QualifiedId.TryGetElementFromRoot(rootActivity, list.ActivityId, out activity)) { throw Microsoft.CoreWf.Internals.FxTrace.Exception.AsError(new InvalidOperationException(SR.ActivityInstanceFixupFailed)); } _instanceMapping.Add(activity, list); list.Load(activity, this); } // We need to null this out once we've recreated the dictionary to avoid // having out of sync data _rawDeserializedLists = null; // then walk our instance list, fixup parent references, and perform basic validation Func <ActivityInstance, ActivityExecutor, bool> processInstanceCallback = new Func <ActivityInstance, ActivityExecutor, bool>(OnActivityInstanceLoaded); rootInstance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(rootInstance, executor, processInstanceCallback); if (secondaryRootInstances != null) { foreach (ActivityInstance instance in secondaryRootInstances) { instance.FixupInstance(null, this, executor); ActivityUtilities.ProcessActivityInstanceTree(instance, executor, processInstanceCallback); } } }