校验规则引擎

news/2024/10/17 1:27:39/

目录

一 架构设计图

二 表设计及数据展示

 三 顶层接口

 四 压测结果

五 其他规则引擎比较


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

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

 商业价值: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]


http://www.ppmy.cn/news/47317.html

相关文章

数字IC笔试面试常考问题及答案汇总(内含各岗位大厂题目)

经历了无数的笔试面试之后,不知道大家有没有发现数字IC的笔试面试还是有很多共通之处和规律可循的。所以一定要掌握笔试面试常考的问题。 数字IC笔试面试常考问题及答案汇总(文末可领全部哦~) 验证方向(部分题目) Q1…

ZLMediaKit在Windows上实现Rtmp流媒体服务器以及模拟rtmp推流和http-flv拉流播放

场景 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放: 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_霸道流氓气质的博客-CSDN博客 上面讲…

scipy与MATLAB中四元数的不同之处

摘要 除了参数顺序不同scipy:(x,y,z,w),matlab(a,b,c,d)以外,scipy.spatial.transform.Rotation中的四元数是Shuster’s convention(JPL convention),与MATLAB中的四元数定义完全不同!!! scipy scipy.sp…

轻松掌握FFmpeg编程:从架构到实践

轻松掌握FFmpeg编程:从架构到实践 (Master FFmpeg Programming with Ease: From Architecture to Practice 引言 (Introduction)FFmpeg简介与应用场景 (Brief Introduction and Application Scenarios of FFmpeg)为什么选择FFmpeg进行音视频处理 (Why Choose FFmpeg…

java基础——迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。 想要遍历Collection集合&…

【unity实战】随机地下城生成2——绘制地图Tilemap的使用及一些技巧的使用(含源码)

绘制房间 修改素材配置 切割图片 绘制瓦片地图 先新建我们的调色盘,保存好位置 拖入我们刚才切片好的素材 在房间预设体创建我们的瓦片地图 绘制地图的小技巧 点选移动适合的瓦片移动到位置上绘画 框选复制已经绘制好的地图,快捷键i

rust的并发以及kv server网络处理和网络安全部分

理解并发和并行 Golang 的创始人之一,对此有很精辟很直观的解释:并发是一种同时处理很多事情的能力,并行是一种同时执行很多事情的手段。 我们把要做的事情放在多个线程中,或者多个异步任务中处理,这是并发的能力。在多…

APP渗透—MobSF安全评估、frida、r0capture抓包

APP渗透—MobSF安全评估、frida、r0capture抓包 1. 前言2. 补充AppInfoScanner相关内容3. MobSF安全评估3.1. 下载MobSF3.2. 安装Docker3.2.1. 查看Linux内核版本3.2.2. 更新yum包3.2.3. 安装Docker软件包3.2.4. 设置yum源3.2.5. 查看Docker版本3.2.6. 安装Docker3.2.7. 设置Do…