寻源二开指南--数据校验管理
1. 数据校验管理
1.1 业务场景简介
在寻源管理中,大部分的核心校验逻辑,都被抽象为数据校验插件。通过“数据校验管理”进行启用/禁用,以实现不同客户的个性化校验需求。同一单据+同一操作下的数据校验插件,将作为一个动态责任链,依次执行,以实现一组相关校验功能。
系统预置了大部分常用的数据校验插件,例如:
…
二开可以增加新的数据校验插件,以实现客户个性化校验需求。
1.2 简要实现方案
步骤 | 开发内容 | 备注 |
1 | 数据校验插件 禁用 | 系统配置 |
2 | 数据校验插件 启用 | 系统配置 |
3 | 增加 数据校验插件 | 代码开发 |
4 | 注册 通用校验插件 | 应用注册 |
5 | 注册 数据校验插件 | 应用注册 |
6 | 替换 数据校验插件 | 系统配置 |
1.3 详细开发步骤及示例代码
下面以 “投标单--撤标--项目是否已开标 校验” 为例。该数据校验在投标单撤标(即反审核)时,校验如果该寻源项目已开标,则不允许反审核,插件注册界面如下:
1.3.1 禁用 数据校验插件
注意:系统预置的扩展插件,一般不允许禁用,如果需要禁用,请与标准产品研发团队确认后再禁用。
1 直接点击禁用,系统提示:
2 将该数据校验插件设置为允许禁用,并保存:
保存后,该插件才可以禁用。
1.3.2 启用 数据校验插件
数据校验插件的启用没有限制,直接点“启用”即可。
1.3.3 新增 新的数据校验插件
该数据校验在投标单撤标(即反审核)时,校验如果该寻源项目已开标,则不允许反审核。
需要实现接口:ISrcValidator,代码如下:
/** * 投标单--反审核--已开标 校验 * * @author rd_fumin_huang * */ public class TndTenderBillBidOpenValidator implements ISrcValidator { private static final long serialVersionUID = 1L;
@Override public void validate(SrcValidatorData validatorData) { long projectId = validatorData.getBillObj().getDynamicObject(SrcCommonConstant.PROJECT).getLong(BillAssistConstant.ID); // 项目相同 QFilter qFilter = new QFilter(SrcCommonConstant.ID, QCP.equals, projectId); // 已开标 qFilter.and(SrcCommonConstant.OPENSTATUS, QCP.large_than, "1");
if (QueryServiceHelper.exists(SrcMetadataConstant.SRC_PROJECT, qFilter.toArray())) { validatorData.setSucced(false); validatorData.setMessage(ResManager.loadKDString("该项目已开标,不允许撤回!", "TndTenderBillBidOpenValidator_0", "scm-tnd-opplugin")); } } } |
注意:目前二开增加的数据校验,只能基于标准产品提供的接口ISrcValidator,如果需要实现新的接口,请标准产品研发团队联系。 |
1.3.4 注册 通用的校验插件
如果要为某个操作加上数据校验功能,需要注册通用校验插件。寻源大部分单据上的提交/撤销、审核/反审核等操作上,标准产品等已注册了通用校验插件,如果没有注册,二开可以注册该插件。
寻源通用插件:kd.scm.pds.common.validator.SrcOperationValidate
补充说明:
如果在数据校验中,需要用到当前 model ,可以用 另外一个表单插件(注册到表单编辑插件中):
kd.scm.pds.common.validator.SrcOperationValidateForView
寻源项目--通用操作校验(从表单发起,继承自 AbstractFormPlugin)
这两种类型的插件,只能二选一,避免重复触发,二者数据校验的实现方式完全一样。
1.3.5 注册 数据校验插件
将新增的数据校验插件,注册到 数据校验管理上,默认为启用,注册后即刻生效。
序号 | 字段名称 | 字段描述 |
1 | 名称 | 该数据校验实现的功能说明,便于理解 |
2 | 业务对象 | 该数据校验对应的业务单据 |
3 | 操作类型 | 该数据校验对应的业务单据的某个操作 |
4 | 数据校验插件 | 该数据校验插件的全类名 |
5 | 校验结果说明 | 校验不通过时,为用户显示的提示信息 |
6 | 适用范围—寻源方式 | 该数据校验在哪些寻源方式上生效,可多选,为空时表示适用所有寻源方式 |
7 | 适用范围—寻源流程 | 该数据校验在哪些寻源流程上生效,可多选,为空时表示适用所有寻源流程 |
1.3.6 替换 数据校验插件
当标准产品的某个数据校验插件不符合要求时,二开可替换新的数据校验插件。
1) 将标准的数据校验插件禁用;
2) 新增和注册新的数据校验插件。
1.4 参考开发工作量(人/天)
步骤 | 开发内容 | 估计开发人天 |
1 | 数据校验插件 禁用 | |
2 | 数据校验插件 启用 | |
3 | 增加 数据校验插件 | 0.5~1.0 |
4 | 注册 通用校验插件 | |
5 | 注册 数据校验插件 | |
6 | 替换 数据校验插件 |
合计:每个数据校验插件约0.5~1.0开发人天。
寻源二开指南--数据校验管理
本文2024-09-22 23:57:33发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-136363.html