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
- KerberosSecurityTokenAuthenticator.cs
- Table.cs
- LineGeometry.cs
- BindingCollection.cs
- ExecutionEngineException.cs
- GraphicsPathIterator.cs
- ConnectionStringEditor.cs
- DataTemplateSelector.cs
- XmlSiteMapProvider.cs
- CssStyleCollection.cs
- SolidBrush.cs
- KnownTypeAttribute.cs
- ProfileBuildProvider.cs
- ContentDisposition.cs
- ColumnTypeConverter.cs
- CookieProtection.cs
- HitTestFilterBehavior.cs
- ITreeGenerator.cs
- GeneralTransform2DTo3D.cs
- TypeReference.cs
- SoapFault.cs
- diagnosticsswitches.cs
- CachedPathData.cs
- SchemaTableOptionalColumn.cs
- ConnectorSelectionGlyph.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- DataTableExtensions.cs
- Margins.cs
- EntityKeyElement.cs
- Int32CollectionConverter.cs
- HuffCodec.cs
- UIElementParagraph.cs
- Attributes.cs
- MultiTrigger.cs
- MDIWindowDialog.cs
- ClientSettingsStore.cs
- PartialCachingControl.cs
- AdministrationHelpers.cs
- AssociationEndMember.cs
- SynchronizationScope.cs
- BitConverter.cs
- DataContractSerializerOperationFormatter.cs
- DataGridColumnStyleMappingNameEditor.cs
- HttpClientCertificate.cs
- ImageMap.cs
- ItemCheckedEvent.cs
- ObjectCacheHost.cs
- DataGridHeaderBorder.cs
- PrincipalPermissionMode.cs
- TrackingServices.cs
- Thread.cs
- TextDecoration.cs
- WebBaseEventKeyComparer.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- LinqToSqlWrapper.cs
- CompilerGeneratedAttribute.cs
- ConnectionOrientedTransportBindingElement.cs
- Send.cs
- RectangleConverter.cs
- SimplePropertyEntry.cs
- EnterpriseServicesHelper.cs
- System.Data.OracleClient_BID.cs
- DelegatingHeader.cs
- GridViewColumnCollectionChangedEventArgs.cs
- HeaderedItemsControl.cs
- ColorMatrix.cs
- CodeMemberMethod.cs
- ParameterBuilder.cs
- MenuItemCollection.cs
- SqlTopReducer.cs
- InvalidAsynchronousStateException.cs
- MultipleViewProviderWrapper.cs
- LocalizeDesigner.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- CounterSampleCalculator.cs
- HttpCapabilitiesSectionHandler.cs
- PriorityChain.cs
- AmbientProperties.cs
- StrongNameMembershipCondition.cs
- TextTreeTextBlock.cs
- BoolExpression.cs
- QueryOutputWriterV1.cs
- RuleAttributes.cs
- Converter.cs
- WebServiceTypeData.cs
- PageBuildProvider.cs
- PostBackOptions.cs
- SendContent.cs
- ImageIndexEditor.cs
- BoundPropertyEntry.cs
- XhtmlBasicSelectionListAdapter.cs
- Effect.cs
- TypeDependencyAttribute.cs
- SafeArrayRankMismatchException.cs
- HttpDebugHandler.cs
- WinFormsUtils.cs
- SoapAttributeAttribute.cs
- VoiceObjectToken.cs
- ValueType.cs
- EntityDataSourceDataSelectionPanel.cs