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
- OptimalTextSource.cs
- SingleResultAttribute.cs
- TableTextElementCollectionInternal.cs
- WebPartManager.cs
- GPPOINTF.cs
- ListViewGroupConverter.cs
- ObjectIDGenerator.cs
- TimeStampChecker.cs
- Win32.cs
- SqlStream.cs
- ComponentChangingEvent.cs
- XmlReaderSettings.cs
- StorageMappingFragment.cs
- InteropAutomationProvider.cs
- InsufficientExecutionStackException.cs
- CompiledIdentityConstraint.cs
- MachineKeySection.cs
- ClosableStream.cs
- GridViewUpdateEventArgs.cs
- ChannelTracker.cs
- InvalidOleVariantTypeException.cs
- CounterCreationDataCollection.cs
- Listbox.cs
- ResourceDisplayNameAttribute.cs
- ElementNotEnabledException.cs
- NamespaceDecl.cs
- TwoPhaseCommit.cs
- CodeCatchClause.cs
- RegexRunnerFactory.cs
- UserMapPath.cs
- FieldToken.cs
- NetCodeGroup.cs
- Binding.cs
- _SslSessionsCache.cs
- ContextBase.cs
- ConnectionManagementElement.cs
- SqlReorderer.cs
- CoTaskMemUnicodeSafeHandle.cs
- QuaternionAnimation.cs
- fixedPageContentExtractor.cs
- ReadOnlyDataSourceView.cs
- ZoneIdentityPermission.cs
- CustomErrorsSectionWrapper.cs
- FactoryGenerator.cs
- KeyboardDevice.cs
- ResolveNameEventArgs.cs
- WindowsToolbarAsMenu.cs
- IsolatedStorageFileStream.cs
- ConditionValidator.cs
- AnnotationMap.cs
- KeyValueSerializer.cs
- ViewgenContext.cs
- FixedSOMSemanticBox.cs
- Matrix3DConverter.cs
- LiteralSubsegment.cs
- NotFiniteNumberException.cs
- UpdateProgress.cs
- unsafeIndexingFilterStream.cs
- DesignTimeDataBinding.cs
- TdsParserHelperClasses.cs
- Cell.cs
- Int32CAMarshaler.cs
- WS2007FederationHttpBinding.cs
- sapiproxy.cs
- SerializationAttributes.cs
- HelpInfo.cs
- _AutoWebProxyScriptEngine.cs
- XmlByteStreamWriter.cs
- ICspAsymmetricAlgorithm.cs
- AttachedPropertyMethodSelector.cs
- _Connection.cs
- UpdateCommandGenerator.cs
- ListViewTableRow.cs
- StrokeCollection2.cs
- MultiSelector.cs
- TableSectionStyle.cs
- RectIndependentAnimationStorage.cs
- InputLanguageSource.cs
- SplashScreen.cs
- Command.cs
- PerfCounters.cs
- XmlUtf8RawTextWriter.cs
- AmbientLight.cs
- DictionaryEntry.cs
- InputProviderSite.cs
- DataProtection.cs
- CharacterMetrics.cs
- ColorContextHelper.cs
- CompilationSection.cs
- ACE.cs
- PrintingPermission.cs
- InstanceCompleteException.cs
- MessageQueue.cs
- ProfileInfo.cs
- KeyedHashAlgorithm.cs
- XPathNavigatorException.cs
- GeneralTransform3D.cs
- SurrogateEncoder.cs
- AttributeEmitter.cs
- XmlC14NWriter.cs