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
- CryptoConfig.cs
- HtmlCalendarAdapter.cs
- FileCodeGroup.cs
- FieldToken.cs
- IndexingContentUnit.cs
- BaseCodeDomTreeGenerator.cs
- RouteParametersHelper.cs
- TextEditorMouse.cs
- SqlBooleanizer.cs
- StateChangeEvent.cs
- DbUpdateCommandTree.cs
- ParameterExpression.cs
- ButtonDesigner.cs
- RelationalExpressions.cs
- PolyLineSegment.cs
- AsyncPostBackTrigger.cs
- FixedSOMImage.cs
- ManagedFilter.cs
- DropDownList.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ReachSerializableProperties.cs
- FederatedMessageSecurityOverHttp.cs
- RelatedView.cs
- CodeCatchClauseCollection.cs
- InvokerUtil.cs
- RegexStringValidator.cs
- SuppressMessageAttribute.cs
- ClientTarget.cs
- ApplicationSecurityManager.cs
- SystemIcmpV4Statistics.cs
- MailAddressCollection.cs
- FragmentQuery.cs
- ConnectionAcceptor.cs
- EpmAttributeNameBuilder.cs
- CheckPair.cs
- PlainXmlSerializer.cs
- GenericAuthenticationEventArgs.cs
- ColorInterpolationModeValidation.cs
- InstanceDataCollection.cs
- PropertyChangedEventArgs.cs
- CustomExpressionEventArgs.cs
- Container.cs
- MissingFieldException.cs
- SourceSwitch.cs
- DocumentsTrace.cs
- DataReaderContainer.cs
- EntityRecordInfo.cs
- ActionMessageFilterTable.cs
- GroupDescription.cs
- ObjectAnimationUsingKeyFrames.cs
- StateChangeEvent.cs
- ZipPackage.cs
- SmiSettersStream.cs
- LinqToSqlWrapper.cs
- LayoutEditorPart.cs
- TypeToArgumentTypeConverter.cs
- SafeProcessHandle.cs
- XPathChildIterator.cs
- AttributeCallbackBuilder.cs
- MailWriter.cs
- FileUtil.cs
- DetailsViewInsertEventArgs.cs
- DataGridAddNewRow.cs
- EntityDataSourceWrapper.cs
- ValidationPropertyAttribute.cs
- UserPersonalizationStateInfo.cs
- HttpServerChannel.cs
- TextFragmentEngine.cs
- CodeChecksumPragma.cs
- RequestCachingSection.cs
- ClientRoleProvider.cs
- DetailsViewDeletedEventArgs.cs
- PinnedBufferMemoryStream.cs
- TabItemAutomationPeer.cs
- GlyphElement.cs
- _ListenerAsyncResult.cs
- DbInsertCommandTree.cs
- ConnectAlgorithms.cs
- CodeNamespaceCollection.cs
- XmlSchemaAnyAttribute.cs
- Page.cs
- Quaternion.cs
- CodeArrayIndexerExpression.cs
- TextEditorMouse.cs
- MeshGeometry3D.cs
- SubstitutionResponseElement.cs
- UrlMapping.cs
- GridViewRowCollection.cs
- DataSourceGroupCollection.cs
- XmlHierarchyData.cs
- ArraySegment.cs
- _NestedSingleAsyncResult.cs
- SafeRightsManagementPubHandle.cs
- TdsParserSafeHandles.cs
- BamlMapTable.cs
- HostingEnvironment.cs
- Cell.cs
- ToolStripItemGlyph.cs
- UserPersonalizationStateInfo.cs
- XmlTypeAttribute.cs