我觉得我的问题有点直截了当,但我在“背景信息”部分添加了一些我的问题的细节,以防它太模糊。
问题
WorkflowServiceHost如何确定由于延迟而空闲的持久性活动已达到延迟超时?它是将它加载到内存中并经常检查,还是在这里发生了其他事情?
背景资讯
所以,我对工作流程有点新意,并且我正在尝试确定将其用于将使用3个月延迟的业务流程的可行性。基本上,业务流程是允许客户进行为期3个月的升级服务试用。为了实现这一点,我正在考虑实现一个Pick活动,该活动在WCF接收(“取消升级接收”)和3个月延迟活动之间进行分割。如果延迟到期,则会永久升级并更新结算。或者,如果取消被初始化,那么,好吧......是的,你明白了:)
所以......我关心的是在使用SQL工作流持久性时如何实现Delay。我不想在持久性存储中结束w / 500活动,这些活动必须每10分钟加载3个月才能检查延迟活动是否过期。
答案 0 :(得分:1)
根据https://msdn.microsoft.com/en-us/library/ee829473(v=vs.110).aspx,其工作方式是:
SQL Workflow Instance Store运行内部任务,定期唤醒并检测持久性数据库中的可运行或可激活的工作流实例
可激活工作流程是符合以下任一条件的工作流程:
所以OP的建议("它是否将其加载到内存中并经常检查")是正确的。
我自己没有证实这种行为,但在找到完全相同问题的答案时偶然发现了这个帖子,然后找到了我想与你分享的相关MSDN文章。
希望这有帮助。
答案 1 :(得分:0)
我用更小的时间窗口看着同样的问题。我仍然希望听到您是否/如何使用工作流程解决这个问题?
我正在使用WF4和上面提到的选择,然后我的解决方案是尝试使用appfabric根据延迟计时器重新初始化工作流程。这基于我在此处阅读的内容:Hosting workflow services with durable timers / delays,此处为:Activation of workflow service instances
我已经测试过这个选项在一方面有延迟,但现在我必须测试appfabric。
也许,我会在这里回过头来了解它是如何运作的。或者你可以给我一些见解?