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
- BulletedListEventArgs.cs
- panel.cs
- EventSinkActivity.cs
- securitycriticaldataformultiplegetandset.cs
- ToolStripLocationCancelEventArgs.cs
- ResourceReader.cs
- WebExceptionStatus.cs
- NativeMethods.cs
- ContentType.cs
- StateDesigner.TransitionInfo.cs
- Verify.cs
- OptimizedTemplateContentHelper.cs
- DisplayMemberTemplateSelector.cs
- DiscardableAttribute.cs
- PrimitiveXmlSerializers.cs
- QilPatternVisitor.cs
- RoleManagerModule.cs
- SqlConnectionPoolGroupProviderInfo.cs
- DockPattern.cs
- ClassGenerator.cs
- CharEntityEncoderFallback.cs
- UInt32Converter.cs
- Int64KeyFrameCollection.cs
- OleDbStruct.cs
- PluralizationService.cs
- XmlExceptionHelper.cs
- OdbcRowUpdatingEvent.cs
- Base64Decoder.cs
- EventLogTraceListener.cs
- ColumnResizeAdorner.cs
- WorkflowDebuggerSteppingAttribute.cs
- ExtractedStateEntry.cs
- ChildrenQuery.cs
- ProfileManager.cs
- FullTextLine.cs
- Point3DCollectionConverter.cs
- PostBackTrigger.cs
- GridViewCellAutomationPeer.cs
- ItemsPanelTemplate.cs
- SoapWriter.cs
- StatusCommandUI.cs
- RoleManagerModule.cs
- DirectionalLight.cs
- IPEndPoint.cs
- ToolStripItemGlyph.cs
- ContractNamespaceAttribute.cs
- Util.cs
- ConfigXmlText.cs
- CanExpandCollapseAllConverter.cs
- Permission.cs
- StreamReader.cs
- ColorTransformHelper.cs
- ComboBoxAutomationPeer.cs
- CurrentChangingEventManager.cs
- TextEditorTyping.cs
- ProfileBuildProvider.cs
- OutputScope.cs
- EmptyStringExpandableObjectConverter.cs
- Decorator.cs
- unitconverter.cs
- WmlPanelAdapter.cs
- XPathCompileException.cs
- Proxy.cs
- ViewManager.cs
- FormViewModeEventArgs.cs
- TimerElapsedEvenArgs.cs
- LazyTextWriterCreator.cs
- PropertiesTab.cs
- ListViewTableCell.cs
- SystemFonts.cs
- WebPartTransformerCollection.cs
- ManagementObjectSearcher.cs
- ResourceContainer.cs
- AssemblyInfo.cs
- CssClassPropertyAttribute.cs
- IPEndPoint.cs
- RegexCaptureCollection.cs
- DataServiceQueryException.cs
- Oid.cs
- DirectoryInfo.cs
- WebResourceAttribute.cs
- SourceInterpreter.cs
- StorageComplexTypeMapping.cs
- MessageBox.cs
- XPathNodeHelper.cs
- ProfilePropertySettingsCollection.cs
- SqlCommandSet.cs
- OLEDB_Util.cs
- DbConnectionOptions.cs
- COM2ColorConverter.cs
- InternalUserCancelledException.cs
- HttpInputStream.cs
- AsymmetricAlgorithm.cs
- CacheVirtualItemsEvent.cs
- _AutoWebProxyScriptHelper.cs
- XmlLoader.cs
- FunctionNode.cs
- XmlHierarchyData.cs
- SemaphoreSecurity.cs
- Timer.cs