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
- CopyNodeSetAction.cs
- AdCreatedEventArgs.cs
- Console.cs
- CellLabel.cs
- Assert.cs
- SqlProfileProvider.cs
- SmtpClient.cs
- ExceptionValidationRule.cs
- SqlCrossApplyToCrossJoin.cs
- PersonalizableAttribute.cs
- SimpleTypesSurrogate.cs
- TypeLoadException.cs
- PreProcessInputEventArgs.cs
- TextTreeUndoUnit.cs
- DesignerOptionService.cs
- Int64Storage.cs
- StylusLogic.cs
- TextSpan.cs
- ConnectionStringSettings.cs
- PropertyGridEditorPart.cs
- VerticalAlignConverter.cs
- PopupRootAutomationPeer.cs
- OdbcDataAdapter.cs
- NativeMethodsCLR.cs
- AutoCompleteStringCollection.cs
- Point4D.cs
- ParamArrayAttribute.cs
- SQLInt32Storage.cs
- IdentityModelStringsVersion1.cs
- FacetEnabledSchemaElement.cs
- Transform3D.cs
- Model3DGroup.cs
- Vector3DAnimation.cs
- XmlFormatWriterGenerator.cs
- MenuItemBinding.cs
- ColorConvertedBitmapExtension.cs
- _ConnectStream.cs
- TreeNode.cs
- BaseProcessProtocolHandler.cs
- CloseCryptoHandleRequest.cs
- DbExpressionRules.cs
- TypedCompletedAsyncResult.cs
- VisualBasicValue.cs
- MouseActionValueSerializer.cs
- BindingContext.cs
- Encoder.cs
- DetailsViewModeEventArgs.cs
- Registry.cs
- ActivityInfo.cs
- WebRequestModulesSection.cs
- FormViewInsertEventArgs.cs
- OutputScopeManager.cs
- TypeEnumerableViewSchema.cs
- DetailsViewInsertEventArgs.cs
- StateWorkerRequest.cs
- FileDataSourceCache.cs
- MaterialCollection.cs
- BindingListCollectionView.cs
- _RequestCacheProtocol.cs
- PreviewPrintController.cs
- FastEncoder.cs
- DataGridCellEditEndingEventArgs.cs
- CompilationLock.cs
- NavigationPropertyEmitter.cs
- WebPartZoneCollection.cs
- DLinqTableProvider.cs
- HashStream.cs
- Win32.cs
- SrgsGrammarCompiler.cs
- DataColumnPropertyDescriptor.cs
- VariableQuery.cs
- FileCodeGroup.cs
- InputLangChangeRequestEvent.cs
- CodeMethodReturnStatement.cs
- UpdateRecord.cs
- _AcceptOverlappedAsyncResult.cs
- ExpressionNormalizer.cs
- EventHandlerService.cs
- SchemaTypeEmitter.cs
- TraceContextEventArgs.cs
- ISAPIWorkerRequest.cs
- SelfIssuedAuthProofToken.cs
- CrossContextChannel.cs
- InvokeBinder.cs
- IDQuery.cs
- DeclaredTypeElement.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- JsonDeserializer.cs
- OleDbSchemaGuid.cs
- MaskDescriptor.cs
- ChannelSinkStacks.cs
- RegexCompilationInfo.cs
- OneWayChannelFactory.cs
- PointAnimationUsingPath.cs
- SourceSwitch.cs
- CngProvider.cs
- Configuration.cs
- DynamicFilterExpression.cs
- IgnoreDataMemberAttribute.cs
- BitmapSource.cs