目录
一 架构设计图
二 表设计及数据展示
三 顶层接口
四 压测结果
五 其他规则引擎比较
适用场景:校验场景以及使用该思想进行可视化配置化开发(可大幅提高开发效率,长期维护简单)
例如:履约系统下单中的校验,称重过程中的校验,扫描枪后台校验、数据入库过程中的校验等
商业价值: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]