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
- CodeTypeDelegate.cs
- QueryableFilterRepeater.cs
- FileDialog.cs
- WorkflowRuntime.cs
- CharAnimationBase.cs
- MD5CryptoServiceProvider.cs
- NumberAction.cs
- WebRequestModulesSection.cs
- BCryptHashAlgorithm.cs
- Attributes.cs
- FlowDocumentPaginator.cs
- CompositeKey.cs
- PersonalizableTypeEntry.cs
- OdbcDataReader.cs
- RelationshipDetailsCollection.cs
- ResponseStream.cs
- Message.cs
- RoutingBehavior.cs
- WebPartsPersonalizationAuthorization.cs
- versioninfo.cs
- CancelEventArgs.cs
- XmlElementAttribute.cs
- ItemContainerProviderWrapper.cs
- Quaternion.cs
- SystemEvents.cs
- ObjectQuery.cs
- XmlUtil.cs
- UpdateTranslator.cs
- HierarchicalDataBoundControlAdapter.cs
- PopupEventArgs.cs
- DataError.cs
- HwndSubclass.cs
- XmlException.cs
- SafeEventLogWriteHandle.cs
- StringUtil.cs
- HttpRequestBase.cs
- CaseInsensitiveHashCodeProvider.cs
- smtpconnection.cs
- Message.cs
- Timer.cs
- SafeViewOfFileHandle.cs
- IISMapPath.cs
- DbRetry.cs
- PartialTrustHelpers.cs
- CommandField.cs
- EventEntry.cs
- TaskSchedulerException.cs
- MachineKeySection.cs
- EventOpcode.cs
- RenderCapability.cs
- RequestBringIntoViewEventArgs.cs
- Filter.cs
- ObjectQueryState.cs
- InertiaTranslationBehavior.cs
- Camera.cs
- LineProperties.cs
- MenuItemBindingCollection.cs
- DefaultProxySection.cs
- TextEffect.cs
- OSFeature.cs
- JpegBitmapEncoder.cs
- OneOfScalarConst.cs
- AssociationSet.cs
- ZipArchive.cs
- XmlWellformedWriter.cs
- BuildProviderCollection.cs
- ShaperBuffers.cs
- SQLBinary.cs
- ViewManager.cs
- SQLSingleStorage.cs
- CategoryAttribute.cs
- ViewStateModeByIdAttribute.cs
- EntitySetBaseCollection.cs
- TablePattern.cs
- RootAction.cs
- x509utils.cs
- ByteStack.cs
- GraphicsState.cs
- LocalValueEnumerator.cs
- PageAsyncTaskManager.cs
- FileDialogPermission.cs
- ListDictionary.cs
- MenuScrollingVisibilityConverter.cs
- RectIndependentAnimationStorage.cs
- DateTimeSerializationSection.cs
- SqlNodeAnnotations.cs
- RectAnimation.cs
- TablePattern.cs
- WebPartMenuStyle.cs
- AutomationPatternInfo.cs
- InputEventArgs.cs
- URIFormatException.cs
- ConnectionStringsSection.cs
- OnOperation.cs
- cookiecollection.cs
- CompleteWizardStep.cs
- StyleBamlRecordReader.cs
- UnsafeNetInfoNativeMethods.cs
- RSAPKCS1SignatureDeformatter.cs
- PasswordDeriveBytes.cs