> 文章列表 > 校验规则引擎

校验规则引擎

校验规则引擎

目录

一 架构设计图

二 表设计及数据展示

 三 顶层接口

 四 压测结果

五 其他规则引擎比较


适用场景校验场景以及使用该思想进行可视化配置化开发(可大幅提高开发效率,长期维护简单)

 例如:履约系统下单中的校验,称重过程中的校验,扫描枪后台校验、数据入库过程中的校验等

 商业价值:one do all    ,减少敏捷开发过程中的研发,发布,测试环节(针对模型不变情况),大幅减少研发人力投入,长期维护成本(比如你能找一下某个业务的校验逻辑么......面对代码抓狂吧)

不适宜场景:依赖实时查询DB较高场景及外部系统依赖较高情况(设计旨在高并发)

一 架构设计图

重点在模型抽象方面,可根据实际业务需求进行处理;最主要目的达到按需校验

模型:非空、长度、普通替换、正则替换、包含、起始包含、大小比较、正则与、正则或、自定义校验,转换

二 表设计及数据展示

 

主表设计,其他表设计暂不列出
create table check_config
(id               bigint auto_increment comment '主键id'primary key,check_key        varchar(100)                          null comment '校验key',check_type       varchar(20)                           null comment '校验类型',check_name       varchar(20)                           null comment '校验名称',check_word       varchar(100)                          null comment '校验字段',check_model      varchar(20)                           null comment '校验模型',check_class      varchar(500)                          null comment '校验类',check_expression text                                  null comment '校验表达式',check_order      tinyint     default 1                 null comment '校验顺序 默认1,系统字段校验为0',check_msg        text                                  null comment '校验提示',status           tinyint     default 1                 null comment '默认状态 启用-1 0-不启用',create_time      datetime    default CURRENT_TIMESTAMP null comment '创建时间',create_by        varchar(60) default 'system'          not null comment '创建人',update_time      datetime    default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',update_by        varchar(60)                           null comment '更新建人'
)comment '校验配置';

 三 顶层接口

 四 压测结果

 测试结果待具体场景以及代码调优方面而定,本测试结果仅供参考

单机tomcat   jemeter压测

1线程  10秒 实际请求数:10537

8线程  10秒 实际请求数  46866 

postman验证情况

五 其他规则引擎比较

相比开源的drools 等规则引擎工具优势,无须编写复杂的表达式,另外项目定制化开发,可随意扩展

另外有些框架采用SPEL表达式,本框架下采用最原始的数学表达式,例如区间校验仅需填写区间表达式和值,即可判断是否满足区间,针对后续字段的变化,只需要调整最初封装字段的名称而无需全局修改

如 [3,8]  user_age=9  校验结果  user_age is limited [3,8]