我的工作流程托管在运行IIS5(生产环境为IIS6)的WorkflowServiceApplication中,并带有持久性数据库。这是一个请求/批准服务,因此在等待批准时会有延迟(几天),如果延迟过了而没有批准,工作流会向批准者发送电子邮件。我注意到,待处理的工作流只会“唤醒”并在我启动新请求(即新的工作流程实例)时发送他们的电子邮件。我假设在启动新流时,会检查实例存储中是否有恢复的实例并恢复它们。我刚刚注意到这个问题,因为我之前测试过的延迟只是几分钟而不是几天。我还没有在IIS6上试过它,但我希望它会是一样的。
q1)我是否需要编写一个控制台应用程序或其他东西来定期检查和恢复流程,如果是这样,有人可以建议如何做到这一点?或者我刚做错了什么?
q2)假设Q1的答案是“是的,你需要写一些东西”如果我要使用IIS7和AppFabric(这可能),睡眠/恢复就可以正常工作,而不必编写任何代码检查并恢复流量?即只是将工作流服务部署到AppFabric中并且它有效吗?
提前致谢。
答案 0 :(得分:0)
q1的答案是肯定的。 IIS AppDomain回收后,在有外部请求之前不会重新启动它。因此,WorkflowServiceHost未处于活动状态,并且将不会恢复已过期的延迟活动。对于7之前的IIS版本,您需要创建外部请求以确保WorkflowServiceHost可用。最简单的方法就是让Windows服务定期检索WSDL页面。
如果您升级到IIS7和AppFabric,您可以将服务配置为在IIS运行时自动启动,这将解决同样的问题。我更喜欢这个选项,因为AppFabric为您提供了很多额外的好处,比如跟踪。
答案 1 :(得分:0)
是Windows Server AppFabric的工作流管理服务将使用挂起的计时器唤醒工作流。你可以免费获得这个以及其他好东西。