# business-util
**Repository Path**: xiaokuntt/business-util
## Basic Information
- **Project Name**: business-util
- **Description**: 业务工具集,为解决复杂的业务规则和业务配置,提供一种工具类解决方案,提高开发效率和代码可读性
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-12-11
- **Last Updated**: 2025-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# business-util
## 介绍
业务工具集,为解决复杂的业务规则和业务配置,提供一种工具类解决方案,提高开发效率和代码可读性
## 软件架构
该工具库主要由以下核心组件构成:
- PriorityAssembler:优先级装配器,用于构建优先级匹配规则
- PriorityFetcher:优先级获取器,执行匹配逻辑
- PriorityMatchFunction:优先级匹配函数,定义匹配规则
- PriorityMatchProcessor:优先级匹配处理器,处理匹配流程
- PriorityMatchProcessorTree:优先级匹配处理器树,构建匹配树结构
- PriorityMatchResult:匹配结果对象
- PriorityHandler:优先级处理接口
- PriorityMatchType:匹配类型枚举
- PriorityMode:优先级模式枚举
## 安装教程
1. 将项目克隆到本地:`git clone https://gitee.com/xiaokuntt/business-util`
2. 使用Maven构建项目:`mvn clean install`
## Maven使用(2025年07月31日 最新版)
```java
cn.ykccchen
business-util
1.0.1
```
## 使用说明
1. 创建优先级匹配规则
```java
PriorityAssembler assembler = PriorityAssembler.from(Source.class, Config.class, Key.class);
```
2. 初始化配置,将配置进行加载
```java
assembler.initConfig(configList);
```
3. 添加匹配规则
```java
//默认为相等的匹配规则
assembler.addPriorityMatchFunction("规则名称", source -> source.getKey(), config -> config.getKey());
//如果是正则或者区间匹配,可以使用boolean匹配模式
priorityAssembler.addPriorityMatchFunction("规则名称" , source -> source.getKey(), config -> config.getKey() , (source, config) -> {
if (config instanceof Range && source instanceof Integer) {
Range range = (Range) config;
return range.contains((Integer) source);
}
return false;
})
```
4. 设置优先级处理器模式,可以自定义,内置2种模式,不选择默认 PriorityMode.NUMBER_OF_MATCHES
```java
/**
* 配置值数量优先
* PriorityMode.NUMBER_OF_MATCHES
* A B C D 4个配置维度
* A C D 优先级大于 A B
* A B C 优先级大于 A B D
* 3个维度一定大于2个维度
*/
assembler.initPriorityHandler(PriorityMode.NUMBER_OF_MATCHES);
/**
* 绝对值优先
* A B C D 4个配置维度
* A B 优先级大于 A C D
* A B C 优先级大于 A B
* A B C 优先级大于 A B D
* 绝对价值维度
*/
assembler.initPriorityHandler(PriorityMode.ABSOLUTE_VALUE);
```
5. 创建优先级获取器
```java
//默认会做剪枝,删除不存在的优先级校验项
PriorityFetcher fetcher = assembler.create();
// 优先级匹配初始化后可以转换为树,非必须项,当存在叶子节点数据 >= 8 时,才比较有性价比, priorityFetcher.getProcessorList() >= 8
PriorityFetcher