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
- UIElementParaClient.cs
- TextBox.cs
- ProcessModule.cs
- LongTypeConverter.cs
- DesignerValidationSummaryAdapter.cs
- TypeInfo.cs
- ConfigXmlSignificantWhitespace.cs
- DesigntimeLicenseContextSerializer.cs
- CodeChecksumPragma.cs
- FilteredDataSetHelper.cs
- ErasingStroke.cs
- GlyphRunDrawing.cs
- TemplateColumn.cs
- SkewTransform.cs
- SessionEndingCancelEventArgs.cs
- BamlTreeUpdater.cs
- ObjectQuery_EntitySqlExtensions.cs
- TableRow.cs
- SerialPort.cs
- XMLDiffLoader.cs
- WebHttpDispatchOperationSelector.cs
- DispatcherObject.cs
- HashSet.cs
- DiscriminatorMap.cs
- SectionUpdates.cs
- OptimizedTemplateContent.cs
- MutexSecurity.cs
- ExceptionCollection.cs
- HandleCollector.cs
- ellipse.cs
- FileSystemEventArgs.cs
- HeaderedItemsControl.cs
- ArrangedElement.cs
- ConfigurationFileMap.cs
- ByeOperationCD1AsyncResult.cs
- XmlSchemaSimpleTypeList.cs
- CreateUserWizardStep.cs
- Msec.cs
- ResourceProviderFactory.cs
- PathNode.cs
- EncoderFallback.cs
- WorkflowDesignerColors.cs
- SQLMembershipProvider.cs
- BrushMappingModeValidation.cs
- ObjectKeyFrameCollection.cs
- DoubleAnimationBase.cs
- DataGridViewSelectedColumnCollection.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- XamlSerializer.cs
- AssemblyGen.cs
- ViewValidator.cs
- XmlSignatureProperties.cs
- SettingsBase.cs
- DecimalStorage.cs
- BaseCodeDomTreeGenerator.cs
- DLinqDataModelProvider.cs
- Line.cs
- BindingOperations.cs
- ConfigXmlSignificantWhitespace.cs
- EndEvent.cs
- CryptographicAttribute.cs
- TextMessageEncoder.cs
- AppSecurityManager.cs
- BitmapData.cs
- ComplexBindingPropertiesAttribute.cs
- LoadMessageLogger.cs
- StreamingContext.cs
- GroupBox.cs
- ComplexPropertyEntry.cs
- DecoderBestFitFallback.cs
- Figure.cs
- AssemblyFilter.cs
- AdornedElementPlaceholder.cs
- BrushMappingModeValidation.cs
- WebPartVerb.cs
- BuildProvider.cs
- NativeRecognizer.cs
- GPStream.cs
- TargetFrameworkUtil.cs
- DrawingVisualDrawingContext.cs
- _LocalDataStore.cs
- JpegBitmapDecoder.cs
- MenuCommand.cs
- LinqTreeNodeEvaluator.cs
- SQLBytes.cs
- DataGridViewRowCollection.cs
- DataFormats.cs
- EntityClassGenerator.cs
- BoolExpression.cs
- SwitchAttribute.cs
- SmtpLoginAuthenticationModule.cs
- WebPartManager.cs
- SafeNativeMethods.cs
- CqlQuery.cs
- AttributeTable.cs
- ReturnEventArgs.cs
- CommandConverter.cs
- EntityCommandExecutionException.cs
- CodeGen.cs
- InternalConfigConfigurationFactory.cs