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
- hwndwrapper.cs
- ConfigurationException.cs
- RequestCacheEntry.cs
- AsnEncodedData.cs
- OpacityConverter.cs
- PngBitmapEncoder.cs
- HtmlButton.cs
- _ConnectionGroup.cs
- OleDbPermission.cs
- FileEnumerator.cs
- SymDocumentType.cs
- OleDbPermission.cs
- ControlIdConverter.cs
- MenuAutomationPeer.cs
- Encoder.cs
- HttpAsyncResult.cs
- MessageQueueAccessControlEntry.cs
- TypeBuilderInstantiation.cs
- TdsParserSafeHandles.cs
- SecurityTokenResolver.cs
- NameValuePair.cs
- LogSwitch.cs
- SaveCardRequest.cs
- UniqueEventHelper.cs
- ServerIdentity.cs
- PropertyPathConverter.cs
- WindowsSolidBrush.cs
- ServiceInstanceProvider.cs
- KeyedQueue.cs
- ToolStrip.cs
- DesigntimeLicenseContext.cs
- GradientBrush.cs
- InputBuffer.cs
- ItemCollection.cs
- WorkflowMarkupSerializationProvider.cs
- LinearGradientBrush.cs
- Int16Converter.cs
- QuadraticEase.cs
- Sql8ExpressionRewriter.cs
- oledbconnectionstring.cs
- ValidatorUtils.cs
- UniformGrid.cs
- CryptoKeySecurity.cs
- FrameworkReadOnlyPropertyMetadata.cs
- CreateUserWizardStep.cs
- ServiceConfigurationTraceRecord.cs
- XPathArrayIterator.cs
- DictionaryCustomTypeDescriptor.cs
- HttpChannelFactory.cs
- ZipIOLocalFileDataDescriptor.cs
- URLAttribute.cs
- TemplateColumn.cs
- CounterSample.cs
- DataGridAutoFormat.cs
- CreateUserWizardStep.cs
- ObjectDataSourceEventArgs.cs
- PrintDialogDesigner.cs
- CommonGetThemePartSize.cs
- HttpWebResponse.cs
- EntryPointNotFoundException.cs
- ReadOnlyHierarchicalDataSource.cs
- HttpBindingExtension.cs
- QueryResponse.cs
- ProfessionalColors.cs
- CmsUtils.cs
- TableLayoutSettings.cs
- DesignerCommandAdapter.cs
- ObjectListFieldCollection.cs
- TreeBuilderXamlTranslator.cs
- WebPartAddingEventArgs.cs
- XPathNavigatorKeyComparer.cs
- Decoder.cs
- COM2TypeInfoProcessor.cs
- XmlTextReaderImplHelpers.cs
- EntityDataSourceWrapper.cs
- DBSqlParserTableCollection.cs
- RealProxy.cs
- ExtractedStateEntry.cs
- RightsManagementPermission.cs
- Pts.cs
- OrderToken.cs
- CodeCommentStatement.cs
- WebPartEditorCancelVerb.cs
- UiaCoreTypesApi.cs
- UniqueConstraint.cs
- CodeCompiler.cs
- FirstMatchCodeGroup.cs
- dataSvcMapFileLoader.cs
- PeerMaintainer.cs
- CheckedListBox.cs
- DeferredElementTreeState.cs
- QueryExpression.cs
- PageCatalogPart.cs
- CodeAttributeDeclarationCollection.cs
- CacheOutputQuery.cs
- ControlUtil.cs
- GroupQuery.cs
- ConfigXmlElement.cs
- ClientRolePrincipal.cs
- mongolianshape.cs