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
- _ReceiveMessageOverlappedAsyncResult.cs
- GenericAuthenticationEventArgs.cs
- DataGridHelper.cs
- RadioButton.cs
- SecurityTokenResolver.cs
- LZCodec.cs
- EditorPartDesigner.cs
- TextCompositionEventArgs.cs
- DBDataPermissionAttribute.cs
- TextTreeDeleteContentUndoUnit.cs
- ApplicationId.cs
- SelectorAutomationPeer.cs
- CompletedAsyncResult.cs
- Operand.cs
- ContentElementCollection.cs
- OutputCacheSettings.cs
- DefaultTraceListener.cs
- Type.cs
- MarshalDirectiveException.cs
- CompilerGeneratedAttribute.cs
- cache.cs
- ResourceCategoryAttribute.cs
- _Win32.cs
- OracleDateTime.cs
- DBAsyncResult.cs
- TargetInvocationException.cs
- SubMenuStyle.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- InputReport.cs
- EditingCommands.cs
- FieldAccessException.cs
- GridViewRowEventArgs.cs
- UDPClient.cs
- sqlinternaltransaction.cs
- CustomCategoryAttribute.cs
- DiscoveryVersion.cs
- ButtonAutomationPeer.cs
- SmtpReplyReader.cs
- DocumentApplicationJournalEntry.cs
- BaseEntityWrapper.cs
- DrawingBrush.cs
- SoapExtension.cs
- EventLogEntryCollection.cs
- ForeignConstraint.cs
- QilExpression.cs
- DbDataAdapter.cs
- ToolStripItemClickedEventArgs.cs
- _LoggingObject.cs
- ApplicationSecurityInfo.cs
- ToolboxBitmapAttribute.cs
- BoolExpr.cs
- ToolStripPanelSelectionBehavior.cs
- ApplicationInfo.cs
- SetIndexBinder.cs
- Vector3DAnimation.cs
- TypeValidationEventArgs.cs
- CodeArrayIndexerExpression.cs
- ReturnValue.cs
- ListViewGroupCollectionEditor.cs
- Form.cs
- HealthMonitoringSectionHelper.cs
- Scheduler.cs
- CodeDomConfigurationHandler.cs
- StyleCollectionEditor.cs
- EventEntry.cs
- ParserStreamGeometryContext.cs
- DbException.cs
- EnumMember.cs
- DataBindingHandlerAttribute.cs
- DataGridViewCheckBoxColumn.cs
- Cell.cs
- Codec.cs
- GlobalAclOperationRequirement.cs
- GeneralTransform3DTo2D.cs
- LocalizableAttribute.cs
- BinaryMethodMessage.cs
- SystemMulticastIPAddressInformation.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- UInt32.cs
- EqualityComparer.cs
- ToolStripPanelRenderEventArgs.cs
- TransactionOptions.cs
- RegexInterpreter.cs
- MergeLocalizationDirectives.cs
- XmlDataFileEditor.cs
- SqlDuplicator.cs
- DomainLiteralReader.cs
- PropertyGeneratedEventArgs.cs
- SequentialWorkflowRootDesigner.cs
- XmlValidatingReaderImpl.cs
- ListViewSelectEventArgs.cs
- BaseProcessor.cs
- SamlSubjectStatement.cs
- Missing.cs
- SegmentInfo.cs
- DelayLoadType.cs
- EditorZoneAutoFormat.cs
- XmlSchemaException.cs
- JavaScriptSerializer.cs
- DataKey.cs