使用自托管的WorkflowServiceHost重新启动持久工作流

时间:2011-02-18 15:02:09

标签: wcf workflow workflow-foundation-4 workflowservice

我正在尝试找出如何恢复我使用WorkflowServiceHost进行自托管的持久工作流程。目前我的主机连接了持久性和空闲行为,如下所示:

        // Persistence
        var connStr = @"";
        var behavior = new SqlWorkflowInstanceStoreBehavior(connStr);
        behavior.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing;
        behavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
        behavior.InstanceEncodingOption = InstanceEncodingOption.None;
        host.Description.Behaviors.Add(behavior);

        // Idle behaviour
        var idleBehavior = new WorkflowIdleBehavior();
        idleBehavior.TimeToPersist = TimeSpan.FromMinutes(2);
        idleBehavior.TimeToUnload = TimeSpan.FromMinutes(2);
        host.Description.Behaviors.Add(behavior);

我将工作流实例GUID存储在工作流中包含的自定义活动中的数据库中的ProductID中,因此我可以轻松地将特定工作流实例跟踪到产品ID。我希望能够以某种方式将此产品ID传递给我的ServiceHost并让它为我恢复正确的持久工作流程。

有人能指出我如何做到这一点的正确方向吗?

非常感谢提前 伊恩

1 个答案:

答案 0 :(得分:1)

您将要阅读Content Correlation。您将ProductID与您的Receive活动相关联。当您到达收件人时,将创建一个书签,您的工作流程将被保留。您调用receive并传递ProductID,并且由于相关性,WF运行时知道要恢复哪个实例。