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
- ListBoxItemAutomationPeer.cs
- XmlSortKeyAccumulator.cs
- EventArgs.cs
- InputScopeNameConverter.cs
- StoreItemCollection.Loader.cs
- DbConnectionPool.cs
- CollectionDataContract.cs
- SharedStatics.cs
- CapabilitiesAssignment.cs
- WindowsListView.cs
- PolyBezierSegmentFigureLogic.cs
- WebPartManagerInternals.cs
- SystemPens.cs
- SchemaImporter.cs
- Stylus.cs
- XmlArrayItemAttribute.cs
- Privilege.cs
- InvalidOperationException.cs
- ProtectedProviderSettings.cs
- TreeViewEvent.cs
- BaseHashHelper.cs
- PeerCollaborationPermission.cs
- AlternateViewCollection.cs
- InvokeDelegate.cs
- StatusStrip.cs
- KeyedCollection.cs
- StreamUpdate.cs
- IDataContractSurrogate.cs
- TargetInvocationException.cs
- EnumType.cs
- MulticastIPAddressInformationCollection.cs
- MemberHolder.cs
- ExpressionVisitor.cs
- XPathBinder.cs
- AttachedAnnotation.cs
- RuleSettingsCollection.cs
- CompositeDataBoundControl.cs
- Transform3D.cs
- BoundColumn.cs
- MessageAction.cs
- EnumType.cs
- DetailsView.cs
- QuaternionRotation3D.cs
- TextContainerChangeEventArgs.cs
- GeometryValueSerializer.cs
- httpapplicationstate.cs
- TransformerConfigurationWizardBase.cs
- HttpRequestCacheValidator.cs
- Stackframe.cs
- PolyBezierSegmentFigureLogic.cs
- SoapSchemaMember.cs
- InvocationExpression.cs
- CollectionTypeElement.cs
- Delegate.cs
- HtmlTableRow.cs
- WindowsSidIdentity.cs
- OleDbRowUpdatedEvent.cs
- PrintPreviewDialog.cs
- InternalUserCancelledException.cs
- BuildResultCache.cs
- WrapPanel.cs
- Permission.cs
- HttpCacheVary.cs
- NativeRightsManagementAPIsStructures.cs
- CacheChildrenQuery.cs
- StrongNameKeyPair.cs
- RuntimeConfig.cs
- DesignerOptionService.cs
- UIElement3DAutomationPeer.cs
- XPathBinder.cs
- StartUpEventArgs.cs
- CodeComment.cs
- FixedSOMFixedBlock.cs
- EnumMember.cs
- ImageField.cs
- MiniModule.cs
- XmlImplementation.cs
- PriorityRange.cs
- DebuggerService.cs
- EventLogPermissionEntryCollection.cs
- CodeGeneratorAttribute.cs
- MultitargetUtil.cs
- WebConfigurationManager.cs
- WindowsImpersonationContext.cs
- GridViewAutomationPeer.cs
- CompilerLocalReference.cs
- ImageListDesigner.cs
- DataGridViewTextBoxColumn.cs
- VisualStyleInformation.cs
- SortExpressionBuilder.cs
- GlobalizationAssembly.cs
- ClrPerspective.cs
- XPathMultyIterator.cs
- SafeMarshalContext.cs
- ToolStripItemEventArgs.cs
- StructuralType.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- HotSpotCollectionEditor.cs
- FullTrustAssembly.cs