【背景】

        事情是这样的,今天接到某私有云客户线上问题反馈,说有异常数据(基础资料)需要删除,开始不以为然,答复说天梯提数据库脚本修复申请。

        后来,现场反馈说,客户注重线上数据安全,不允许随意执行脚本篡改数据库的数据,只能通过业务系统上的业务操作进行数据修改处理,确实需要修改数据的需要走审批,等批下来估计黄花菜都凉了。因为基础资料在删除时会做引用校验,但是由于平台在交互上的不友好,根本无法知道是被哪里引用,所以,现场实施找到了总部这边协助。

【解决方案】

通过扩展元数据,添加KS脚本插件,通过DeleteServiceHelper中的delete接口删除,具体实现如下:

主要的逻辑是:通过界面操作触发点击事件调用KS脚本代码删除指定的数据。

第一步:在元数据列表界面的工具栏添加一个操作按钮:

image.png


第二步:在列表界面的插件配置界面注册脚本:

image.png


第三步:KS代码编写

require("kd.bos.servicehelper.operation.DeleteServiceHelper");
require("kd.bos.form.operate.FormOperate");
require("kd.bos.orm.query.QFilter");


/**
 * @author 高峰
 * @date 2022-12-15
 */
var plugin = new ListPlugin({
    registerListener: function(e) {
        //监听工具栏,此处需要特别注意toolbarap 这个标识是固定的,不是给按钮添加监听
        this.addItemClickListeners("toolbarap");
    },
    itemClick: function(e) {
        //获取触发事件的按钮标识
        var itemKey = e.getItemKey();
        //自定义按钮标识dce_delete
        if ("dce_delete".equals(itemKey)) {
            var filter = new QFilter("id", "=", 1568878184081197056);
            DeleteServiceHelper.delete("bd_project", filter);
        }
    }
});