2

我正在尝试解决如何恢复我使用 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,并让它为我恢复正确的持久工作流。

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

非常感谢伊恩

4

1 回答 1

1

您将要阅读有关Content Correlation的内容。您会将您的 ProductID 与您的接收活动相关联。当您收到一个书签时,将创建一个书签,并且您的工作流程将保持不变。您调用接收并传入您的 ProductID,并且由于相关性,WF 运行时知道要恢复哪个实例。

于 2011-02-21T20:21:39.910 回答