Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FixedSchema.cs
- UIPropertyMetadata.cs
- ICollection.cs
- BitmapScalingModeValidation.cs
- DomNameTable.cs
- KeyEventArgs.cs
- InvokeGenerator.cs
- TryExpression.cs
- TextElementEnumerator.cs
- PropertyTab.cs
- SchemaObjectWriter.cs
- AddInIpcChannel.cs
- EventMappingSettingsCollection.cs
- TextParagraphView.cs
- SessionStateContainer.cs
- X509Utils.cs
- TransactionChannelFaultConverter.cs
- QueryResult.cs
- ExclusiveNamedPipeTransportManager.cs
- ListDictionaryInternal.cs
- DataGridViewImageColumn.cs
- Parameter.cs
- ListViewDataItem.cs
- DataGridBoolColumn.cs
- Point3D.cs
- HtmlString.cs
- NotifyInputEventArgs.cs
- FocusChangedEventArgs.cs
- CompositeActivityCodeGenerator.cs
- AddInSegmentDirectoryNotFoundException.cs
- StatusStrip.cs
- WebControl.cs
- StringPropertyBuilder.cs
- SizeConverter.cs
- ZipIOModeEnforcingStream.cs
- XsdValidatingReader.cs
- WorkflowViewManager.cs
- SocketAddress.cs
- WindowInteractionStateTracker.cs
- AdapterDictionary.cs
- Polygon.cs
- ChannelSettingsElement.cs
- XmlAnyElementAttributes.cs
- CorrelationKeyCalculator.cs
- ComEventsMethod.cs
- WrapPanel.cs
- ContentPlaceHolder.cs
- UnsettableComboBox.cs
- SizeAnimationUsingKeyFrames.cs
- XmlAnyElementAttribute.cs
- CheckBox.cs
- PrintDialogException.cs
- ToolZone.cs
- FileStream.cs
- StdRegProviderWrapper.cs
- ToolStripRenderer.cs
- InstanceKey.cs
- _NegoState.cs
- LineGeometry.cs
- Rect.cs
- VirtualPathUtility.cs
- MergeExecutor.cs
- ServiceChannelManager.cs
- Message.cs
- RepeatButton.cs
- BitmapData.cs
- DataGridCell.cs
- SizeConverter.cs
- CurrencyManager.cs
- PeerInvitationResponse.cs
- Italic.cs
- Lock.cs
- AncestorChangedEventArgs.cs
- SynchronizedInputPattern.cs
- EventNotify.cs
- ServicePointManagerElement.cs
- DebugView.cs
- WindowsNonControl.cs
- RuleProcessor.cs
- HtmlInputFile.cs
- X509UI.cs
- NeutralResourcesLanguageAttribute.cs
- GeneralTransformGroup.cs
- KernelTypeValidation.cs
- WindowsAuthenticationModule.cs
- ProfilePropertyNameValidator.cs
- WindowsListViewSubItem.cs
- ByteStack.cs
- XmlName.cs
- QilTypeChecker.cs
- ObjectHelper.cs
- ErrorHandlerModule.cs
- COM2IDispatchConverter.cs
- TypeInitializationException.cs
- RtType.cs
- BitmapEffect.cs
- FileDialogCustomPlaces.cs
- UInt16.cs
- RequestCache.cs
- FontEmbeddingManager.cs