【问题标题】:Workflow Waiting Forever工作流程永远等待
【发布时间】:2014-04-09 13:29:23
【问题描述】:

我有一个在创建实体时运行的工作流,它会创建另外两个实体并将它们放入队列中。然后它一直等到每个实体的状态原因设置为完成。之后继续。

基本上两个团队将处理一个订单,然后在两个团队完成后继续处理。

大部分时间它都有效。然而,有时它会永远等待。我会重新激活并重新解决其他任务,但它永远不会醒来。

我能做什么?工作流对我来说还不够强大,无法让它超时轮询(没有循环)。我想避免为这些其他实体添加 on-change 插件,以使工作流行为完全分散。

编辑: 重新启动 CRM 服务(不确定是哪个,我重新启动了它们)允许工作流恢复。但是,我仍然想知道如何使它更可靠。

【问题讨论】:

  • 进度窗口中是否出现错误?如果抛出可恢复的错误,则工作流将保持等待状态,但随后可以恢复。 Crm 异步服务是管理工作流的服务。
  • @Zach 查看工作流时进度窗口没有错误。它只是表明它正在等待等待步骤。
  • 实体之间的关系是什么?为什么不能对从第一个实体创建的两个实体进行“状态更改”工作流?
  • 它们都是与为客户进行安装相关的不同任务。一是行政,二是技术。两者都必须在销售推进其他事情之前完成。 On Status Change 会起作用,但它将基本上是一个工作流程分成几个地方,并且更难维护。

标签: dynamics-crm dynamics-crm-2013


【解决方案1】:

我在 CRM 2011 中的工作流程中遇到了同样的问题(以及更多问题),因此决定不使用它们(非常特殊的目的除外)。 主要原因是它们的错误处理非常有限。另一个原因是不方便将它们置于源代码控制之下。另一个原因是:Worflows 无法脱机运行,也不支持用户模拟。比较看这里:http://goo.gl/9ht1QJ

使用插件而不是工作流程,然后您就可以完全控制。

但请记住,插件(与工作流程不同)不是为长时间运行的任务而设计的。 因此它们的默认最大执行时间为 120 秒,并且不是有状态的/持久的。但在大多数情况下(我认为你的情况也是如此)这不是问题。 稍微改变一下你的事件:

  • 实施并注册一个插件步骤:创建实体并创建另外两个实体并将它们放入队列中
  • 实现并注册另一个步骤:实体的状态原因设置为完成,查询其他实体并检查状态,如果完成则继续处理

如果你真的不想为你的业务逻辑使用插件,你可以考虑实现一个插件来重新启动/恢复有故障的工作流。 但这不是一个很好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多