public void SubscribeForCorrelationTokenInitializedEvent(Activity activity, IActivityEventListener <CorrelationTokenEventArgs> dataChangeListener) { if (dataChangeListener == null) { throw new ArgumentNullException("dataChangeListener"); } if (activity == null) { throw new ArgumentNullException("activity"); } ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> subscriber = new ActivityExecutorDelegateInfo <CorrelationTokenEventArgs>(dataChangeListener, ContextActivityUtils.ContextActivity(activity), true); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > subscriptions = GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (subscriptions == null) { subscriptions = new List <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >(); SetValue(SubscriptionsProperty, subscriptions); } subscriptions.Add(subscriber); }
public static CorrelationToken GetCorrelationToken(Activity activity, string correlationTokenName, string ownerActivityName) { if (null == correlationTokenName) { throw new ArgumentNullException("correlationTokenName"); } if (null == ownerActivityName) { throw new ArgumentNullException("ownerActivityName"); } if (null == activity) { throw new ArgumentNullException("activity"); } Activity contextActivity = ContextActivityUtils.ContextActivity(activity); Activity owner = null; if (!String.IsNullOrEmpty(ownerActivityName)) { while (contextActivity != null) { owner = contextActivity.GetActivityByName(ownerActivityName, true); if (owner != null) { break; } contextActivity = ContextActivityUtils.ParentContextActivity(contextActivity); } if (owner == null) { owner = Helpers.ParseActivityForBind(activity, ownerActivityName); } } if (owner == null) { throw new InvalidOperationException(ExecutionStringManager.OwnerActivityMissing); } CorrelationTokenCollection collection = owner.GetValue(CorrelationTokenCollectionProperty) as CorrelationTokenCollection; if (collection == null) { collection = new CorrelationTokenCollection(); owner.SetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty, collection); } if (!collection.Contains(correlationTokenName)) { collection.Add(new CorrelationToken(correlationTokenName)); } return(collection[correlationTokenName]); }
public static CorrelationToken GetCorrelationToken(Activity activity, string correlationTokenName, string ownerActivityName) { if (correlationTokenName == null) { throw new ArgumentNullException("correlationTokenName"); } if (ownerActivityName == null) { throw new ArgumentNullException("ownerActivityName"); } if (activity == null) { throw new ArgumentNullException("activity"); } Activity activity2 = ContextActivityUtils.ContextActivity(activity); Activity activityByName = null; if (!string.IsNullOrEmpty(ownerActivityName)) { while (activity2 != null) { activityByName = activity2.GetActivityByName(ownerActivityName, true); if (activityByName != null) { break; } activity2 = ContextActivityUtils.ParentContextActivity(activity2); } if (activityByName == null) { activityByName = Helpers.ParseActivityForBind(activity, ownerActivityName); } } if (activityByName == null) { throw new InvalidOperationException(ExecutionStringManager.OwnerActivityMissing); } CorrelationTokenCollection tokens = activityByName.GetValue(CorrelationTokenCollectionProperty) as CorrelationTokenCollection; if (tokens == null) { tokens = new CorrelationTokenCollection(); activityByName.SetValue(CorrelationTokenCollectionProperty, tokens); } if (!tokens.Contains(correlationTokenName)) { tokens.Add(new CorrelationToken(correlationTokenName)); } return(tokens[correlationTokenName]); }
internal void RequestRevertToCheckpointState(Activity currentActivity, EventHandler <EventArgs> callbackHandler, EventArgs callbackData, bool suspendOnRevert, string suspendInfo) { if (this.clonedInstanceStateStream == null) { throw new InvalidOperationException(ExecutionStringManager.InvalidRevertRequest); } this.activityContextId = ContextActivityUtils.ContextId(ContextActivityUtils.ContextActivity(currentActivity)); this.activityQualifiedName = currentActivity.QualifiedName; this.callbackData = callbackData; this.callbackHandler = callbackHandler; this.suspendOnRevert = suspendOnRevert; this.suspendOnRevertInfo = suspendInfo; this.isInstanceStateRevertRequested = true; this.workflowExecutor.Scheduler.CanRun = false; }
internal void Uninitialize(Activity activity) { base.SetValue(PropertiesProperty, null); CorrelationTokenEventArgs e = new CorrelationTokenEventArgs(this, false); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > list = base.GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (list != null) { ActivityExecutorDelegateInfo <CorrelationTokenEventArgs>[] array = new ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> [list.Count]; list.CopyTo(array, 0); foreach (ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> info in array) { info.InvokeDelegate(ContextActivityUtils.ContextActivity(activity), e, true, false); } } WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "CorrelationToken Uninitialized for {0} owner activity {1}", new object[] { this.Name, this.OwnerActivityName }); }
internal void Uninitialize(Activity activity) { SetValue(PropertiesProperty, null); // fire correlation uninitialized events CorrelationTokenEventArgs eventArgs = new CorrelationTokenEventArgs(this, false); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > subscribers = GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (subscribers != null) { ActivityExecutorDelegateInfo <CorrelationTokenEventArgs>[] clonedSubscribers = new ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> [subscribers.Count]; subscribers.CopyTo(clonedSubscribers, 0); foreach (ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> subscriber in clonedSubscribers) { subscriber.InvokeDelegate(ContextActivityUtils.ContextActivity(activity), eventArgs, true, false); } } //SetValue(InitializedProperty, false); WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "CorrelationToken Uninitialized for {0} owner activity {1}", this.Name, this.OwnerActivityName); }
public void Initialize(Activity activity, ICollection <CorrelationProperty> propertyValues) { if (this.Initialized) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, ExecutionStringManager.CorrelationAlreadyInitialized, new object[] { this.Name })); } base.SetValue(PropertiesProperty, propertyValues); CorrelationTokenEventArgs e = new CorrelationTokenEventArgs(this, true); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > list = base.GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (list != null) { foreach (ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> info in list) { info.InvokeDelegate(ContextActivityUtils.ContextActivity(activity), e, true, false); } } base.SetValue(InitializedProperty, true); WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "CorrelationToken initialized for {0} owner activity {1} ", new object[] { this.Name, this.OwnerActivityName }); }
public void Initialize(Activity activity, ICollection <CorrelationProperty> propertyValues) { if (this.Initialized) { throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.CorrelationAlreadyInitialized, this.Name)); } SetValue(PropertiesProperty, propertyValues); // fire correlation initialized events CorrelationTokenEventArgs eventArgs = new CorrelationTokenEventArgs(this, true); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > subscribers = GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (subscribers != null) { foreach (ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> subscriber in subscribers) { subscriber.InvokeDelegate(ContextActivityUtils.ContextActivity(activity), eventArgs, true, false); } } SetValue(InitializedProperty, true); WorkflowTrace.Runtime.TraceEvent(TraceEventType.Information, 0, "CorrelationToken initialized for {0} owner activity {1} ", this.Name, this.OwnerActivityName); }
internal Guid GetContext(Activity activity) { return(((ActivityExecutionContextInfo)ContextActivityUtils.ContextActivity(activity).GetValue(Activity.ActivityExecutionContextInfoProperty)).ContextGuid); }
public void SubscribeForCorrelationTokenInitializedEvent(Activity activity, IActivityEventListener <CorrelationTokenEventArgs> dataChangeListener) { if (dataChangeListener == null) { throw new ArgumentNullException("dataChangeListener"); } if (activity == null) { throw new ArgumentNullException("activity"); } ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> item = new ActivityExecutorDelegateInfo <CorrelationTokenEventArgs>(dataChangeListener, ContextActivityUtils.ContextActivity(activity), true); IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> > list = base.GetValue(SubscriptionsProperty) as IList <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >; if (list == null) { list = new List <ActivityExecutorDelegateInfo <CorrelationTokenEventArgs> >(); base.SetValue(SubscriptionsProperty, list); } list.Add(item); }