Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Compiler / Validation / CompositeActivityValidator.cs / 1305376 / CompositeActivityValidator.cs
namespace System.Workflow.ComponentModel.Compiler { using System; using System.Workflow.ComponentModel.Design; #region Class CompositeActivityValidator public class CompositeActivityValidator : ActivityValidator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { CompositeActivity compositeActivity = obj as CompositeActivity; if (compositeActivity == null) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(CompositeActivity).FullName), "obj"); if (Helpers.IsActivityLocked(compositeActivity)) return new ValidationErrorCollection(); ValidationErrorCollection validationErrors = base.Validate(manager, obj); // check if more than one cancellation handler or compensation or fault handlers are specified int cancelHandlerCount = 0; int exceptionHandlersCount = 0; int compensationHandlerCount = 0; foreach (Activity activity in ((ISupportAlternateFlow)compositeActivity).AlternateFlowActivities) { cancelHandlerCount += (activity is CancellationHandlerActivity) ? 1 : 0; exceptionHandlersCount += (activity is FaultHandlersActivity) ? 1 : 0; compensationHandlerCount += (activity is CompensationHandlerActivity) ? 1 : 0; } // check cancellation handlers if (cancelHandlerCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCancelHandler, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneEventHandlersDecl)); // check exception handlers if (exceptionHandlersCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneFaultHandlersActivityDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneFaultHandlersActivityDecl)); // check compensation handlers if (compensationHandlerCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCompensationDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneCompensationDecl)); if (manager.ValidateChildActivities) { foreach (Activity childActivity in Helpers.GetAllEnabledActivities(compositeActivity)) validationErrors.AddRange(ValidationHelpers.ValidateActivity(manager, childActivity)); } return validationErrors; } 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_DynamicActivity, activity.QualifiedName, Enum.GetName(typeof(ActivityExecutionStatus), activity.ExecutionStatus)), ErrorNumbers.Error_DynamicActivity); } return null; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel.Compiler { using System; using System.Workflow.ComponentModel.Design; #region Class CompositeActivityValidator public class CompositeActivityValidator : ActivityValidator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { CompositeActivity compositeActivity = obj as CompositeActivity; if (compositeActivity == null) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(CompositeActivity).FullName), "obj"); if (Helpers.IsActivityLocked(compositeActivity)) return new ValidationErrorCollection(); ValidationErrorCollection validationErrors = base.Validate(manager, obj); // check if more than one cancellation handler or compensation or fault handlers are specified int cancelHandlerCount = 0; int exceptionHandlersCount = 0; int compensationHandlerCount = 0; foreach (Activity activity in ((ISupportAlternateFlow)compositeActivity).AlternateFlowActivities) { cancelHandlerCount += (activity is CancellationHandlerActivity) ? 1 : 0; exceptionHandlersCount += (activity is FaultHandlersActivity) ? 1 : 0; compensationHandlerCount += (activity is CompensationHandlerActivity) ? 1 : 0; } // check cancellation handlers if (cancelHandlerCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCancelHandler, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneEventHandlersDecl)); // check exception handlers if (exceptionHandlersCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneFaultHandlersActivityDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneFaultHandlersActivityDecl)); // check compensation handlers if (compensationHandlerCount > 1) validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCompensationDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneCompensationDecl)); if (manager.ValidateChildActivities) { foreach (Activity childActivity in Helpers.GetAllEnabledActivities(compositeActivity)) validationErrors.AddRange(ValidationHelpers.ValidateActivity(manager, childActivity)); } return validationErrors; } 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_DynamicActivity, activity.QualifiedName, Enum.GetName(typeof(ActivityExecutionStatus), activity.ExecutionStatus)), ErrorNumbers.Error_DynamicActivity); } return null; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlEnumAttribute.cs
- Int64Converter.cs
- LambdaCompiler.Binary.cs
- SingleResultAttribute.cs
- XmlSchemaRedefine.cs
- RuntimeUtils.cs
- CompiledIdentityConstraint.cs
- SqlNodeAnnotation.cs
- TextElement.cs
- SqlTypesSchemaImporter.cs
- login.cs
- XomlCompilerError.cs
- IntegerValidator.cs
- EndpointReference.cs
- TreeNodeCollection.cs
- MenuItemStyleCollection.cs
- PassportAuthenticationEventArgs.cs
- ValidatorUtils.cs
- TextRangeEditLists.cs
- Converter.cs
- AttachmentService.cs
- EdmValidator.cs
- KeysConverter.cs
- ProjectionCamera.cs
- EntityConnection.cs
- SqlProcedureAttribute.cs
- TextServicesCompartmentContext.cs
- Point3DCollectionConverter.cs
- PlatformCulture.cs
- GuidConverter.cs
- StringWriter.cs
- SafeRightsManagementSessionHandle.cs
- WmlValidatorAdapter.cs
- TextRangeProviderWrapper.cs
- TreeViewImageIndexConverter.cs
- CharacterMetricsDictionary.cs
- QueryLifecycle.cs
- XPathDocument.cs
- ReadWriteObjectLock.cs
- ExpressionPrefixAttribute.cs
- RouteValueExpressionBuilder.cs
- XPathCompileException.cs
- ItemDragEvent.cs
- DefaultValueTypeConverter.cs
- BufferedStream.cs
- TextParagraphCache.cs
- WinEventHandler.cs
- PriorityQueue.cs
- SweepDirectionValidation.cs
- ProtocolViolationException.cs
- XmlNodeChangedEventManager.cs
- RequestContextBase.cs
- CompositeFontInfo.cs
- BuildResult.cs
- XmlUrlResolver.cs
- SkipQueryOptionExpression.cs
- GiveFeedbackEventArgs.cs
- DataGridTextBox.cs
- CaretElement.cs
- OleDbReferenceCollection.cs
- MetadataStore.cs
- UserMapPath.cs
- ReadWriteSpinLock.cs
- SearchForVirtualItemEventArgs.cs
- EmbossBitmapEffect.cs
- ThousandthOfEmRealPoints.cs
- BinaryFormatterWriter.cs
- NumericExpr.cs
- SizeAnimationBase.cs
- XmlName.cs
- ReflectPropertyDescriptor.cs
- ToolTipService.cs
- BinaryExpression.cs
- MD5.cs
- TypeBuilderInstantiation.cs
- DecimalFormatter.cs
- DataGridViewCheckBoxColumn.cs
- Container.cs
- CounterCreationDataConverter.cs
- RoutedEventHandlerInfo.cs
- WorkflowViewManager.cs
- CollectionDataContract.cs
- ThicknessKeyFrameCollection.cs
- ImageSource.cs
- UITypeEditor.cs
- FileReservationCollection.cs
- FamilyTypefaceCollection.cs
- TextEditorParagraphs.cs
- BindingValueChangedEventArgs.cs
- SecurityContext.cs
- ColumnResult.cs
- InkPresenterAutomationPeer.cs
- ProgressiveCrcCalculatingStream.cs
- XmlMemberMapping.cs
- SHA256Managed.cs
- SystemFonts.cs
- DataSourceHelper.cs
- SharedPersonalizationStateInfo.cs
- SerialPinChanges.cs
- SelectingProviderEventArgs.cs