internal static void InitializeCorrelationTokenCollection(Activity activity, CorrelationToken correlator) { if ((correlator != null) && !string.IsNullOrEmpty(correlator.OwnerActivityName)) { string ownerActivityName = correlator.OwnerActivityName; Activity activityByName = activity.GetActivityByName(ownerActivityName); if (activityByName == null) { activityByName = Helpers.ParseActivityForBind(activity, ownerActivityName); } if (activityByName == null) { throw new ArgumentException("ownerActivity"); } CorrelationTokenCollection tokens = activityByName.GetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty) as CorrelationTokenCollection; if (tokens == null) { tokens = new CorrelationTokenCollection(); activityByName.SetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty, tokens); } if (!tokens.Contains(correlator.Name)) { tokens.Add(correlator); } } }
internal static void InitializeCorrelationTokenCollection(Activity activity, CorrelationToken correlator) { if (correlator != null && !String.IsNullOrEmpty(correlator.OwnerActivityName)) { string ownerActivityId = correlator.OwnerActivityName; Activity owner = activity.GetActivityByName(ownerActivityId); if (owner == null) { owner = System.Workflow.Activities.Common.Helpers.ParseActivityForBind(activity, ownerActivityId); } if (owner == null) { throw new ArgumentException("ownerActivity"); } CorrelationTokenCollection collection = owner.GetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty) as CorrelationTokenCollection; if (collection == null) { collection = new CorrelationTokenCollection(); owner.SetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty, collection); } if (!collection.Contains(correlator.Name)) { collection.Add(correlator); } } }
public void ActivityStatusChanged(System.Workflow.ComponentModel.Activity activity, bool transacted, bool committed) { if (!committed) { if (this.trackingEnabled) { this.ServiceProvider.TrackActivityStatusChange(activity, this.eventCounter++); } if (activity.ExecutionStatus == ActivityExecutionStatus.Closed) { this.ScheduleDelayedItems(activity); } } if ((activity.ExecutionStatus == ActivityExecutionStatus.Closed) && (!(activity is ICompensatableActivity) || ((activity is ICompensatableActivity) && activity.CanUninitializeNow))) { CorrelationTokenCollection.UninitializeCorrelationTokens(activity); } }
private static CorrelationToken GetCorrelationToken(Activity activity) { DependencyProperty dependencyProperty = DependencyProperty.FromName("CorrelationToken", activity.GetType()); if (dependencyProperty == null) { dependencyProperty = DependencyProperty.FromName("CorrelationToken", activity.GetType().BaseType); } CorrelationToken token = activity.GetValue(dependencyProperty) as CorrelationToken; if (token == null) { throw new InvalidOperationException(SR.GetString("Error_CorrelationTokenMissing", new object[] { activity.Name })); } CorrelationToken token2 = CorrelationTokenCollection.GetCorrelationToken(activity, token.Name, token.OwnerActivityName); if (token2 == null) { throw new InvalidOperationException(SR.GetString("Error_CorrelationTokenMissing", new object[] { activity.Name })); } return(token2); }
internal static void InitializeCorrelationTokenCollection(Activity activity, CorrelationToken correlator) { if (correlator != null && !String.IsNullOrEmpty(correlator.OwnerActivityName)) { string ownerActivityId = correlator.OwnerActivityName; Activity owner = activity.GetActivityByName(ownerActivityId); if (owner == null) owner = System.Workflow.Activities.Common.Helpers.ParseActivityForBind(activity, ownerActivityId); if (owner == null) throw new ArgumentException("ownerActivity"); CorrelationTokenCollection collection = owner.GetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty) as CorrelationTokenCollection; if (collection == null) { collection = new CorrelationTokenCollection(); owner.SetValue(CorrelationTokenCollection.CorrelationTokenCollectionProperty, collection); } if (!collection.Contains(correlator.Name)) { collection.Add(correlator); } } }
private static CorrelationToken GetCorrelationToken(Activity activity) { DependencyProperty dependencyProperty = DependencyProperty.FromName("CorrelationToken", activity.GetType()); if (dependencyProperty == null) { dependencyProperty = DependencyProperty.FromName("CorrelationToken", activity.GetType().BaseType); } CorrelationToken reference = activity.GetValue(dependencyProperty) as CorrelationToken; if (reference == null) { throw new InvalidOperationException(SR.GetString(SR.Error_CorrelationTokenMissing, activity.Name)); } CorrelationToken correlator = CorrelationTokenCollection.GetCorrelationToken(activity, reference.Name, reference.OwnerActivityName); if (correlator == null) { throw new InvalidOperationException(SR.GetString(SR.Error_CorrelationTokenMissing, activity.Name)); } return(correlator); }
public void ActivityStatusChanged(Activity activity, bool transacted, bool committed) { if (!committed) { // Forward to 4.0 tracking mechanism, AEC.Track if (this.trackingEnabled) { this.ServiceProvider.TrackActivityStatusChange(activity, this.eventCounter++); } if (activity.ExecutionStatus == ActivityExecutionStatus.Closed) { this.ScheduleDelayedItems(activity); } } if (activity.ExecutionStatus == ActivityExecutionStatus.Closed) { if (!(activity is ICompensatableActivity) || ((activity is ICompensatableActivity) && activity.CanUninitializeNow)) { CorrelationTokenCollection.UninitializeCorrelationTokens(activity); } } }