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
- CollectionViewGroup.cs
- PersianCalendar.cs
- ProgramPublisher.cs
- CheckBox.cs
- TemplateBindingExpression.cs
- ExpressionEditor.cs
- KoreanCalendar.cs
- OdbcCommand.cs
- OracleBoolean.cs
- Drawing.cs
- DirectoryObjectSecurity.cs
- PropertyOverridesTypeEditor.cs
- Lock.cs
- WebFormDesignerActionService.cs
- Decorator.cs
- EntryWrittenEventArgs.cs
- DebugView.cs
- UserNameSecurityTokenAuthenticator.cs
- TextServicesContext.cs
- ImageConverter.cs
- DirectoryObjectSecurity.cs
- RuleInfoComparer.cs
- Pointer.cs
- updatecommandorderer.cs
- Shared.cs
- DrawingBrush.cs
- CodeLabeledStatement.cs
- UIElementPropertyUndoUnit.cs
- TextElement.cs
- CommandValueSerializer.cs
- ZipPackage.cs
- PictureBox.cs
- SrgsElementFactoryCompiler.cs
- SolidColorBrush.cs
- ResourceCategoryAttribute.cs
- Wizard.cs
- ManifestSignedXml.cs
- SiteMapProvider.cs
- EdmPropertyAttribute.cs
- MimeParameterWriter.cs
- SkewTransform.cs
- Funcletizer.cs
- GeometryDrawing.cs
- SqlAliaser.cs
- mil_sdk_version.cs
- LayoutEvent.cs
- AnimationTimeline.cs
- DeploymentSection.cs
- ObjectQuery.cs
- CoTaskMemHandle.cs
- Point3D.cs
- InvalidOleVariantTypeException.cs
- DynamicDataManager.cs
- WeakHashtable.cs
- StickyNoteContentControl.cs
- IOThreadScheduler.cs
- SQLUtility.cs
- UnsafeNativeMethods.cs
- DataServiceException.cs
- DataContractSerializerOperationBehavior.cs
- MsmqTransportReceiveParameters.cs
- __Error.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- HotSpot.cs
- CodeRemoveEventStatement.cs
- XmlSchemaSequence.cs
- mediaclock.cs
- DoWorkEventArgs.cs
- CollectionType.cs
- EncryptedPackageFilter.cs
- SqlCacheDependencyDatabase.cs
- TextBoxBaseDesigner.cs
- ColorKeyFrameCollection.cs
- DocumentSchemaValidator.cs
- Visual3DCollection.cs
- DiagnosticsConfigurationHandler.cs
- PageAsyncTaskManager.cs
- RequestTimeoutManager.cs
- ProcessModelSection.cs
- BypassElementCollection.cs
- AnnotationHighlightLayer.cs
- TripleDES.cs
- XmlChildNodes.cs
- CodeTypeReferenceExpression.cs
- GridItemProviderWrapper.cs
- CodeMemberField.cs
- _ConnectionGroup.cs
- SystemIPAddressInformation.cs
- HebrewNumber.cs
- EntityDataSourceColumn.cs
- XmlQueryOutput.cs
- DataGridViewCellPaintingEventArgs.cs
- FixedHighlight.cs
- StatusBarItem.cs
- SqlAliasesReferenced.cs
- DesignerSerializationOptionsAttribute.cs
- DiagnosticsConfigurationHandler.cs
- EditorZone.cs
- HttpHandlerActionCollection.cs
- HttpHandlerAction.cs