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
- SyndicationItem.cs
- SamlAuthorizationDecisionStatement.cs
- ColorIndependentAnimationStorage.cs
- ProcessStartInfo.cs
- validationstate.cs
- TrustLevelCollection.cs
- NativeRightsManagementAPIsStructures.cs
- Stopwatch.cs
- ListViewInsertedEventArgs.cs
- UrlMappingsSection.cs
- DataGridViewCellMouseEventArgs.cs
- XPathBinder.cs
- EdmType.cs
- GlyphInfoList.cs
- COMException.cs
- VirtualDirectoryMappingCollection.cs
- HotCommands.cs
- InlineObject.cs
- BooleanAnimationBase.cs
- XmlSignificantWhitespace.cs
- ColumnHeaderConverter.cs
- SqlTriggerContext.cs
- AxHostDesigner.cs
- IPPacketInformation.cs
- RegionInfo.cs
- CrossSiteScriptingValidation.cs
- CounterSample.cs
- SecurityProtocol.cs
- DelegatedStream.cs
- XmlSchemaImporter.cs
- SafeNativeMethodsCLR.cs
- ConstraintManager.cs
- Translator.cs
- AnnotationComponentManager.cs
- CipherData.cs
- DBCommand.cs
- SymDocumentType.cs
- RequestChannelBinder.cs
- cookieexception.cs
- FormsAuthenticationCredentials.cs
- ToolStripManager.cs
- XmlAnyAttributeAttribute.cs
- _LazyAsyncResult.cs
- MailHeaderInfo.cs
- GridViewColumnHeaderAutomationPeer.cs
- MetadataItem.cs
- FontCacheUtil.cs
- ManipulationCompletedEventArgs.cs
- BlurBitmapEffect.cs
- COM2ExtendedTypeConverter.cs
- IsolatedStoragePermission.cs
- SoapAttributeOverrides.cs
- DataGridViewAdvancedBorderStyle.cs
- SoapExtensionReflector.cs
- WebPartZone.cs
- ClientBuildManager.cs
- ToolStripDropDownClosedEventArgs.cs
- DESCryptoServiceProvider.cs
- BaseCAMarshaler.cs
- ApplicationFileCodeDomTreeGenerator.cs
- WindowsGraphicsCacheManager.cs
- XmlConvert.cs
- LocalFileSettingsProvider.cs
- DriveInfo.cs
- DataBindingCollection.cs
- WebPartDeleteVerb.cs
- Helper.cs
- WCFBuildProvider.cs
- DbProviderFactoriesConfigurationHandler.cs
- MetaModel.cs
- TrackingRecord.cs
- TdsValueSetter.cs
- DiagnosticsConfiguration.cs
- HebrewNumber.cs
- invalidudtexception.cs
- ReceiveCompletedEventArgs.cs
- LocalizabilityAttribute.cs
- NavigationWindow.cs
- MenuItem.cs
- ExtendLockCommand.cs
- XmlQueryOutput.cs
- SessionEndedEventArgs.cs
- UserControlAutomationPeer.cs
- HttpCookieCollection.cs
- MachineKeyConverter.cs
- OdbcConnectionPoolProviderInfo.cs
- HttpClientProtocol.cs
- GridItemProviderWrapper.cs
- MultiBinding.cs
- OciHandle.cs
- TemplatedWizardStep.cs
- BitmapEffectState.cs
- StylusButtonCollection.cs
- ListViewItemSelectionChangedEvent.cs
- TransformerInfo.cs
- ComponentCodeDomSerializer.cs
- DataGridViewCellStyleChangedEventArgs.cs
- ToolboxItemLoader.cs
- ReferencedType.cs
- ParallelDesigner.cs