35 lines
1.4 KiB
C#
35 lines
1.4 KiB
C#
|
//----------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//----------------------------------------------------------------
|
||
|
|
||
|
namespace System.ServiceModel.Dispatcher
|
||
|
{
|
||
|
class WorkflowInstanceProvider : DurableInstanceProvider
|
||
|
{
|
||
|
WorkflowInstanceContextProvider instanceContextProvider;
|
||
|
|
||
|
public WorkflowInstanceProvider(WorkflowInstanceContextProvider instanceContextProvider)
|
||
|
: base(instanceContextProvider)
|
||
|
{
|
||
|
this.instanceContextProvider = instanceContextProvider;
|
||
|
}
|
||
|
|
||
|
public override void ReleaseInstance(InstanceContext instanceContext, object instance)
|
||
|
{
|
||
|
WorkflowDurableInstance workflowDurableInstance = null;
|
||
|
|
||
|
//If InstanceContext is taken down due to Exception(Like PersistenceException);
|
||
|
//Make sure we inform LifeTimeManager to cleanup the record.
|
||
|
if (instanceContext.State == CommunicationState.Faulted || instanceContext.Aborted)
|
||
|
{
|
||
|
if (this.instanceContextProvider.InstanceLifeTimeManager != null)
|
||
|
{
|
||
|
workflowDurableInstance = (WorkflowDurableInstance) instance;
|
||
|
this.instanceContextProvider.InstanceLifeTimeManager.CleanUp(workflowDurableInstance.InstanceId);
|
||
|
}
|
||
|
}
|
||
|
base.ReleaseInstance(instanceContext, instance);
|
||
|
}
|
||
|
}
|
||
|
}
|