internal void CompensateActivity(System.Workflow.ComponentModel.Activity activity) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } if (activity == null) { throw new ArgumentNullException("activity"); } if (!this.IsValidNestedChild(activity)) { throw new ArgumentException(SR.GetString("AEC_InvalidNestedActivity"), "activity"); } if (activity.ExecutionStatus != ActivityExecutionStatus.Closed) { throw new InvalidOperationException(SR.GetString("Error_InvalidCompensatingState")); } try { activity.SetStatus(ActivityExecutionStatus.Compensating, false); } finally { this.currentActivity.WorkflowCoreRuntime.ScheduleItem(new ActivityExecutorOperation(activity, ActivityOperationType.Compensate, this.ContextId), IsInAtomicTransaction(activity), false, false); } }
internal void InitializeActivity(System.Workflow.ComponentModel.Activity activity) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } if (activity == null) { throw new ArgumentNullException("activity"); } if (!this.IsValidChild(activity, false)) { throw new ArgumentException(SR.GetString("AEC_InvalidActivity"), "activity"); } if (activity.ExecutionStatus != ActivityExecutionStatus.Initialized) { throw new InvalidOperationException(SR.GetString("Error_InvalidInitializingState")); } using (ActivityExecutionContext context = new ActivityExecutionContext(activity)) { using (this.currentActivity.WorkflowCoreRuntime.SetCurrentActivity(activity)) { activity.Initialize(context); } } }
public void CancelActivity(System.Workflow.ComponentModel.Activity activity) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } if (activity == null) { throw new ArgumentNullException("activity"); } if (!this.allowSignalsOnCurrentActivity && ((this.currentActivity.WorkflowCoreRuntime.CurrentActivity.ExecutionStatus == ActivityExecutionStatus.Initialized) || (this.currentActivity.WorkflowCoreRuntime.CurrentActivity.ExecutionStatus == ActivityExecutionStatus.Closed))) { throw new InvalidOperationException(SR.GetString("Error_InvalidStateToExecuteChild")); } if (!this.IsValidChild(activity, false)) { throw new ArgumentException(SR.GetString("AEC_InvalidActivity"), "activity"); } if (activity.ExecutionStatus != ActivityExecutionStatus.Executing) { throw new InvalidOperationException(SR.GetString("Error_InvalidCancelingState")); } try { activity.SetStatus(ActivityExecutionStatus.Canceling, false); } finally { this.currentActivity.WorkflowCoreRuntime.ScheduleItem(new ActivityExecutorOperation(activity, ActivityOperationType.Cancel, this.ContextId), IsInAtomicTransaction(activity), false, false); } }
void IDisposable.Dispose() { if (this.currentActivity != null) { if (this.contextManager != null) { this.contextManager.Dispose(); this.contextManager = null; } this.currentActivity = null; } }
internal static bool IsInAtomicTransaction(System.Workflow.ComponentModel.Activity activity) { while (activity != null) { if (activity == activity.WorkflowCoreRuntime.CurrentAtomicActivity) { return(true); } activity = activity.Parent; } return(false); }
internal bool IsValidChild(System.Workflow.ComponentModel.Activity activity, bool allowContextVariance) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } if (((activity != this.currentActivity.WorkflowCoreRuntime.CurrentActivity) || !this.allowSignalsOnCurrentActivity) && ((!activity.Enabled || (activity.Parent != this.currentActivity.WorkflowCoreRuntime.CurrentActivity)) || (!allowContextVariance && !activity.Equals(this.Activity.GetActivityByName(activity.QualifiedName, true))))) { return(false); } return(true); }
public void Execute(System.Workflow.ComponentModel.Activity definition, NativeActivityContext context) { Debug.Assert(!disposed, "Cannot access disposed object"); try { this.executor.Initialize(definition, this.Activity.GetInputArgumentValues(context), this.Activity.HasNameCollision); ProcessExecutionStatus(this.executor.Execute()); } catch (Exception e) { this.uncaughtException = e; throw; } }
internal bool IsValidNestedChild(System.Workflow.ComponentModel.Activity activity) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } if (activity == this.currentActivity) { return(true); } System.Workflow.ComponentModel.Activity parent = activity; while (((parent != null) && parent.Enabled) && (parent.Parent != this.currentActivity.ContextActivity)) { parent = parent.Parent; } return((parent != null) && parent.Enabled); }
public void TrackActivityStatusChange(System.Workflow.ComponentModel.Activity activity, int eventCounter) { this.nativeActivityContext.Track( new InteropTrackingRecord(this.Activity.DisplayName, new ActivityTrackingRecord( activity.GetType(), activity.QualifiedName, activity.ContextGuid, activity.Parent == null ? Guid.Empty : activity.Parent.ContextGuid, activity.ExecutionStatus, DateTime.UtcNow, eventCounter, null ) ) ); }
public void TrackData(System.Workflow.ComponentModel.Activity activity, int eventCounter, string key, object data) { this.nativeActivityContext.Track( new InteropTrackingRecord(this.Activity.DisplayName, new UserTrackingRecord( activity.GetType(), activity.QualifiedName, activity.ContextGuid, activity.Parent == null ? Guid.Empty : activity.Parent.ContextGuid, DateTime.UtcNow, eventCounter, key, data ) ) ); }
private bool AcquireLocks(System.Workflow.ComponentModel.Activity activity) { ICollection <string> allSynchronizationHandles = this.GetAllSynchronizationHandles(activity); if ((allSynchronizationHandles != null) && (allSynchronizationHandles.Count != 0)) { for (System.Workflow.ComponentModel.Activity activity2 = activity.Parent; activity2 != null; activity2 = activity2.Parent) { if (activity2.SupportsSynchronization || (activity2.Parent == null)) { Dictionary <string, GrantedLock> dictionary = (Dictionary <string, GrantedLock>)activity2.GetValue(GrantedLocksProperty); if (dictionary == null) { dictionary = new Dictionary <string, GrantedLock>(); activity2.SetValue(GrantedLocksProperty, dictionary); } foreach (string str in allSynchronizationHandles) { bool flag = true; if (!dictionary.ContainsKey(str)) { dictionary[str] = new GrantedLock(activity); } else if (dictionary[str].Holder != activity) { dictionary[str].WaitList.Add(activity); flag = false; } if (!flag) { return(false); } } } ICollection <string> is3 = (ICollection <string>)activity2.GetValue(System.Workflow.ComponentModel.Activity.SynchronizationHandlesProperty); if ((is3 != null) && (is3.Count != 0)) { break; } } } return(true); }
private ICollection <string> GetAllSynchronizationHandles(System.Workflow.ComponentModel.Activity activity) { WalkerEventHandler handler = null; ICollection <string> is2 = (ICollection <string>)activity.GetValue(System.Workflow.ComponentModel.Activity.SynchronizationHandlesProperty); if ((is2 == null) || (is2.Count == 0)) { return(is2); } List <string> handles = new List <string>(is2); if (activity is CompositeActivity) { Walker walker = new Walker(); if (handler == null) { handler = delegate(Walker w, WalkerEventArgs e) { if (e.CurrentActivity != activity) { ICollection <string> collection = (ICollection <string>)e.CurrentActivity.GetValue(System.Workflow.ComponentModel.Activity.SynchronizationHandlesProperty); if (collection != null) { handles.AddRange(collection); } } }; } walker.FoundActivity += handler; walker.Walk(activity); } handles.Sort(); for (int i = 1; i < handles.Count; i++) { if (handles[i] == handles[i - 1]) { handles.RemoveAt(--i); } } handles.TrimExcess(); return(handles); }
/// <summary> /// The Initialize method will set the image used for CreateSubSiteActivity class. /// </summary> /// <param name="activity"></param> protected override void Initialize(System.Workflow.ComponentModel.Activity activity) { base.Initialize(activity); this.Image = Resources.NewWebsite; }
internal ActivityExecutionContext(System.Workflow.ComponentModel.Activity activity) { this.currentActivity = activity; }
internal ActivityExecutionContext(System.Workflow.ComponentModel.Activity activity, bool allowSignalsOnCurrentActivity) : this(activity) { this.allowSignalsOnCurrentActivity = allowSignalsOnCurrentActivity; }
internal void ReleaseLocks(bool transactional) { if (this.currentActivity == null) { throw new ObjectDisposedException("ActivityExecutionContext"); } this.Activity.RemoveProperty(LockAcquiredCallbackProperty); ICollection <string> allSynchronizationHandles = this.GetAllSynchronizationHandles(this.Activity); if ((allSynchronizationHandles != null) && (allSynchronizationHandles.Count != 0)) { List <System.Workflow.ComponentModel.Activity> list = new List <System.Workflow.ComponentModel.Activity>(); for (System.Workflow.ComponentModel.Activity activity = this.Activity.Parent; activity != null; activity = activity.Parent) { if (activity.SupportsSynchronization || (activity.Parent == null)) { Dictionary <string, GrantedLock> dictionary = (Dictionary <string, GrantedLock>)activity.GetValue(GrantedLocksProperty); if (transactional) { Dictionary <string, GrantedLock> dictionary2 = new Dictionary <string, GrantedLock>(); if (dictionary != null) { foreach (KeyValuePair <string, GrantedLock> pair in dictionary) { dictionary2.Add(pair.Key, (GrantedLock)pair.Value.Clone()); } } activity.SetValue(CachedGrantedLocksProperty, dictionary2); } if (dictionary != null) { foreach (string str in allSynchronizationHandles) { if (dictionary.ContainsKey(str)) { if (dictionary[str].WaitList.Count == 0) { dictionary.Remove(str); } else if (dictionary[str].Holder != this.Activity) { dictionary[str].WaitList.Remove(this.Activity); } else { System.Workflow.ComponentModel.Activity item = dictionary[str].WaitList[0]; dictionary[str].WaitList.RemoveAt(0); dictionary[str].Holder = item; if (!list.Contains(item)) { list.Add(item); } } } } if (dictionary.Count == 0) { activity.RemoveProperty(GrantedLocksProperty); } } } ICollection <string> is3 = (ICollection <string>)activity.GetValue(System.Workflow.ComponentModel.Activity.SynchronizationHandlesProperty); if ((is3 != null) && (is3.Count != 0)) { break; } } foreach (System.Workflow.ComponentModel.Activity activity3 in list) { if (this.AcquireLocks(activity3)) { ((ActivityExecutorDelegateInfo <EventArgs>)activity3.GetValue(LockAcquiredCallbackProperty)).InvokeDelegate(this.Activity.ContextActivity, EventArgs.Empty, false, transactional); } } } }
internal ActivityExecutionStatusChangedEventArgs(ActivityExecutionStatus executionStatus, ActivityExecutionResult executionResult, System.Workflow.ComponentModel.Activity activity) { this.status = executionStatus; this.activityExecutionResult = executionResult; this.activityQualifiedName = activity.QualifiedName; this.stateId = activity.ContextActivity.ContextId; }
/// <summary> /// The Initialize method will set the image used for CreateSubSiteActivity class. /// </summary> /// <param name="activity"></param> protected override void Initialize(System.Workflow.ComponentModel.Activity activity) { base.Initialize(activity); this.Image = Resources.SychronizeList; }
/// <summary> /// The Initialize method will set the image used for ResolveSiteTemplateActivity class. /// </summary> /// <param name="activity"></param> protected override void Initialize(System.Workflow.ComponentModel.Activity activity) { base.Initialize(activity); this.Image = Resources.SearchInFolder; }