public override ValidationError ValidateActivityChange(Activity activity, ActivityChangeAction action) { if (activity == null) { throw new ArgumentNullException("activity"); } if (action == null) { throw new ArgumentNullException("action"); } RemovedActivityAction removedAction = action as RemovedActivityAction; if (removedAction != null && removedAction.RemovedActivityIndex == 0) { return(new ValidationError(SR.GetString(SR.Error_EventActivityIsImmutable), ErrorNumbers.Error_DynamicActivity, false)); } else { AddedActivityAction addedAction = action as AddedActivityAction; if (addedAction != null && addedAction.Index == 0) { return(new ValidationError(SR.GetString(SR.Error_EventActivityIsImmutable), ErrorNumbers.Error_DynamicActivity, false)); } } return(base.ValidateActivityChange(activity, action)); }
public override ValidationError ValidateActivityChange(Activity activity, ActivityChangeAction action) { if (activity == null) { throw new ArgumentNullException("activity"); } if (action == null) { throw new ArgumentNullException("action"); } if (((activity.ExecutionStatus != ActivityExecutionStatus.Initialized) && (activity.ExecutionStatus != ActivityExecutionStatus.Executing)) && (activity.ExecutionStatus != ActivityExecutionStatus.Closed)) { return(new ValidationError(SR.GetString("Error_DynamicActivity2", new object[] { activity.QualifiedName, activity.ExecutionStatus, activity.GetType().FullName }), 0x50f)); } RemovedActivityAction action2 = action as RemovedActivityAction; if (action2 != null) { StateActivity originalRemovedActivity = action2.OriginalRemovedActivity as StateActivity; if (originalRemovedActivity != null) { return(new ValidationError(SR.GetError_CantRemoveState(originalRemovedActivity.QualifiedName), 0x61b)); } if (activity.ExecutionStatus == ActivityExecutionStatus.Executing) { EventDrivenActivity activity3 = action2.OriginalRemovedActivity as EventDrivenActivity; if (activity3 != null) { return(new ValidationError(SR.GetError_CantRemoveEventDrivenFromExecutingState(activity3.QualifiedName, activity.QualifiedName), 0x620)); } } } return(null); }
public override ValidationError ValidateActivityChange(Activity activity, ActivityChangeAction action) { if (activity == null) { throw new ArgumentNullException("activity"); } if (action == null) { throw new ArgumentNullException("action"); } if (activity.ExecutionStatus != ActivityExecutionStatus.Initialized && activity.ExecutionStatus != ActivityExecutionStatus.Executing && activity.ExecutionStatus != ActivityExecutionStatus.Closed) { return(new ValidationError(SR.GetString(SR.Error_DynamicActivity2, activity.QualifiedName, activity.ExecutionStatus, activity.GetType().FullName), ErrorNumbers.Error_DynamicActivity2)); } RemovedActivityAction remove = action as RemovedActivityAction; if (remove != null) { StateActivity removedState = remove.OriginalRemovedActivity as StateActivity; if (removedState != null) { // we don't have a way to check if the removed // activity is executing or not, so if the user is trying to // remove a StateActivity, we simply disallow it. // return(new ValidationError( SR.GetError_CantRemoveState(removedState.QualifiedName), ErrorNumbers.Error_CantRemoveState)); } if (activity.ExecutionStatus == ActivityExecutionStatus.Executing) { EventDrivenActivity removedEventDriven = remove.OriginalRemovedActivity as EventDrivenActivity; if (removedEventDriven != null) { return(new ValidationError( SR.GetError_CantRemoveEventDrivenFromExecutingState(removedEventDriven.QualifiedName, activity.QualifiedName), ErrorNumbers.Error_CantRemoveEventDrivenFromExecutingState)); } } } return(null); }
/// <summary> /// Serialise a <see cref="TrackingWorkflowChangedEventArgs" /> ready for persistence. /// </summary> /// <param name="eventArgs"> /// The original <see cref="TrackingWorkflowChangedEventArgs" /> to serialise. /// </param> /// <returns> /// A <see cref="SerialisableTrackingWorkflowChangedEventArgs" /> containing a /// serialised copy of the <see cref="TrackingWorkflowChangedEventArgs" />. /// </returns> private static SerialisableTrackingWorkflowChangedEventArgs buildSerialisableTrackingWorkflowChangedEventArgs(TrackingWorkflowChangedEventArgs eventArgs) { SerialisableTrackingWorkflowChangedEventArgs serialisableEventArgs = new SerialisableTrackingWorkflowChangedEventArgs(); byte [] serialisedData; bool nonSerialisable; serialiseData(eventArgs, out serialisedData, out nonSerialisable); serialisableEventArgs.NonSerialisable = nonSerialisable; serialisableEventArgs.SerialisedData = serialisedData; serialisableEventArgs.StringData = eventArgs.ToString(); serialisableEventArgs.Type = eventArgs.GetType(); serialisableEventArgs.UnserialisedData = eventArgs; for (int i = 0; i < eventArgs.Changes.Count; i++) { AddedActivityAction addedActivityAction = eventArgs.Changes[i] as AddedActivityAction; if (addedActivityAction != null) { List <SerialisableActivityAddedAction> addedActions = buildSerialisableAddedActivityAction(addedActivityAction, i); foreach (SerialisableActivityAddedAction addedAction in addedActions) { serialisableEventArgs.Changes.Add(addedAction); } continue; } RemovedActivityAction removedActivityAction = eventArgs.Changes[i] as RemovedActivityAction; if (removedActivityAction != null) { List <SerialisableActivityRemovedAction> removedActions = buildSerialisableRemovedActivityAction(removedActivityAction, i); foreach (SerialisableActivityRemovedAction removedAction in removedActions) { serialisableEventArgs.Changes.Add(removedAction); } continue; } } return(serialisableEventArgs); }
public override ValidationError ValidateActivityChange(Activity activity, ActivityChangeAction action) { if (activity == null) { throw new ArgumentNullException("activity"); } if (action == null) { throw new ArgumentNullException("action"); } RemovedActivityAction action2 = action as RemovedActivityAction; if ((action2 != null) && (action2.RemovedActivityIndex == 0)) { return(new ValidationError(SR.GetString("Error_EventActivityIsImmutable"), 260, false)); } AddedActivityAction action3 = action as AddedActivityAction; if ((action3 != null) && (action3.Index == 0)) { return(new ValidationError(SR.GetString("Error_EventActivityIsImmutable"), 260, false)); } return(base.ValidateActivityChange(activity, action)); }
private static List <SerialisableActivityRemovedAction> buildSerialisableRemovedActivityAction(RemovedActivityAction action, int order) { List <SerialisableActivityRemovedAction> removedActivities = new List <SerialisableActivityRemovedAction>(); Queue <Activity> activityQueue = new Queue <Activity>(); activityQueue.Enqueue(action.OriginalRemovedActivity); while (activityQueue.Count > 0) { // is this the first record? Activity currentActivity = activityQueue.Dequeue(); if (currentActivity == action.OriginalRemovedActivity) { removedActivities.Add(new SerialisableActivityRemovedAction( currentActivity.GetType(), currentActivity.QualifiedName, currentActivity.Parent == null ? null : currentActivity.Parent.QualifiedName, order, WorkflowInstanceHelper.GetXomlDocument(currentActivity))); } else { removedActivities.Add(new SerialisableActivityRemovedAction( currentActivity.GetType(), currentActivity.QualifiedName, currentActivity.Parent == null ? null : currentActivity.Parent.QualifiedName, -1, WorkflowInstanceHelper.GetXomlDocument(currentActivity))); } CompositeActivity parentActivity = currentActivity as CompositeActivity; if (parentActivity != null) { foreach (Activity childActivity in parentActivity.Activities) { activityQueue.Enqueue(childActivity); } } } return(removedActivities); }