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
- SiteMembershipCondition.cs
- HtmlInputHidden.cs
- OdbcPermission.cs
- XmlDocumentFieldSchema.cs
- InheritanceAttribute.cs
- DataGridViewTextBoxEditingControl.cs
- DBConnection.cs
- DataTransferEventArgs.cs
- WindowsSpinner.cs
- KeyValueInternalCollection.cs
- HtmlSelect.cs
- MetaModel.cs
- ReadOnlyDataSource.cs
- SubstitutionList.cs
- ButtonBase.cs
- ImageConverter.cs
- CorrelationTokenInvalidatedHandler.cs
- SponsorHelper.cs
- TriggerAction.cs
- RemotingServices.cs
- HelpKeywordAttribute.cs
- KeyBinding.cs
- TemplateModeChangedEventArgs.cs
- IndexedString.cs
- TrackingStringDictionary.cs
- DataTemplate.cs
- WindowsUpDown.cs
- dataSvcMapFileLoader.cs
- ServiceManagerHandle.cs
- BitArray.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- CornerRadius.cs
- OutputCacheEntry.cs
- ProgressBarRenderer.cs
- OptionUsage.cs
- CriticalExceptions.cs
- ParseNumbers.cs
- InkCanvasSelection.cs
- SessionEndedEventArgs.cs
- ClosureBinding.cs
- CategoryGridEntry.cs
- DiagnosticsConfiguration.cs
- CodeLinePragma.cs
- PowerEase.cs
- PageContentAsyncResult.cs
- CodeSnippetExpression.cs
- GradientBrush.cs
- UIPropertyMetadata.cs
- Model3D.cs
- ModifyActivitiesPropertyDescriptor.cs
- DataKeyArray.cs
- FlowDocumentPaginator.cs
- XmlEntity.cs
- GcHandle.cs
- _AuthenticationState.cs
- DesignTimeData.cs
- ServiceManager.cs
- ToolZone.cs
- DrawListViewColumnHeaderEventArgs.cs
- CodeNamespace.cs
- Transform3D.cs
- SBCSCodePageEncoding.cs
- WebPart.cs
- BitmapDownload.cs
- AssemblyNameProxy.cs
- ScrollItemProviderWrapper.cs
- OracleFactory.cs
- X509PeerCertificateAuthentication.cs
- SqlReorderer.cs
- path.cs
- SqlGatherProducedAliases.cs
- SqlDataSourceCache.cs
- UnsafeNativeMethods.cs
- HandlerMappingMemo.cs
- CapabilitiesRule.cs
- DataContext.cs
- LookupNode.cs
- URLAttribute.cs
- SqlException.cs
- ZipFileInfo.cs
- TableItemProviderWrapper.cs
- ServiceDebugElement.cs
- ProjectionPlanCompiler.cs
- XmlILTrace.cs
- DataContractSerializer.cs
- RuleAction.cs
- WhitespaceRuleReader.cs
- Cursor.cs
- MsmqInputSessionChannelListener.cs
- HtmlInputRadioButton.cs
- ListView.cs
- MDIControlStrip.cs
- MILUtilities.cs
- DatePickerDateValidationErrorEventArgs.cs
- PathTooLongException.cs
- HostSecurityManager.cs
- linebase.cs
- AdjustableArrowCap.cs
- EdmSchemaError.cs
- PointHitTestParameters.cs