我正在尝试找出如何恢复我使用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并让它为我恢复正确的持久工作流程。
有人能指出我如何做到这一点的正确方向吗?
非常感谢提前 伊恩
答案 0 :(得分:1)
您将要阅读Content Correlation。您将ProductID与您的Receive活动相关联。当您到达收件人时,将创建一个书签,您的工作流程将被保留。您调用receive并传递ProductID,并且由于相关性,WF运行时知道要恢复哪个实例。