Windows工作流延迟活动行为

时间:2010-10-01 01:03:14

标签: c# .net workflow android-activity delay

我觉得我的问题有点直截了当,但我在“背景信息”部分添加了一些我的问题的细节,以防它太模糊。

问题

WorkflowServiceHost如何确定由于延迟而空闲的持久性活动已达到延迟超时?它是将它加载到内存中并经常检查,还是在这里发生了其他事情?

背景资讯

所以,我对工作流程有点新意,并且我正在尝试确定将其用于将使用3个月延迟的业务流程的可行性。基本上,业务流程是允许客户进行为期3个月的升级服务试用。为了实现这一点,我正在考虑实现一个Pick活动,该活动在WCF接收(“取消升级接收”)和3个月延迟活动之间进行分割。如果延迟到期,则会永久升级并更新结算。或者,如果取消被初始化,那么,好吧......是的,你明白了:)

所以......我关心的是在使用SQL工作流持久性时如何实现Delay。我不想在持久性存储中结束w / 500活动,这些活动必须每10分钟加载3个月才能检查延迟活动是否过期。

2 个答案:

答案 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。

也许,我会在这里回过头来了解它是如何运作的。或者你可以给我一些见解?