我们有一个术后同步插件,可将事件数据写入eventhub。但是,我们有一些自定义功能,这些功能使用ExecuteTransactionrequest运行批处理操作。
如果在ExecuteTransactionrequest下运行的事务失败,则会回滚,但是无法回滚写入eventhub的数据。
是否有一种方法可以控制后操作插件的启动,以便在所有操作完成后启动它们。
答案 0 :(得分:0)
您在这里的选择有所限制,您可以尝试进行预验证。
预验证-管线中的阶段,用于 在主系统操作之前执行。在此注册的插件 可能在数据库事务之外执行阶段。的 预验证阶段发生在执行安全检查之前 验证主叫或登录用户具有正确的权限 执行预期的操作。
操作前-管线中要执行的插件阶段 在主系统运行之前。在此阶段注册的插件 在数据库事务中执行。
后期操作-管线中要插入的阶段 在主操作之后执行。在此阶段注册的插件 在数据库事务中执行。
Inclusion in database transactions
在数据库事务期间执行的任何注册的插件 并且将异常传递回平台取消了核心 操作。这导致核心操作的回滚。在 此外,任何具有以下功能的事件前或事件后注册插件 尚未执行,并且由同一事件触发的任何工作流程 注册该插件将无法执行。
如果您将事件中心用作某种日志记录,我建议您不要这样做,因为事务回滚可能会清除所有日志。
您可以考虑将日志记录置于CRM之外。或者,如果必须在CRM中使用它,则将数据发送到无法先回滚的位置。例如插件>外部Web服务> CRM。
答案 1 :(得分:0)
您可以使用异步插件。异步步骤仅在同步插件管道完成而没有错误时调用。