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
- EdmTypeAttribute.cs
- FeatureManager.cs
- BezierSegment.cs
- SemanticBasicElement.cs
- HandleRef.cs
- GroupBox.cs
- ResourceProviderFactory.cs
- NetCodeGroup.cs
- mediaeventshelper.cs
- DataDocumentXPathNavigator.cs
- XmlJsonReader.cs
- HelpKeywordAttribute.cs
- GridPatternIdentifiers.cs
- QilGenerator.cs
- PageEventArgs.cs
- UnescapedXmlDiagnosticData.cs
- XmlComment.cs
- Quaternion.cs
- X509Certificate.cs
- DrawingContext.cs
- Types.cs
- transactioncontext.cs
- XmlDataLoader.cs
- Attributes.cs
- DoubleConverter.cs
- ColorContextHelper.cs
- WebZone.cs
- SerTrace.cs
- PenCursorManager.cs
- StreamReader.cs
- StreamingContext.cs
- _ConnectOverlappedAsyncResult.cs
- CommandSet.cs
- ComponentConverter.cs
- XmlTextAttribute.cs
- CodeDelegateCreateExpression.cs
- CodeAttributeDeclaration.cs
- DataSourceDescriptorCollection.cs
- TextTreeFixupNode.cs
- NavigationFailedEventArgs.cs
- LabelAutomationPeer.cs
- SR.cs
- AttributeParameterInfo.cs
- NumberAction.cs
- LicenseManager.cs
- HtmlButton.cs
- BezierSegment.cs
- TextDecorations.cs
- Bitmap.cs
- BindingCollectionElement.cs
- OLEDB_Enum.cs
- UIElement3D.cs
- Point3D.cs
- HScrollBar.cs
- Int64Storage.cs
- UnmanagedHandle.cs
- CodeCastExpression.cs
- RowSpanVector.cs
- BindingExpressionBase.cs
- XamlToRtfParser.cs
- Exception.cs
- SubstitutionList.cs
- SpecularMaterial.cs
- PropertyToken.cs
- sitestring.cs
- FormViewUpdatedEventArgs.cs
- ThousandthOfEmRealPoints.cs
- IntPtr.cs
- FileUtil.cs
- UITypeEditor.cs
- MethodSet.cs
- ImportCatalogPart.cs
- StylusDownEventArgs.cs
- HtmlInputImage.cs
- StdValidatorsAndConverters.cs
- PrivateFontCollection.cs
- SqlDataSourceCache.cs
- Size3DValueSerializer.cs
- XmlBindingWorker.cs
- TdsEnums.cs
- JsonGlobals.cs
- AffineTransform3D.cs
- Int32AnimationUsingKeyFrames.cs
- MultiByteCodec.cs
- ContentElement.cs
- EventPropertyMap.cs
- StyleBamlRecordReader.cs
- DataKeyArray.cs
- EmbeddedMailObject.cs
- ColorConvertedBitmapExtension.cs
- JsonFormatGeneratorStatics.cs
- sitestring.cs
- UnsettableComboBox.cs
- BrowsableAttribute.cs
- XmlReflectionMember.cs
- Stroke2.cs
- ListView.cs
- XmlMemberMapping.cs
- ResolveDuplexAsyncResult.cs
- ImageField.cs