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
- WorkflowCreationContext.cs
- PersistenceException.cs
- SqlCaseSimplifier.cs
- SendAgentStatusRequest.cs
- CodeGenerationManager.cs
- AutomationAttributeInfo.cs
- ManifestBasedResourceGroveler.cs
- CheckableControlBaseAdapter.cs
- QueryRewriter.cs
- RichTextBox.cs
- SqlTypesSchemaImporter.cs
- ParallelQuery.cs
- WsatAdminException.cs
- Enum.cs
- Rectangle.cs
- DateTimeSerializationSection.cs
- ParameterExpression.cs
- cookiecontainer.cs
- DataGridTable.cs
- RightNameExpirationInfoPair.cs
- HttpListenerContext.cs
- ModuleElement.cs
- HostVisual.cs
- CacheMode.cs
- MetadataCacheItem.cs
- ThreadStateException.cs
- WindowsPen.cs
- TextTreeNode.cs
- SyntaxCheck.cs
- CacheVirtualItemsEvent.cs
- EnumBuilder.cs
- Zone.cs
- BrowsableAttribute.cs
- Vector3DConverter.cs
- TreeNodeStyle.cs
- TableParaClient.cs
- BinaryNode.cs
- GenericPrincipal.cs
- SystemColors.cs
- PathFigureCollection.cs
- ResolveCriteriaCD1.cs
- ConstraintEnumerator.cs
- SocketElement.cs
- Context.cs
- CommandEventArgs.cs
- _FixedSizeReader.cs
- RelatedView.cs
- AssociationSet.cs
- DataGridViewCellMouseEventArgs.cs
- ImageDrawing.cs
- AliasGenerator.cs
- ScaleTransform.cs
- PDBReader.cs
- ObjectListCommandCollection.cs
- SafeCertificateStore.cs
- Image.cs
- ResourceManager.cs
- StrokeNodeOperations2.cs
- XamlBrushSerializer.cs
- EasingFunctionBase.cs
- Convert.cs
- FileStream.cs
- PropertyGridCommands.cs
- SqlDataSourceRefreshSchemaForm.cs
- TemplateControlCodeDomTreeGenerator.cs
- UnsafeNativeMethods.cs
- AttributeUsageAttribute.cs
- Decoder.cs
- DefinitionBase.cs
- StreamResourceInfo.cs
- ListViewCancelEventArgs.cs
- XmlSchemaImport.cs
- CodeAssignStatement.cs
- DesignerSerializationVisibilityAttribute.cs
- TcpStreams.cs
- TraceFilter.cs
- WebPageTraceListener.cs
- EventsTab.cs
- FileDialog_Vista.cs
- codemethodreferenceexpression.cs
- ExceptionRoutedEventArgs.cs
- Page.cs
- UInt32Storage.cs
- KeyGestureValueSerializer.cs
- FacetEnabledSchemaElement.cs
- ErrorsHelper.cs
- PropertiesTab.cs
- DeobfuscatingStream.cs
- PropertySourceInfo.cs
- safesecurityhelperavalon.cs
- TreeView.cs
- TripleDESCryptoServiceProvider.cs
- BasicExpressionVisitor.cs
- GZipDecoder.cs
- FunctionDescription.cs
- GlyphInfoList.cs
- XmlSchemaComplexContent.cs
- ImageMetadata.cs
- ProfileInfo.cs
- DependencyPropertyAttribute.cs