【发布时间】:2016-01-08 20:12:02
【问题描述】:
我有一个简单的 Windows Workflow 4.5 工作流(帖子末尾的屏幕快照)作为 IIS 中的 WCF 服务托管。我已经使用 Microsoft 提供的 SQL Server 存储设置了持久性。
工作流接受一个文档 ID 和一个布尔值,指示它是否需要暂停并等待人工活动(人工审核)。如果工作流需要等待,它有一个与文档 ID 相关联的 Receive() 活动并暂停(这会在后台创建一个书签)。否则它会运行到完成并路由文档。
只要我们不重新启动服务器或为服务回收应用程序池之类的任何事情,一切都会完美运行。据我了解持久性,工作流应在可配置的“空闲时间”周期之后持久化,例如在等待接收消息时遇到...我已将此值设置为非常激进的一秒。
但是,如果您在现实世界中期望长时间运行的工作流,如果我们通过重新启动或回收应用程序池来模拟服务器崩溃,则等待 Receive() 的工作流永远不会响应。在服务器恢复后,我们是否应该做一些特别的事情来“补充”工作流程?相关性不适用于持久化的工作流吗?
在服务器重启后永远不会触发的 Receive() 在下面的工作流程中以黄色突出显示:
【问题讨论】: