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
- GraphicsContainer.cs
- RequestResizeEvent.cs
- Selection.cs
- MetaModel.cs
- ProgressBarRenderer.cs
- _DigestClient.cs
- DbMetaDataColumnNames.cs
- ButtonBase.cs
- AccessorTable.cs
- Control.cs
- XmlNotation.cs
- TextMarkerSource.cs
- ElementNotEnabledException.cs
- AttributeData.cs
- LongTypeConverter.cs
- RuntimeConfig.cs
- XsdDuration.cs
- NavigationWindowAutomationPeer.cs
- NetStream.cs
- prompt.cs
- PropertyTabAttribute.cs
- ProcessInfo.cs
- ZipPackage.cs
- KeyManager.cs
- CustomLineCap.cs
- EmptyEnumerable.cs
- DocumentGrid.cs
- CopyEncoder.cs
- ExtensionDataReader.cs
- SchemaAttDef.cs
- KnownTypes.cs
- DrawingServices.cs
- AnimationException.cs
- CheckBox.cs
- ResourceCategoryAttribute.cs
- EDesignUtil.cs
- CompareValidator.cs
- validationstate.cs
- CapacityStreamGeometryContext.cs
- ToolStripItem.cs
- XmlDocumentType.cs
- XmlSchemaSubstitutionGroup.cs
- StylusTip.cs
- tibetanshape.cs
- CategoryNameCollection.cs
- Helper.cs
- SmiGettersStream.cs
- BindingContext.cs
- PartialCachingAttribute.cs
- AutomationPropertyInfo.cs
- Single.cs
- PartialCachingAttribute.cs
- BitmapPalette.cs
- BinaryObjectWriter.cs
- LocalizableAttribute.cs
- TraceHandlerErrorFormatter.cs
- ExpressionEditorSheet.cs
- WebPartUserCapability.cs
- Variable.cs
- DiscoveryViaBehavior.cs
- SchemaElement.cs
- SqlDependencyUtils.cs
- PrinterResolution.cs
- XmlObjectSerializer.cs
- SettingsPropertyValue.cs
- DesignerActionUIService.cs
- ReadOnlyDataSource.cs
- RemoveStoryboard.cs
- SettingsSection.cs
- ExtentJoinTreeNode.cs
- HttpListenerElement.cs
- BoolExpr.cs
- Font.cs
- DataGridViewCell.cs
- DateTimeStorage.cs
- XmlnsCompatibleWithAttribute.cs
- ActiveXHelper.cs
- ItemAutomationPeer.cs
- DataGridViewDataConnection.cs
- GridViewColumn.cs
- DispatcherTimer.cs
- Size3DConverter.cs
- PermissionSetEnumerator.cs
- MarshalDirectiveException.cs
- PropertyMap.cs
- Oid.cs
- CatalogPart.cs
- TimeoutValidationAttribute.cs
- DateTimeStorage.cs
- DataKey.cs
- CommandDevice.cs
- StreamGeometry.cs
- TreeNodeStyleCollection.cs
- LeaseManager.cs
- BindingContext.cs
- MachineKeySection.cs
- PageCatalogPart.cs
- DropSource.cs
- DataTableReader.cs
- TCPListener.cs