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
- FileDialog_Vista_Interop.cs
- SoapInteropTypes.cs
- BCryptNative.cs
- ListViewSortEventArgs.cs
- Matrix3DStack.cs
- BuildProviderInstallComponent.cs
- BuiltInExpr.cs
- FileLoadException.cs
- Size3DConverter.cs
- FastEncoderStatics.cs
- Label.cs
- WebDisplayNameAttribute.cs
- processwaithandle.cs
- BulletedList.cs
- Context.cs
- AsyncPostBackErrorEventArgs.cs
- StagingAreaInputItem.cs
- WorkflowServiceHostFactory.cs
- Hyperlink.cs
- ConnectionsZoneAutoFormat.cs
- _NegoState.cs
- TaskFileService.cs
- BackoffTimeoutHelper.cs
- WpfPayload.cs
- Math.cs
- TypeConverterHelper.cs
- AssemblySettingAttributes.cs
- DataGridViewAccessibleObject.cs
- DataSourceControlBuilder.cs
- WmiEventSink.cs
- SafePointer.cs
- X509Chain.cs
- AssemblyGen.cs
- MachineKeyConverter.cs
- SqlStream.cs
- UpdatePanelTrigger.cs
- RepeatButton.cs
- SessionPageStatePersister.cs
- WaitHandle.cs
- GridView.cs
- WebBrowserPermission.cs
- SettingsProperty.cs
- ImageConverter.cs
- TypeConverterHelper.cs
- OrderPreservingMergeHelper.cs
- WebControl.cs
- AssertHelper.cs
- Graph.cs
- DbDataReader.cs
- TypedReference.cs
- XmlObjectSerializerWriteContextComplex.cs
- TransformCollection.cs
- DictionaryTraceRecord.cs
- SqlGenericUtil.cs
- _RequestLifetimeSetter.cs
- ConsoleTraceListener.cs
- DurableInstance.cs
- WhiteSpaceTrimStringConverter.cs
- AssociatedControlConverter.cs
- LoginView.cs
- NetworkInformationException.cs
- HttpCacheParams.cs
- InvalidFilterCriteriaException.cs
- DesignerHelpers.cs
- Style.cs
- CodeLabeledStatement.cs
- Enumerable.cs
- ApplicationInterop.cs
- DeviceFilterEditorDialog.cs
- NegotiateStream.cs
- PropertyNames.cs
- TextTreeInsertElementUndoUnit.cs
- XmlSchemaExporter.cs
- XmlHierarchyData.cs
- ValidatedControlConverter.cs
- ColorConvertedBitmap.cs
- StreamWithDictionary.cs
- ContextDataSourceContextData.cs
- _StreamFramer.cs
- WinFormsUtils.cs
- GPRECT.cs
- VirtualDirectoryMappingCollection.cs
- DictionaryChange.cs
- Trace.cs
- DbConnectionPool.cs
- WSFederationHttpSecurityMode.cs
- CultureInfo.cs
- PeerNameRecordCollection.cs
- QilInvokeEarlyBound.cs
- TableDetailsCollection.cs
- _Events.cs
- RandomDelayQueuedSendsAsyncResult.cs
- ViewEventArgs.cs
- QilLoop.cs
- SafeEventLogWriteHandle.cs
- DataBinding.cs
- DefinitionBase.cs
- ServicePrincipalNameElement.cs
- FactoryGenerator.cs
- QualifierSet.cs