Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Runtime / WorkflowDefinitionContext.cs / 1305376 / WorkflowDefinitionContext.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Workflow.Runtime { using System.ComponentModel.Design; using System.Reflection; using System.Runtime; using System.ServiceModel; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; abstract class WorkflowDefinitionContext { WorkflowRuntime workflowRuntime; public abstract string ConfigurationName { get; } public abstract string WorkflowName { get; } internal protected WorkflowRuntime WorkflowRuntime { get { Fx.Assert(this.workflowRuntime != null, "Attempt to call WorkflowRuntime before Register"); return this.workflowRuntime; } } public abstract WorkflowInstance CreateWorkflow(); public abstract WorkflowInstance CreateWorkflow(Guid instanceId); public abstract Activity GetWorkflowDefinition(); internal void Register(WorkflowRuntime workflowRuntime, bool validate) { if (workflowRuntime == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("workflowRuntime"); } this.workflowRuntime = workflowRuntime; OnRegister(); if (!this.workflowRuntime.IsStarted) { this.workflowRuntime.StartRuntime(); } if (validate) { ValidateDefinition(); } } protected static TypeProvider CreateTypeProvider(Activity rootActivity) { TypeProvider typeProvider = new TypeProvider(null); Type companionType = rootActivity.GetType(); typeProvider.SetLocalAssembly(companionType.Assembly); typeProvider.AddAssembly(companionType.Assembly); foreach (AssemblyName assemblyName in companionType.Assembly.GetReferencedAssemblies()) { Assembly referencedAssembly = null; try { referencedAssembly = Assembly.Load(assemblyName); if (referencedAssembly != null) { typeProvider.AddAssembly(referencedAssembly); } } catch (Exception e) { if (Fx.IsFatal(e)) { throw; } } if (referencedAssembly == null && assemblyName.CodeBase != null) { typeProvider.AddAssemblyReference(assemblyName.CodeBase); } } return typeProvider; } protected abstract void OnRegister(); protected abstract void OnValidate(ValidationErrorCollection errors); void ValidateDefinition() { ValidationErrorCollection errors = new ValidationErrorCollection(); Activity rootActivity = GetWorkflowDefinition(); ITypeProvider typeProvider = CreateTypeProvider(rootActivity); ServiceContainer serviceContainer = new ServiceContainer(); serviceContainer.AddService(typeof(ITypeProvider), typeProvider); ValidationManager validationManager = new ValidationManager(serviceContainer); foreach (Validator validator in validationManager.GetValidators(rootActivity.GetType())) { foreach (ValidationError error in validator.Validate(validationManager, rootActivity)) { if (!error.UserData.Contains(typeof(Activity))) { error.UserData[typeof(Activity)] = rootActivity; } errors.Add(error); } } OnValidate(errors); if (errors.HasErrors) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WorkflowValidationFailedException(SR2.WorkflowValidationFailed, errors)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Run.cs
- PagerStyle.cs
- UncommonField.cs
- Enumerable.cs
- TypeForwardedToAttribute.cs
- NamespaceEmitter.cs
- FormsAuthenticationConfiguration.cs
- DataSet.cs
- StorageSetMapping.cs
- DataMisalignedException.cs
- ObjectDataSourceFilteringEventArgs.cs
- XamlReader.cs
- SoapDocumentMethodAttribute.cs
- LocalizationComments.cs
- GeneralTransform3D.cs
- Focus.cs
- JsonWriter.cs
- CompilerInfo.cs
- InputBindingCollection.cs
- mediapermission.cs
- DataServiceContext.cs
- CodeVariableReferenceExpression.cs
- DataGridViewTopLeftHeaderCell.cs
- BindingOperations.cs
- Attachment.cs
- HeaderLabel.cs
- DbgUtil.cs
- OrderByBuilder.cs
- RenderTargetBitmap.cs
- __TransparentProxy.cs
- RestrictedTransactionalPackage.cs
- RadioButtonFlatAdapter.cs
- DataGridViewColumnStateChangedEventArgs.cs
- BitmapSource.cs
- ZipFileInfoCollection.cs
- NamespaceDecl.cs
- DisableDpiAwarenessAttribute.cs
- SafeUserTokenHandle.cs
- RectangleGeometry.cs
- SHA1CryptoServiceProvider.cs
- Interlocked.cs
- XmlSchemaDatatype.cs
- FastEncoder.cs
- PropertyDescriptorComparer.cs
- PersistenceParticipant.cs
- ProfileBuildProvider.cs
- DynamicField.cs
- MergePropertyDescriptor.cs
- ChannelCredentials.cs
- GetMemberBinder.cs
- NativeMethods.cs
- Vector3dCollection.cs
- SqlDeflator.cs
- SmiContextFactory.cs
- TextFormattingConverter.cs
- TextFormatterImp.cs
- PageBuildProvider.cs
- ExpressionBindingCollection.cs
- DataGrid.cs
- VectorValueSerializer.cs
- WindowsIdentity.cs
- IArgumentProvider.cs
- MimeReturn.cs
- RegistryConfigurationProvider.cs
- EnumerationRangeValidationUtil.cs
- Hyperlink.cs
- RangeValueProviderWrapper.cs
- UnionCodeGroup.cs
- InlinedAggregationOperatorEnumerator.cs
- ThemeDirectoryCompiler.cs
- SqlUserDefinedAggregateAttribute.cs
- IpcChannelHelper.cs
- XamlParser.cs
- DefaultExpression.cs
- TrustSection.cs
- X509KeyIdentifierClauseType.cs
- CatalogZone.cs
- Int32CollectionConverter.cs
- Renderer.cs
- processwaithandle.cs
- BaseParser.cs
- _SSPIWrapper.cs
- PanelStyle.cs
- DataGridHelper.cs
- ReferencedType.cs
- GridViewPageEventArgs.cs
- PagePropertiesChangingEventArgs.cs
- ExchangeUtilities.cs
- ReferencedCollectionType.cs
- WebUtility.cs
- WebPartHeaderCloseVerb.cs
- MinimizableAttributeTypeConverter.cs
- XmlSchemaValidator.cs
- DynamicExpression.cs
- Permission.cs
- XmlEncodedRawTextWriter.cs
- Automation.cs
- DBBindings.cs
- DataGridViewCellMouseEventArgs.cs
- MsmqNonTransactedPoisonHandler.cs