我正在使用Visual Studio 2010 Beta 2学习在即将发布的Visual Studio 2010之前使用Workflow Foundation(WF)4.0版。我注意到的一件事是,如果我在SQL数据库中保留工作流持久性存储,然后稍后将其加载回应用程序并完成工作流,当工作流的最后一个活动完成时,记录将从持久性存储中删除。我需要弄清楚这个功能是否是为了防止数据库变得庞大,或者我做错了什么。
答案 0 :(得分:4)
此删除行为是可配置的。例如,如果您正在使用WorkflowServiceHost并使用代码来配置服务主机,则可以将SqlWorkflowInstanceStoreBehavior.InstanceCompletionAction设置为InstanceCompletionAction.DeleteNothing,如以下示例所示:
WorkflowServiceHost host = new WorkflowServiceHost(workflow, baseAddress);
SqlWorkflowInstanceStoreBehavior persistenceBehavior = new SqlWorkflowInstanceStoreBehavior(connString);
persistenceBehavior.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing;
host.Description.Behaviors.Add(persistenceBehavior);
有关SQL工作流实例存储的功能以及如何配置它的详细信息,请查看此MSDN article。