当前位置:网站首页>配置筛选机
配置筛选机
2022-07-01 21:45:00 【haohaounique】
在文章中,比较多的灵感来源于筛选谷物花生,筛选机等筛选机的结构
比较多的开发工作中,涉及业务分支和同一业务不同逻辑的,会比较适合下面模型:从大到小(漏斗结构) 或从小到大(倒漏斗结构) 或一次性选择(选择维度,获取维度参数)

维度:可以统一看成一个关键的参数或者多个参数组成的参数
1.基于A维度下,做选择或者在维度下设计维度参数
2.不做维度配置,但根据维度来做相同业务逻辑的不同操作
具体表设计如下:
配置同一业务的顶级类-->具体业务类--->获取具体的处理模型--->获取具体的参数表达式
create table check_expression
(
id int auto_increment
primary key,
business_type varchar(20) null comment '业务类型',
check_model varchar(20) null comment '校验模型',
check_expression text null comment '表达式',
check_expression_name varchar(200) null comment '表达式名称',
status tinyint default 1 null comment '0-失效 1-生效',
create_time datetime null comment '创建时间',
create_by varchar(60) null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '校验表达式';
create table check_config
(
id int auto_increment
primary key,
business_key varchar(100) null comment '业务key',
business_type varchar(20) null comment '业务类型',
business_name varchar(100) null comment '业务名称',
check_word varchar(100) null comment '校验关键字',
check_word_name varchar(100) null comment '校验关键字名称',
check_model varchar(20) null comment '校验模型',
check_model_name varchar(200) null comment '校验模型名称',
check_class varchar(500) null comment '业务类',
check_expression text null comment '校验表达式',
check_order tinyint default 1 null comment '校验顺序',
check_msg text null comment '提示语',
status tinyint default 1 null comment '0-无效 1-生效',
fresh_status tinyint default 0 null comment '0-未刷新 1-刷新中,2-已刷新',
try_times tinyint default 0 null comment '刷新次数,线程池处理',
fresh_time datetime default CURRENT_TIMESTAMP null comment '上次刷新时间',
create_time datetime null comment '创建时间',
create_by varchar(60) not null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '校验配置' auto_increment = 9;
create index id_business_key
on check_config (business_key);
create index id_business_type
on check_config (business_type);
create index id_check_model
on check_config (check_model);
create index id_create_by
on check_config (create_by);
create index id_fresh_status
on check_config (fresh_status);
create index id_status
on check_config (status);
create table business_class
(
id int auto_increment
primary key,
business_type varchar(20) null comment '001-校验',
business_model varchar(20) null comment '业务模型',
business_name varchar(200) null comment '业务名称',
business_class varchar(500) null comment '业务类',
status tinyint default 1 null comment '生效状态',
create_time datetime null comment '创建时间',
create_by varchar(60) null comment '创建人',
update_time datetime null comment '更新时间',
update_by varchar(60) null comment '更新建人'
)
comment '业务配置类' auto_increment = 9;
create index id_business_model
on business_class (business_model);
create index id_business_type
on business_class (business_type);
create index id_status
on business_class (status);核心代码(此处仅展示配置化校验代码):
思想:第一步获取核心配置
第二步:根据配置做业务处理
List<CheckConfig> checkList = checkConfigService.getCheckList(map, map.get("business_key"));
boolean checkResult = checkConfigService.checkConfigList(checkList, map); public boolean checkConfigList(List<CheckConfig> checkList, Map<String, String> map) {
if (CollectionUtils.isNotEmpty(checkList)) {
for (CheckConfig checkConfig : checkList) {
ICheckService checkService = CACHE_CHECK_CLASS.getIfPresent(checkConfig.getCheckClass());
if (checkService == null) {
checkService = SpringBeanUtils.getBeanByName(checkConfig.getCheckClass(), ICheckService.class);
if (checkService == null) {
throw new BusinessException(500, CommonUtils.getStringBuilder().append("checkConfigList bean未配置:").append(checkConfig.getCheckClass()).toString());
}
CACHE_CHECK_CLASS.put(checkConfig.getCheckClass(), checkService);
}
boolean param = checkService.checkParam(checkConfig, map);
if (param) {
map.put("check_code", CODE_500);
map.put("check_result", Boolean.FALSE.toString());
map.put("check_msg", checkConfig.getCheckMsg());
map.put("remark", CHECK_NOTICE_MSG);
return true;
}
}
}
return false;
}以上文章读懂不是很简单也不是很难;能够理解对于开发会是非常便捷的,不仅能优化别人同时也能优化自己(毕竟在实际项目中运用)
边栏推荐
- 【juc学习之路第8天】Condition
- JS how to get a list of elements in a collection object
- 小 P 周刊 Vol.11
- 【MySQL】索引的创建、查看和删除
- leetcode - 287. 寻找重复数
- Go — 相关依赖对应的exe
- One of the basic learning of function
- 基于三维GIS的不动产管理应用
- CNN convolution neural network principle explanation + image recognition application (with source code) [easy to understand]
- linux下清理系统缓存并释放内存
猜你喜欢
随机推荐
【juc学习之路第8天】Condition
An operation tool used by we media professionals who earn 1w+ a month
灵动微 MM32 多路ADC-DMA配置
The leader of the cloud native theme group of beacon Committee has a long way to go!
按照功能对Boost库进行分类
Smart micro mm32 multi-channel adc-dma configuration
Aidl basic use
Business visualization - make your flowchart'run'up
EasyExcel 复杂数据导出
A debugging to understand the slot mechanism of redis cluster
Internet of things RFID, etc
Indicator trap: seven KPI mistakes that it leaders are prone to make
The difference between NiO and traditional IO
基于三维GIS的不动产管理应用
Clean up system cache and free memory under Linux
Count the number of each character in the character
比较版本号[双指针截取自己想要的字串]
QT版本华睿相机的Demo程序实现
"The silk road is in its youth and looks at Fujian" is in the hot collection of works in the Fujian foreign youth short video competition
PHP reflective XSS, reflective XSS test and repair








