【问题标题】:Are workflows guaranteed to execute in a FIFO order? (CRM 2011 RU18 on-prem)工作流是否保证以先进先出的顺序执行? (CRM 2011 RU18 本地)
【发布时间】:2018-08-10 17:58:50
【问题描述】:

假设异步工作流将按照触发顺序执行是否安全?例如

自定义对象上的 WF1 被触发。 WF1 导致 WF2 和 WF3 以该顺序触发,即它们都进入异步队列。

我可以安全地假设 WF2 将在 WF3 之前实际执行吗?

我找不到任何官方的说法,所以也许不应该假设?

【问题讨论】:

  • 如果你有这样的交织逻辑,最好在异步插件中顺序执行所有操作。 :)

标签: dynamics-crm dynamics-crm-2011 workflow microsoft-dynamics


【解决方案1】:

不保证它将是 FIFO。异步服务可以按可用资源的顺序处理异步作业。

AsyncOperation.DependencyToken 值为 null 的任何异步操作都会独立于队列中的所有其他异步操作执行。不保证其他独立操作的执行顺序。但是,较早创建的异步操作更有可能在稍后创建的操作之前执行。这假设操作没有被推迟,也没有设置为 Completed 状态。

必须在创建异步操作时设置依赖标记。由于 Dynamics 365 会为批量电子邮件、批量删除和导入等批量操作创建异步操作,因此您无法将依赖项令牌用于这些操作。另外,由于执行插件的异步操作是由队列管理器创建的,所以不能使用依赖令牌来排序异步注册插件的执行。

Read more

在 CRM WF 案例中,激活意味着不同。我假设您正在谈论触发 WF。如果 WF2 和 WF3 在 WF1 内作为子 WF 依次触发,则平台会相应地依次下发 Dependency 令牌。即首先WF2然后WF3。

【讨论】:

  • 很好的答案!谢谢,关于上面的评论,我被要求将自定义逻辑实现为自定义工作流活动,并且正在考虑如何将其分解为可管理的块,因此是原始问题。
  • 更新问题以使用触发而不是激活以避免混淆
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多