【问题标题】:running task synchronously in Microsoft Dynamics CRM 2011在 Microsoft Dynamics CRM 2011 中同步运行任务
【发布时间】:2014-02-18 23:06:57
【问题描述】:

我在 MS Dynamics CRM 2011 中有一个插件,它在任何新的夹具创建时都会被调用。我希望在调用此插件时异步运行任务。

这将在一个表中创建大约 40000 个新行,并且是一个长查询,大约需要 10 分钟才能完成。我不希望管理员/用户在完成创建所有记录时等待,我宁愿让它异步运行并让用户做其他事情。

任何帮助或示例代码将不胜感激。

【问题讨论】:

    标签: dynamics-crm-2011 microsoft-dynamics


    【解决方案1】:

    我建议在 CRM 之外将此纳入一个单独的流程,例如计划的控制台应用程序,它会定期查询 CRM 以了解特定情况,然后创建所需的记录。

    另一方面,如果您的插件在沙箱中注册,如果它运行超过 2 分钟,CRM 将停止它。

    Event Execution Pipeline

    无论插件是同步执行还是同步执行 异步,有 2 分钟的时间限制施加在 执行在沙盒中注册的插件。如果执行 你的插件逻辑超过了时间限制,一个 System.TimeoutException 被抛出。如果插件需要超过 2 分钟的处理时间 时间限制,考虑使用工作流或其他后台进程 完成预期的任务。

    【讨论】:

      【解决方案2】:

      我建议您使用异步插件来实现您的目标。

      【讨论】:

      • 我在我的插件中添加了一个步骤,即在 Context=Create、Pipe-line stage=Post-Operation 中运行,在我的插件类中我有以下代码.. base.RegisteredEvents.Add(new Tuple >(40, "Create", "", new Action(PostFixtureSeriesAssociateExecute)));我的 PostFixtureSeriesAssociateExecute 具有所有数据库功能。谢谢
      【解决方案3】:

      我尝试为此目的使用插件,但由于多种原因它无法正常工作,其中一个是超时问题。

      最后我设法通过使用自定义工作流活动来完成这项工作,该活动在插入我的实体时被触发。

      这很完美,可以根据数据异步运行(30-45 分钟)。

      感谢大家的建议

      【讨论】:

        猜你喜欢
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2013-03-02
        • 2011-12-17
        相关资源
        最近更新 更多