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

【应用场景】
操作内部是一个原子操作,有事务保护,事务内的数据库操作,要么一起成功,要么一起失败,操作事务失败回滚后,有时候希望增加一些例外处理,例如,写入一些上机日志。
【案例演示】
采购订单,保存操作,通过服务插件强制使得操作失败,但仍然保存上机操作日志。

【实现步骤】
<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
二开案例.服务插件.操作事务失败回滚后增加例外处理
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



