场景
之前介绍了Easy Rules作为Java一款轻量级的规则引擎,使得研发更加注重于纯业务开发,提高开发效率。
这一篇,主要是围绕,规则配置数据,外置于数据库Mysql的实现。
思路
1、Mysql存储
新建表t_biz_rule、t_biz_rule_compose分别存储规则定义、规则组合定义
2、构建Rules
Mysql中的Rule、RuleCompose转换成RuleDefinition对象
定义Rules注册工具类Helper,为每个RuleCompose注册
3、定义Facts以及RulesEngine
实现
1、Mysql实现规则配置的CRUD
定义对象BizRule
@Data
@Accessors(chain = true)
public class BizRule implements Serializable {
/**
* 主键ID
*/
private Long id;
/**
* 规则组
*/
private String groupCode;
/**
* 规则名称
*/
private String name;
/**
* 规则描述
*/
private String description;
/**
* 规则权重
*/
private int priority;
/**
* 规则组合类型(compositeRuleType)
* {@link CompositeRuleTypeEnum}
*/
private Integer compositeType;
/**
* 状态 0有效-1无效
*/
private Integer status;
/**
* 创建时间
*/
private Date createTime;
/**
* 变更时间
*/
private Date updateTime;
}
定义对象BizRuleCompose
@Data
@Accessors(chain