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
- GeometryModel3D.cs
- CompilationSection.cs
- KoreanCalendar.cs
- DataReceivedEventArgs.cs
- XsdDuration.cs
- SqlStream.cs
- StorageRoot.cs
- UnsafeNativeMethods.cs
- EventLogEntry.cs
- HtmlString.cs
- LocatorBase.cs
- SqlError.cs
- ContextStack.cs
- XmlSerializer.cs
- KeyInfo.cs
- CompilerCollection.cs
- ViewPort3D.cs
- CodeEventReferenceExpression.cs
- XmlSchemaSequence.cs
- fixedPageContentExtractor.cs
- QilDataSource.cs
- RowTypePropertyElement.cs
- ZipIOCentralDirectoryFileHeader.cs
- SerializationAttributes.cs
- FileSecurity.cs
- XmlQueryOutput.cs
- EmptyReadOnlyDictionaryInternal.cs
- OptimalTextSource.cs
- ProfileGroupSettingsCollection.cs
- AspNetHostingPermission.cs
- ToolStripContentPanel.cs
- HttpListenerResponse.cs
- XmlComplianceUtil.cs
- TrackingMemoryStream.cs
- TextSimpleMarkerProperties.cs
- Helper.cs
- ChannelDispatcherCollection.cs
- TimeSpanOrInfiniteValidator.cs
- ECDiffieHellmanCngPublicKey.cs
- CodeTryCatchFinallyStatement.cs
- querybuilder.cs
- BitSet.cs
- Activator.cs
- ErrorEventArgs.cs
- LocalClientSecuritySettingsElement.cs
- TypeConverter.cs
- MouseOverProperty.cs
- WaitHandle.cs
- FileDialogCustomPlace.cs
- _ConnectOverlappedAsyncResult.cs
- AutomationTextAttribute.cs
- HtmlInputButton.cs
- UniqueIdentifierService.cs
- ZeroOpNode.cs
- EncoderFallback.cs
- Comparer.cs
- Trace.cs
- XmlParser.cs
- RegisterResponseInfo.cs
- WebEventCodes.cs
- NetNamedPipeSecurityMode.cs
- ContentPresenter.cs
- WizardPanel.cs
- XmlHelper.cs
- WS2007FederationHttpBindingCollectionElement.cs
- DrawListViewColumnHeaderEventArgs.cs
- DrawingServices.cs
- InvalidTimeZoneException.cs
- DataKeyArray.cs
- EmptyStringExpandableObjectConverter.cs
- HtmlTernaryTree.cs
- ExpressionVisitorHelpers.cs
- HtmlSelect.cs
- EntityWithChangeTrackerStrategy.cs
- OpenFileDialog.cs
- DrawingDrawingContext.cs
- SchemaTableColumn.cs
- HashHelper.cs
- DeclaredTypeValidator.cs
- HttpWriter.cs
- Bitmap.cs
- CommandDesigner.cs
- DriveInfo.cs
- CompilerScopeManager.cs
- CompilerGlobalScopeAttribute.cs
- COAUTHIDENTITY.cs
- SeverityFilter.cs
- WebEvents.cs
- CodeMemberProperty.cs
- Menu.cs
- XmlJsonReader.cs
- IBuiltInEvidence.cs
- IOThreadTimer.cs
- SafeNativeMethods.cs
- DPTypeDescriptorContext.cs
- UnSafeCharBuffer.cs
- Helpers.cs
- ExpressionConverter.cs
- SqlUDTStorage.cs
- TreeNodeCollectionEditor.cs