我有一个自托管的WF 4服务,它正在使用SqlWorkflowInstanceStore。我正在配置它:
var behavior = new SqlWorkflowInstanceStoreBehavior(connStr);
TimeSpan detectionPeriod = behavior.RunnableInstancesDetectionPeriod;
behavior.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing;
behavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
behavior.InstanceEncodingOption = InstanceEncodingOption.None;
host.Description.Behaviors.Add(behavior);
在我的代码中,我很快就将IdleBehavior行为添加到主机,以确保正在应用卸载。基本上,我不确定SqlInstanceStore在工作流的卸载方面做了什么。它是自己管理的,还是我还需要添加我的IdleBehavior,如下所示:
// Idle behaviour
var idleBehavior = new WorkflowIdleBehavior();
host.Description.Behaviors.Add(idleBehavior);
提前致谢。
答案 0 :(得分:2)
WorkflowServiceHevior将让WorkflowServiceHost在未处于活动状态时自动保留/卸载工作流。你不需要这样做,但它有助于scalabilty。即使没有空闲行为,工作流状态也将在执行期间保存。