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
- WindowsNonControl.cs
- UpdateRecord.cs
- SqlDuplicator.cs
- RequestCache.cs
- ControlValuePropertyAttribute.cs
- TypeConverterValueSerializer.cs
- CodeEventReferenceExpression.cs
- ProfilePropertySettings.cs
- InputMethod.cs
- PrePrepareMethodAttribute.cs
- PerformanceCounterCategory.cs
- MachineKeySection.cs
- SoapExtensionTypeElement.cs
- SQLRoleProvider.cs
- SchemaNamespaceManager.cs
- PermissionSetEnumerator.cs
- SecurityNegotiationException.cs
- DataGridColumnStyleMappingNameEditor.cs
- GridItem.cs
- SoapUnknownHeader.cs
- BindStream.cs
- HttpHostedTransportConfiguration.cs
- SqlUserDefinedTypeAttribute.cs
- BatchParser.cs
- MSHTMLHost.cs
- StoreItemCollection.cs
- SubMenuStyle.cs
- SqlDataSourceAdvancedOptionsForm.cs
- WindowsIPAddress.cs
- RequestCacheManager.cs
- DynamicMetaObject.cs
- GridViewDeletedEventArgs.cs
- ProfilePropertySettingsCollection.cs
- WmlMobileTextWriter.cs
- CheckBoxPopupAdapter.cs
- COSERVERINFO.cs
- _NegotiateClient.cs
- FixedTextSelectionProcessor.cs
- CodeParameterDeclarationExpression.cs
- SelectionPattern.cs
- TextRangeSerialization.cs
- LazyTextWriterCreator.cs
- CodeNamespaceCollection.cs
- WebServiceBindingAttribute.cs
- DataObjectAttribute.cs
- MiniMapControl.xaml.cs
- SamlAuthorityBinding.cs
- EndPoint.cs
- __ComObject.cs
- EncryptedXml.cs
- WindowsAuthenticationEventArgs.cs
- DataSourceControlBuilder.cs
- MethodImplAttribute.cs
- DecimalKeyFrameCollection.cs
- WindowsFormsHostPropertyMap.cs
- EmptyControlCollection.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- _SSPIWrapper.cs
- HostExecutionContextManager.cs
- GraphicsPath.cs
- TableProviderWrapper.cs
- unitconverter.cs
- StructuralComparisons.cs
- ContextMenuStripGroup.cs
- HelpInfo.cs
- _RequestCacheProtocol.cs
- StringUtil.cs
- DialogResultConverter.cs
- DllNotFoundException.cs
- BitmapMetadataBlob.cs
- DataGridViewDataErrorEventArgs.cs
- HeaderedItemsControl.cs
- IssuedTokenParametersEndpointAddressElement.cs
- StringFreezingAttribute.cs
- FrameworkContentElement.cs
- XmlSerializerFormatAttribute.cs
- DoubleLink.cs
- CatalogZoneBase.cs
- NavigationWindowAutomationPeer.cs
- ListViewEditEventArgs.cs
- AlphaSortedEnumConverter.cs
- MediaEntryAttribute.cs
- OpCodes.cs
- serverconfig.cs
- UnmanagedBitmapWrapper.cs
- DataFieldConverter.cs
- MultiBindingExpression.cs
- RowUpdatedEventArgs.cs
- ToolStripInSituService.cs
- ExpressionVisitorHelpers.cs
- Viewport3DAutomationPeer.cs
- ManagementOperationWatcher.cs
- DbUpdateCommandTree.cs
- LicenseContext.cs
- TextEditorCharacters.cs
- MetafileHeader.cs
- httpserverutility.cs
- DeadCharTextComposition.cs
- GlobalizationSection.cs
- HeaderCollection.cs