Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

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);
}
}
}