电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.服务插件.操作事务失败回滚后增加例外处理

来源:金蝶云社区作者:金蝶2024-09-2315

二开案例.服务插件.操作事务失败回滚后增加例外处理

【应用场景】

操作内部是一个原子操作,有事务保护,事务内的数据库操作,要么一起成功,要么一起失败,操作事务失败回滚后,有时候希望增加一些例外处理,例如,写入一些上机日志。


【案例演示】

采购订单,保存操作,通过服务插件强制使得操作失败,但仍然保存上机操作日志。


【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Log;

using Kingdee.BOS.Util;

using System.Collections.Generic;

using System.ComponentModel;

using System.Transactions;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】操作事务失败回滚后增加例外处理

    /// </summary>

    [Description("【服务插件】操作事务失败回滚后增加例外处理"), HotUpdate]

    public class RollbackTranAndDoOtherSaveOperationServicePlugIn : AbstractOperationServicePlugIn

    {

        public override void EndOperationTransaction(EndOperationTransactionArgs e)

        {

            base.EndOperationTransaction(e);

            var operationName = this.FormOperation.OperationName.ToString();

            using (var trans = new KDTransactionScope(TransactionScopeOption.Suppress))

            {

                // TODO:希望不受外围事务影响的业务逻辑,可以放在此代码块中

                // 即使事务失败,也写入上机操作日志

                var logs = new List<LogObject>();

                foreach (var obj in e.DataEntitys)

                {

                    var log = new LogObject();

                    log.pkValue = obj[0].ToString();

                    log.Description = string.Format("单据编号为“{0}”的{1},{2}失败!", obj[this.BusinessInfo.G

二开案例.服务插件.操作事务失败回滚后增加例外处理

【应用场景】操作内部是一个原子操作,有事务保护,事务内的数据库操作,要么一起成功,要么一起失败,操作事务失败回滚后,有时候希望增加...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信