Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Dispatcher / WorkflowDurableInstance.cs / 1305376 / WorkflowDurableInstance.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.Workflow.Runtime; using System.Runtime.Diagnostics; using System.ServiceModel.Diagnostics; using System.Diagnostics; class WorkflowDurableInstance : DurableInstance { WorkflowOperationAsyncResult currentOperationInvocation; WorkflowInstanceContextProvider instanceContextProvider; bool shouldCreateNew = false; object thisLock = new object(); WorkflowDefinitionContext workflowDefinition; WorkflowInstance workflowInstance = null; public WorkflowDurableInstance(WorkflowInstanceContextProvider instanceContextProvider, Guid instanceId, WorkflowDefinitionContext workflowDefinition, bool createNew) : base(instanceContextProvider, instanceId) { if (workflowDefinition == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("workflowDefinition"); } this.workflowDefinition = workflowDefinition; this.shouldCreateNew = createNew; this.instanceContextProvider = instanceContextProvider; } public WorkflowOperationAsyncResult CurrentOperationInvocation { get { return this.currentOperationInvocation; } set { this.currentOperationInvocation = value; } } public WorkflowInstance GetWorkflowInstance(bool canCreateInstance) { if (this.workflowInstance == null) { lock (thisLock) { if (shouldCreateNew) { if (canCreateInstance) { this.workflowInstance = this.workflowDefinition.CreateWorkflow(this.InstanceId); shouldCreateNew = false; if (DiagnosticUtility.ShouldTraceInformation) { string traceText = SR.GetString(SR.TraceCodeWorkflowDurableInstanceActivated, InstanceId); TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WorkflowDurableInstanceActivated, traceText, new StringTraceRecord("DurableInstanceDetail", traceText), this, null); } using (new WorkflowDispatchContext(true, true)) { this.workflowInstance.Start(); } } else { //Make sure we clean up this InstanceContext; DurableErrorHandler.CleanUpInstanceContextAtOperationCompletion(); //Inform InstanceLifeTimeManager to clean up record for InstanceId; if (this.instanceContextProvider.InstanceLifeTimeManager != null) { this.instanceContextProvider.InstanceLifeTimeManager.CleanUp(this.InstanceId); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(new DurableDispatcherAddressingFault())); } } else { this.workflowInstance = this.workflowDefinition.WorkflowRuntime.GetWorkflow(InstanceId); if (DiagnosticUtility.ShouldTraceInformation) { string traceText = SR.GetString(SR.TraceCodeWorkflowDurableInstanceLoaded, InstanceId); TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WorkflowDurableInstanceLoaded, traceText, new StringTraceRecord("DurableInstanceDetail", traceText), this, null); } } } } return workflowInstance; } } } // 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
- CollectionChange.cs
- PlacementWorkspace.cs
- _CookieModule.cs
- ScriptResourceHandler.cs
- ControlIdConverter.cs
- TypeUtil.cs
- RegisteredHiddenField.cs
- Console.cs
- CaseInsensitiveHashCodeProvider.cs
- HtmlTable.cs
- AttributeEmitter.cs
- DesignerAttribute.cs
- Util.cs
- ClientTarget.cs
- ImmutableObjectAttribute.cs
- Content.cs
- KeyPressEvent.cs
- SecureUICommand.cs
- ImportContext.cs
- EventTrigger.cs
- OdbcPermission.cs
- EncoderParameter.cs
- CallTemplateAction.cs
- JumpList.cs
- TextDecorationLocationValidation.cs
- Int32AnimationUsingKeyFrames.cs
- DataGridViewCellValidatingEventArgs.cs
- TransferRequestHandler.cs
- ErrorWebPart.cs
- UnsafeNativeMethodsCLR.cs
- Registry.cs
- DataFieldCollectionEditor.cs
- Pair.cs
- Scalars.cs
- SetterTriggerConditionValueConverter.cs
- XmlTextWriter.cs
- ToolStripControlHost.cs
- OdbcCommand.cs
- AdCreatedEventArgs.cs
- ClientConvert.cs
- SelectedPathEditor.cs
- FixedHighlight.cs
- XmlLoader.cs
- ThemeConfigurationDialog.cs
- recordstatescratchpad.cs
- ReadOnlyNameValueCollection.cs
- SoapReflectionImporter.cs
- CompilationPass2Task.cs
- BypassElement.cs
- BitmapImage.cs
- PageCanvasSize.cs
- EntityDataSourceDesigner.cs
- MetadataException.cs
- TextTreeObjectNode.cs
- OptimalBreakSession.cs
- EntityDataReader.cs
- FtpCachePolicyElement.cs
- XmlBufferedByteStreamReader.cs
- PassportAuthentication.cs
- SqlMethodTransformer.cs
- AppSettingsExpressionBuilder.cs
- SessionStateModule.cs
- PtsCache.cs
- BamlRecordHelper.cs
- AdapterDictionary.cs
- TreeNode.cs
- ObjectStateManagerMetadata.cs
- SubMenuStyle.cs
- StringPropertyBuilder.cs
- ChangeProcessor.cs
- EventData.cs
- SamlAssertionKeyIdentifierClause.cs
- DoubleAnimationUsingKeyFrames.cs
- XamlSerializationHelper.cs
- BackgroundWorker.cs
- XmlToDatasetMap.cs
- MemberPath.cs
- CaseInsensitiveHashCodeProvider.cs
- ValueExpressions.cs
- InstallerTypeAttribute.cs
- XamlToRtfParser.cs
- WebPartConnectionsDisconnectVerb.cs
- PerformanceCounterNameAttribute.cs
- RootBrowserWindow.cs
- TypeLibConverter.cs
- RightsManagementInformation.cs
- MemberDomainMap.cs
- DetailsViewCommandEventArgs.cs
- ReadOnlyCollection.cs
- SqlTopReducer.cs
- WebPartRestoreVerb.cs
- EntityDataSourceWizardForm.cs
- ClientConfigurationHost.cs
- BitmapEffect.cs
- UnaryNode.cs
- FrameworkTemplate.cs
- GenericTypeParameterBuilder.cs
- CommonObjectSecurity.cs
- Lazy.cs
- OleDbConnectionFactory.cs