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
- ConditionCollection.cs
- CodeGroup.cs
- Function.cs
- HandlerWithFactory.cs
- TypeViewSchema.cs
- SettingsPropertyValue.cs
- DbModificationClause.cs
- BitmapMetadataBlob.cs
- MembershipPasswordException.cs
- InternalBufferOverflowException.cs
- MetaTable.cs
- CodeNamespaceImport.cs
- MetaModel.cs
- GlyphTypeface.cs
- Operator.cs
- RtfNavigator.cs
- DynamicRenderer.cs
- NominalTypeEliminator.cs
- TouchDevice.cs
- TextBlock.cs
- ProfileInfo.cs
- DataListItemCollection.cs
- CompilationRelaxations.cs
- WsatServiceCertificate.cs
- XmlBindingWorker.cs
- XmlCharType.cs
- ComponentEvent.cs
- Rect3D.cs
- Message.cs
- SqlHelper.cs
- SimpleTypeResolver.cs
- TextElement.cs
- FileRecordSequenceHelper.cs
- WebPartMovingEventArgs.cs
- FilterQuery.cs
- XmlAttributes.cs
- GeometryModel3D.cs
- InvalidEnumArgumentException.cs
- BuilderPropertyEntry.cs
- UserUseLicenseDictionaryLoader.cs
- Icon.cs
- VirtualizingPanel.cs
- NestPullup.cs
- Attributes.cs
- WebServiceMethodData.cs
- ImpersonationContext.cs
- HttpInputStream.cs
- KnownBoxes.cs
- SqlServer2KCompatibilityCheck.cs
- XmlSubtreeReader.cs
- TimeoutValidationAttribute.cs
- X509ChainElement.cs
- CurrentChangingEventManager.cs
- XmlSerializableWriter.cs
- ImageAnimator.cs
- DataBinder.cs
- PngBitmapEncoder.cs
- SourceFileInfo.cs
- DbConnectionClosed.cs
- XmlSerializationReader.cs
- EncryptedPackage.cs
- ScriptComponentDescriptor.cs
- BamlResourceContent.cs
- WindowsEditBoxRange.cs
- CompareValidator.cs
- DataSpaceManager.cs
- BitmapEffectState.cs
- DivideByZeroException.cs
- TextBox.cs
- DateTimeConstantAttribute.cs
- IpcClientChannel.cs
- ConfigurationLocationCollection.cs
- PropertiesTab.cs
- HistoryEventArgs.cs
- DrawingContextDrawingContextWalker.cs
- TabPanel.cs
- SafeProcessHandle.cs
- HtmlListAdapter.cs
- FunctionNode.cs
- XamlGridLengthSerializer.cs
- UIElement3D.cs
- TableSectionStyle.cs
- InternalResources.cs
- CollectionContainer.cs
- TemplateNameScope.cs
- WebProxyScriptElement.cs
- TemplateDefinition.cs
- BatchParser.cs
- TextFragmentEngine.cs
- DrawingCollection.cs
- DBPropSet.cs
- SqlUserDefinedAggregateAttribute.cs
- TimeManager.cs
- KeyNotFoundException.cs
- base64Transforms.cs
- hresults.cs
- TableLayoutPanelCellPosition.cs
- SetMemberBinder.cs
- OrderedDictionaryStateHelper.cs
- EncodingTable.cs