Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / DefaultWorkflowLoaderService.cs / 1305376 / DefaultWorkflowLoaderService.cs
#region Imports using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Text; using System.IO; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.ComponentModel.Design; using System.Workflow.Runtime; #endregion namespace System.Workflow.Runtime.Hosting { public class DefaultWorkflowLoaderService : WorkflowLoaderService { protected internal override Activity CreateInstance(Type workflowType) { if (workflowType == null) throw new ArgumentNullException("workflowType"); if (!typeof(Activity).IsAssignableFrom(workflowType)) throw new ArgumentException(ExecutionStringManager.TypeMustImplementRootActivity); if (workflowType.GetConstructor(System.Type.EmptyTypes) == null) throw new ArgumentException(ExecutionStringManager.TypeMustHavePublicDefaultConstructor); return Activator.CreateInstance(workflowType) as Activity; } // This function will create a new root activity definition tree by deserializing the xoml and the rules file. protected internal override Activity CreateInstance(XmlReader workflowDefinitionReader, XmlReader rulesReader) { if (workflowDefinitionReader == null) throw new ArgumentNullException("workflowDefinitionReader"); Activity root = null; ValidationErrorCollection errors = new ValidationErrorCollection(); ServiceContainer serviceContainer = new ServiceContainer(); ITypeProvider typeProvider = this.Runtime.GetService(); if (typeProvider != null) serviceContainer.AddService(typeof(ITypeProvider), typeProvider); DesignerSerializationManager manager = new DesignerSerializationManager(serviceContainer); try { using (manager.CreateSession()) { WorkflowMarkupSerializationManager xomlSerializationManager = new WorkflowMarkupSerializationManager(manager); root = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, workflowDefinitionReader) as Activity; if (root != null && rulesReader != null) { object rules = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, rulesReader); root.SetValue(ConditionTypeConverter.DeclarativeConditionDynamicProp, rules); } foreach (object error in manager.Errors) { if (error is WorkflowMarkupSerializationException) errors.Add(new ValidationError(((WorkflowMarkupSerializationException)error).Message, ErrorNumbers.Error_SerializationError)); else errors.Add(new ValidationError(error.ToString(), ErrorNumbers.Error_SerializationError)); } } } catch (Exception e) { errors.Add(new ValidationError(e.Message, ErrorNumbers.Error_SerializationError)); } if (errors.HasErrors) throw new WorkflowValidationFailedException(ExecutionStringManager.WorkflowValidationFailure, errors); return root; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. #region Imports using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Text; using System.IO; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.ComponentModel.Design; using System.Workflow.Runtime; #endregion namespace System.Workflow.Runtime.Hosting { public class DefaultWorkflowLoaderService : WorkflowLoaderService { protected internal override Activity CreateInstance(Type workflowType) { if (workflowType == null) throw new ArgumentNullException("workflowType"); if (!typeof(Activity).IsAssignableFrom(workflowType)) throw new ArgumentException(ExecutionStringManager.TypeMustImplementRootActivity); if (workflowType.GetConstructor(System.Type.EmptyTypes) == null) throw new ArgumentException(ExecutionStringManager.TypeMustHavePublicDefaultConstructor); return Activator.CreateInstance(workflowType) as Activity; } // This function will create a new root activity definition tree by deserializing the xoml and the rules file. protected internal override Activity CreateInstance(XmlReader workflowDefinitionReader, XmlReader rulesReader) { if (workflowDefinitionReader == null) throw new ArgumentNullException("workflowDefinitionReader"); Activity root = null; ValidationErrorCollection errors = new ValidationErrorCollection(); ServiceContainer serviceContainer = new ServiceContainer(); ITypeProvider typeProvider = this.Runtime.GetService (); if (typeProvider != null) serviceContainer.AddService(typeof(ITypeProvider), typeProvider); DesignerSerializationManager manager = new DesignerSerializationManager(serviceContainer); try { using (manager.CreateSession()) { WorkflowMarkupSerializationManager xomlSerializationManager = new WorkflowMarkupSerializationManager(manager); root = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, workflowDefinitionReader) as Activity; if (root != null && rulesReader != null) { object rules = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, rulesReader); root.SetValue(ConditionTypeConverter.DeclarativeConditionDynamicProp, rules); } foreach (object error in manager.Errors) { if (error is WorkflowMarkupSerializationException) errors.Add(new ValidationError(((WorkflowMarkupSerializationException)error).Message, ErrorNumbers.Error_SerializationError)); else errors.Add(new ValidationError(error.ToString(), ErrorNumbers.Error_SerializationError)); } } } catch (Exception e) { errors.Add(new ValidationError(e.Message, ErrorNumbers.Error_SerializationError)); } if (errors.HasErrors) throw new WorkflowValidationFailedException(ExecutionStringManager.WorkflowValidationFailure, errors); return root; } } } // 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
- HostProtectionPermission.cs
- DrawingVisualDrawingContext.cs
- XamlInt32CollectionSerializer.cs
- ReadOnlyDataSourceView.cs
- MutexSecurity.cs
- FixedPageProcessor.cs
- AccessDataSourceView.cs
- BuildResultCache.cs
- XmlNode.cs
- AnnotationResource.cs
- errorpatternmatcher.cs
- ITextView.cs
- CFGGrammar.cs
- XomlCompiler.cs
- MimeFormatter.cs
- VerticalAlignConverter.cs
- Thread.cs
- MenuItemBindingCollection.cs
- Model3D.cs
- AsymmetricSignatureDeformatter.cs
- AsymmetricKeyExchangeFormatter.cs
- Property.cs
- AjaxFrameworkAssemblyAttribute.cs
- QilFactory.cs
- GradientStop.cs
- AnnotationResourceChangedEventArgs.cs
- TitleStyle.cs
- selecteditemcollection.cs
- StaticTextPointer.cs
- TransformProviderWrapper.cs
- WindowsTooltip.cs
- ValidatorCollection.cs
- BoundPropertyEntry.cs
- ComponentChangingEvent.cs
- SharedStatics.cs
- TypedDatasetGenerator.cs
- FillBehavior.cs
- Barrier.cs
- XmlReaderSettings.cs
- XmlMemberMapping.cs
- EmptyQuery.cs
- EmptyReadOnlyDictionaryInternal.cs
- BrowsableAttribute.cs
- BuildTopDownAttribute.cs
- FixedFlowMap.cs
- LoginView.cs
- ButtonChrome.cs
- CapabilitiesPattern.cs
- ZipIOBlockManager.cs
- ContractInstanceProvider.cs
- ViewLoader.cs
- UseLicense.cs
- XamlUtilities.cs
- TargetControlTypeAttribute.cs
- XmlSchemaAppInfo.cs
- AtlasWeb.Designer.cs
- Parser.cs
- PackageFilter.cs
- DeferredSelectedIndexReference.cs
- CharConverter.cs
- ParagraphResult.cs
- AutoCompleteStringCollection.cs
- FilterElement.cs
- ArrayMergeHelper.cs
- MultipleViewProviderWrapper.cs
- HttpPostProtocolImporter.cs
- ArrayTypeMismatchException.cs
- CompressedStack.cs
- Codec.cs
- ConfigurationPropertyAttribute.cs
- OperatingSystemVersionCheck.cs
- VerticalAlignConverter.cs
- ForEachAction.cs
- RoutedEventConverter.cs
- EntityViewGenerationConstants.cs
- CmsInterop.cs
- ToolStripComboBox.cs
- Encoding.cs
- ByeMessageApril2005.cs
- Vector3D.cs
- LongTypeConverter.cs
- LabelInfo.cs
- Marshal.cs
- Viewport3DVisual.cs
- Properties.cs
- XNameTypeConverter.cs
- Soap12FormatExtensions.cs
- ToolStripItemRenderEventArgs.cs
- RangeValueProviderWrapper.cs
- ExpressionList.cs
- ValueSerializer.cs
- KernelTypeValidation.cs
- CodeAttributeDeclaration.cs
- ObjectQueryState.cs
- GacUtil.cs
- SafeSystemMetrics.cs
- Serializer.cs
- LoginName.cs
- XmlAtomicValue.cs
- SqlPersonalizationProvider.cs