c# - Windows 工作流延迟 Activity 行为

标签 c# .net workflow android-activity delay

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

问题

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

背景信息

所以,我对工作流有点陌生,我正在尝试确定将它用于需要 3 个月延迟的业务流程的可行性。基本上,业务流程是让客户试用 3 个月的升级服务。为此,我正在考虑实现一个 Pick Activity ,该 Activity 在 WCF Receive(“Cancel upgrade receive”)和 3 个月的 Delay Activity 之间进行拆分。如果延迟到期,它们将永久升级并更新计费。或者,如果取消被初始化,那么......是的,你明白了:)

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

最佳答案

根据 https://msdn.microsoft.com/en-us/library/ee829473(v=vs.110).aspx ,它的工作方式是:

The SQL Workflow Instance Store runs an internal task that periodically wakes up and detects runnable or activatable workflow instances in the persistence database

可激活的工作流是满足以下任一条件的工作流:

  • 实例已解锁并且有一个已过期的挂起计时器。
  • 实例上有一个过期的锁。
  • 实例已解锁,状态为正在执行。

因此 OP 的建议(“它是否将其加载到内存中并经常检查”)是正确的。

我自己尚未确认此行为,但在寻找完全相同问题的答案时偶然发现了此线程,然后找到了相关的 MSDN 文章,我想与您分享。

希望这对您有所帮助。

关于c# - Windows 工作流延迟 Activity 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835863/

相关文章:

c# - c 中的 int** 和 c# 中的 int[][] 是一样的吗?

c# - AsParallel() 如何拆分它的 'source' ?

c# - 注册定时器流逝事件

.NET Control.Update 方法在无效后需要吗?

c# - 将模型的 IEnumerable 属性传递给 Controller ​​后操作 - ASP MVC

c# - 编辑Word书签更改字体

c# - C++ 中的 DirectX11 引擎和 C# 中的接口(interface)

architecture - 用于功能、稳定版本等的 Mercurial 存储库结构

c# - Dynamics CRM - 在新创建实体的工作流中访问属性

asp.net - Asp.net 中的 Windows Workflow 4