U9BE插件事务提交后处理
业务场景:将U9的基础档案数据同步到第三方系统,同步方式是U9中新建档案保存时将实体ID调用第三方系统消息接口通知到第三方系统,第三方系统接收到消息后,调用U9的接口根据ID查询实体数据。
问题:在实体的Inserted事件中发送消息给第三方系统,但是事务可能还没有提交到数据,第三方调用接口来查询的时候很可能查不到任何数据,在此种情况下,就需要在BE插件中判断当事务提交成功后再发送消息给第三方可以获取数据的标识。获取实体提交成功的demo:(也可参考附件示例,这种方案的缺点是如果报错无法反馈到UI)
Demo:
//定义个全局变量缓存实体,
UFSoft.UBF.Transactions.UBFTransactionContext.Current.Committed +=
new System.Transactions.TransactionCompletedEventHandler(BusinessTransactionSucess);//引用微软的System.Transactions.dll
private void BusinessTransactionSucess(object obj, System.Transactions.TransactionEventArgs e)
{
//这个方法里面,当前事务已经完成了,且事务执行是成功的,数据库操作已经全部结束了, 取出全局变量的实体,写真正的业务逻辑,如调用接口等
}
在方法BusinessTransactionSucess中发送消息,实体可定义成全部变量。
//事务终止
UFSoft.UBF.Transactions.UBFTransactionContext.Current.Aborted +=
new System.Transactions.TransactionCompletedEventHandler(BusinessTransactionAborted);

浙公网安备 33010602011771号