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
- EdmProviderManifest.cs
- StreamGeometry.cs
- XmlNodeChangedEventArgs.cs
- RepeatBehaviorConverter.cs
- RemotingServices.cs
- DbDataRecord.cs
- UnsafeNativeMethods.cs
- Marshal.cs
- SqlXmlStorage.cs
- ObjectDisposedException.cs
- ControlOperationInvoker.cs
- QueryableDataSourceEditData.cs
- XmlDataLoader.cs
- AccessViolationException.cs
- DashStyles.cs
- ProtocolsConfigurationHandler.cs
- EntityDataReader.cs
- XmlSerializerFactory.cs
- SpellerError.cs
- AppDomainUnloadedException.cs
- SuppressMergeCheckAttribute.cs
- NotifyParentPropertyAttribute.cs
- WindowsGraphicsWrapper.cs
- Slider.cs
- ActivationArguments.cs
- SemaphoreFullException.cs
- ScalarConstant.cs
- IdnElement.cs
- TrackBar.cs
- InputMethodStateChangeEventArgs.cs
- VerificationAttribute.cs
- datacache.cs
- LineServices.cs
- DeferredSelectedIndexReference.cs
- WorkflowInstanceQuery.cs
- InheritedPropertyChangedEventArgs.cs
- SmtpCommands.cs
- WebBrowserEvent.cs
- TextBox.cs
- ToolStripItemEventArgs.cs
- TextServicesCompartment.cs
- IISUnsafeMethods.cs
- ProtocolsInstallComponent.cs
- PartitionedStreamMerger.cs
- ToolStripDropDownClosedEventArgs.cs
- OrderedDictionary.cs
- QueryStringConverter.cs
- HttpChannelBindingToken.cs
- ArrayWithOffset.cs
- ManagedIStream.cs
- ContractHandle.cs
- CompilerWrapper.cs
- NativeObjectSecurity.cs
- Annotation.cs
- TypeUtil.cs
- AspCompat.cs
- ConstructorBuilder.cs
- XmlMemberMapping.cs
- IChannel.cs
- Visitors.cs
- XmlSchemaGroup.cs
- BrowserCapabilitiesFactoryBase.cs
- TablePattern.cs
- ServicePoint.cs
- ListItemCollection.cs
- TableLayoutCellPaintEventArgs.cs
- PermissionToken.cs
- MouseDevice.cs
- ImageSourceValueSerializer.cs
- PaginationProgressEventArgs.cs
- HandlerFactoryCache.cs
- SystemIPv6InterfaceProperties.cs
- XomlCompilerResults.cs
- X509ChainElement.cs
- ALinqExpressionVisitor.cs
- cache.cs
- MediaElement.cs
- DataTableNewRowEvent.cs
- RandomNumberGenerator.cs
- HttpListener.cs
- StrongNameKeyPair.cs
- SecurityPermission.cs
- GlyphInfoList.cs
- SqlUnionizer.cs
- CollectionsUtil.cs
- ReadOnlyDictionary.cs
- LocalBuilder.cs
- UnsafeNativeMethods.cs
- TreeNodeCollection.cs
- DetailsViewPagerRow.cs
- XamlWriter.cs
- _SingleItemRequestCache.cs
- BinHexEncoder.cs
- GeneralTransform3DTo2DTo3D.cs
- BindingContext.cs
- CalendarTable.cs
- XXXOnTypeBuilderInstantiation.cs
- ItemsPanelTemplate.cs
- AttributeQuery.cs
- HttpStreamMessage.cs