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
- ECDsa.cs
- ClassicBorderDecorator.cs
- UIntPtr.cs
- HttpHeaderCollection.cs
- SQLUtility.cs
- XamlWrappingReader.cs
- WebRequestModuleElement.cs
- DataTemplateKey.cs
- BitmapEffectCollection.cs
- FieldMetadata.cs
- ArrangedElementCollection.cs
- UpdateProgress.cs
- ModelItemDictionary.cs
- DataTableExtensions.cs
- Point3DCollection.cs
- CardSpaceSelector.cs
- WorkflowMarkupSerializerMapping.cs
- ToolStripSplitStackLayout.cs
- sitestring.cs
- KeyedQueue.cs
- HelpHtmlBuilder.cs
- DivideByZeroException.cs
- OutputCacheModule.cs
- XomlSerializationHelpers.cs
- CheckBoxField.cs
- EventProvider.cs
- coordinatorfactory.cs
- ContentElement.cs
- SpellerInterop.cs
- SafeMILHandle.cs
- CompositionAdorner.cs
- ServiceBehaviorElementCollection.cs
- TextEndOfParagraph.cs
- SqlFunctionAttribute.cs
- GlyphRun.cs
- DataProtection.cs
- Soap.cs
- CaseExpr.cs
- FixedSOMPageElement.cs
- RecommendedAsConfigurableAttribute.cs
- PeerResolver.cs
- Invariant.cs
- CssTextWriter.cs
- SingleStorage.cs
- Win32SafeHandles.cs
- KeySpline.cs
- EditorZone.cs
- SqlUtil.cs
- RemotingException.cs
- SoapRpcMethodAttribute.cs
- ObjectConverter.cs
- dbenumerator.cs
- Bind.cs
- ZoneIdentityPermission.cs
- RemoteWebConfigurationHost.cs
- StringToken.cs
- BitmapEffectrendercontext.cs
- DataBinding.cs
- AssemblyInfo.cs
- SafeEventLogWriteHandle.cs
- CodeSnippetStatement.cs
- FrameworkName.cs
- ButtonBase.cs
- PersonalizationDictionary.cs
- DataGridViewRowConverter.cs
- ConfigurationCollectionAttribute.cs
- CompositeFontFamily.cs
- ImageFormat.cs
- DatatypeImplementation.cs
- VirtualPath.cs
- ListenerElementsCollection.cs
- XmlCDATASection.cs
- ConfigUtil.cs
- BamlTreeMap.cs
- WorkflowOwnershipException.cs
- CellTreeNodeVisitors.cs
- LogicalTreeHelper.cs
- TextEditorThreadLocalStore.cs
- ToolBarPanel.cs
- SelectionItemPatternIdentifiers.cs
- InOutArgument.cs
- FormViewInsertedEventArgs.cs
- SafeLocalAllocation.cs
- assertwrapper.cs
- ErasingStroke.cs
- SqlRowUpdatedEvent.cs
- ToolStripContextMenu.cs
- BaseDataListComponentEditor.cs
- ResXDataNode.cs
- CryptoConfig.cs
- InternalTypeHelper.cs
- FullTextState.cs
- OrderedDictionary.cs
- InheritablePropertyChangeInfo.cs
- NegationPusher.cs
- Effect.cs
- ClickablePoint.cs
- CopyEncoder.cs
- SafeReversePInvokeHandle.cs
- Variable.cs