使用ExecuteTransactionrequest发布操作后同步插件控件

时间:2018-12-14 04:01:55

标签: dynamics-crm microsoft-dynamics

我们有一个术后同步插件,可将事件数据写入eventhub。但是,我们有一些自定义功能,这些功能使用ExecuteTransactionrequest运行批处理操作。

如果在ExecuteTransactionrequest下运行的事务失败,则会回滚,但是无法回滚写入eventhub的数据。

是否有一种方法可以控制后操作插件的启动,以便在所有操作完成后启动它们。

2 个答案:

答案 0 :(得分:0)

您在这里的选择有所限制,您可以尝试进行预验证。

Pipeline stages

  

预验证-管线中的阶段,用于   在主系统操作之前执行。在此注册的插件   可能在数据库事务之外执行阶段。的   预验证阶段发生在执行安全检查之前   验证主叫或登录用户具有正确的权限   执行预期的操作。

     

操作前-管线中要执行的插件阶段   在主系统运行之前。在此阶段注册的插件   在数据库事务中执行

     

后期操作-管线中要插入的阶段   在主操作之后执行。在此阶段注册的插件   在数据库事务中执行

Inclusion in database transactions

  

在数据库事务期间执行的任何注册的插件   并且将异常传递回平台取消了核心   操作。这导致核心操作的回滚。在   此外,任何具有以下功能的事件前或事件后注册插件   尚未执行,并且由同一事件触发的任何工作流程   注册该插件将无法执行。

如果您将事件中心用作某种日志记录,我建议您不要这样做,因为事务回滚可能会清除所有日志。

您可以考虑将日志记录置于CRM之外。或者,如果必须在CRM中使用它,则将数据发送到无法先回滚的位置。例如插件>外部Web服务> CRM。

答案 1 :(得分:0)

您可以使用异步插件。异步步骤仅在同步插件管道完成而没有错误时调用。