二开案例.服务插件.元数据异常检测之主表被改

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

二开案例.服务插件.元数据异常检测之主表被改

【应用场景】

WebApi保存单据,返回结果提示保存成功,实际并未成功,因为系统中查不到对应的数据。

原因分析:

返回结果说,那数据应该是保存成功了,找不到可能原因有:

<1>账套搞错了。

<2>奇怪的插件逻辑把刚生成的单据删掉了。

<3>元数据被错误的改坏了,例如主表表名被改了,数据被存到意想不到的表里去了。


【案例演示】

客户,WebApi保存,如果主表不对,拦截保存操作,写异常日志。


【实现步骤】

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

using Kingdee.BOS.Core.DynamicForm.PlugIn;

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

using Kingdee.BOS.Log;

using Kingdee.BOS.Util;

using Newtonsoft.Json;

using System;

using System.ComponentModel;

using System.Linq;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】元数据异常检测之主表被改

    /// </summary>

    [Description("【服务插件】元数据异常检测之主表被改"), HotUpdate]

    public class CheckMetaForTableNameServicePlugIn : AbstractOperationServicePlugIn

    {

        public override void EndOperationTransaction(EndOperationTransactionArgs e)

        {

            base.EndOperationTransaction(e);

            if (this.FormOperation.OperationId != 8)

            {

                // 只处理保存操作

                return;

            }

            var formId = this.BusinessInfo.GetForm().Id;

            var tableName = this.BusinessInfo.GetEntity(0).TableName;

            if (formId.EqualsIgnoreCase("BD_Customer"))

            {

                // 表名不匹配,或者内码长度有问题,都视之为异常数据

                if (!tableName.EqualsIgnoreCase("T_BD_CUSTOMER") || e.DataEntitys.Any(o => o[0].ToString().Length < 8))

                {

                    // 捕获异常后写文件日志

                    var data = JsonConvert.SerializeObject(e.DataEntitys);

                    var log = string.Format("元数据异常,主表被改:业务对象标识:{0},主表名:{1},数据包:{2}", formId, tableName, data);

                    //Logger.Error("DBG", log, null);

                    // 抛出异常中断保存操作

                    throw new Exception(log);

                }

            }

        }

    }

}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展客户,保存操作注册服务插件,保存元数据,开发完毕。


【功能验证】

<1>BOSIDE修改客户的主表表名,登录业务站点,WebApi测试保存客户,保存失败,操作被拦截。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.服务插件.元数据异常检测之主表被改

【应用场景】WebApi保存单据,返回结果提示保存成功,实际并未成功,因为系统中查不到对应的数据。原因分析:返回结果说,那数据应该是保存...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息