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
- ChtmlLinkAdapter.cs
- CaseInsensitiveComparer.cs
- StrokeDescriptor.cs
- BaseDataBoundControl.cs
- MetabaseSettingsIis7.cs
- AccessViolationException.cs
- DescendentsWalkerBase.cs
- OleAutBinder.cs
- MarkerProperties.cs
- RequestCacheValidator.cs
- ElementNotEnabledException.cs
- Command.cs
- Point3DCollectionConverter.cs
- Tablet.cs
- GatewayIPAddressInformationCollection.cs
- ObfuscationAttribute.cs
- PrtCap_Base.cs
- WebPartVerbsEventArgs.cs
- ToolboxItemAttribute.cs
- FloatSumAggregationOperator.cs
- Win32SafeHandles.cs
- SqlCommand.cs
- IERequestCache.cs
- OSFeature.cs
- DataExpression.cs
- QuaternionRotation3D.cs
- TextRunProperties.cs
- PropertyTabAttribute.cs
- XPathAncestorIterator.cs
- SqlFactory.cs
- SerializationInfo.cs
- MessageLogTraceRecord.cs
- DBSqlParserTable.cs
- MailDefinition.cs
- NTAccount.cs
- IconConverter.cs
- DataTableClearEvent.cs
- TextProperties.cs
- HMACSHA384.cs
- EventSourceCreationData.cs
- SmiContextFactory.cs
- ProcessInputEventArgs.cs
- XmlNotation.cs
- Message.cs
- WebUtility.cs
- DataControlReference.cs
- SchemaImporterExtensionElement.cs
- TextEditorLists.cs
- ProfileService.cs
- CompiledQuery.cs
- SafeRightsManagementPubHandle.cs
- CommentEmitter.cs
- DataGridCell.cs
- ListControl.cs
- WindowsListViewItemStartMenu.cs
- TransformerInfo.cs
- ListViewInsertedEventArgs.cs
- NetworkInterface.cs
- RemoveStoryboard.cs
- LeaseManager.cs
- NumericPagerField.cs
- ScrollableControlDesigner.cs
- ExeContext.cs
- SoapReflectionImporter.cs
- ConfigXmlSignificantWhitespace.cs
- XPathNodeHelper.cs
- LogPolicy.cs
- QueryTreeBuilder.cs
- ObjectStorage.cs
- XmlNodeChangedEventManager.cs
- SmtpLoginAuthenticationModule.cs
- IntegerValidatorAttribute.cs
- IgnoreFileBuildProvider.cs
- ElementAction.cs
- TextDecorationUnitValidation.cs
- ExceptionUtility.cs
- XPathSelfQuery.cs
- TaskSchedulerException.cs
- FontSizeConverter.cs
- SqlBuilder.cs
- SqlDataSourceStatusEventArgs.cs
- WorkflowTimerService.cs
- Hashtable.cs
- BindingGraph.cs
- RecoverInstanceLocksCommand.cs
- AppSecurityManager.cs
- PatternMatcher.cs
- IIS7WorkerRequest.cs
- sqlcontext.cs
- ToolStripGrip.cs
- CalendarDesigner.cs
- Span.cs
- PreloadedPackages.cs
- SplayTreeNode.cs
- ComponentConverter.cs
- SystemInfo.cs
- ClientConfigurationSystem.cs
- TextEmbeddedObject.cs
- Switch.cs
- SpellerError.cs