什么是规则引擎?
所谓的规则引擎就是一组规则加上一组动作, 当某种规则被满足后触发某个动作
业务痛点
多变的需求
产品的需求千变万化,代码需要不断的修改
复杂的业务逻辑
由于需求和业务的复杂性,代码中很可能会出现层层嵌套的if else语句, 每次修改代码,都要仔细阅读上下文, 所有的if else都要考虑,这显然会增加开发成本, 同时也很容易出错
临时修改业务逻辑
如果产品需要临时修改业务逻辑, 比如某一天使用一种特殊的业务逻辑, 之后又恢复正常, 没有规则引擎的话, 就需要进行两次发布, 大家都知道, 发布的成本是很高的, 需要 stop the world.
紧急修改业务逻辑
如果线上出现一些预想之外的场景, 需要紧急修改业务逻辑, 那么此时就需要进行一次额外的发布, 对于大型项目的发布可能持续数个小时, 期间无法对外提供服务
机器学习, 动态规则
假如我们的业务规则, 是通过机器学习来制定的, 支持动态的调整规则, 那么硬编码的方式显然是不适合的
使用规则引擎解耦业务代码
主要目的是将if else 从业务代码中解耦出来.
业务代码中少不了if else语句, 当业务简单固定的时候, 使用if else没有任何问题,如下所示:
if(a==0){
action1();
}
但是如果if语句层层嵌套的话, 会让业务逻辑很难看懂, 后面接手的开发人员都不敢改这部分代码,如下所示:
if (a == 0) {
action1();
} else {
if (b == 1) {
action2();
} else {
if (c==3){
if (d==4){
action3();
}
}
}
}
大家看到这部分代码估计会想吐血, 即使是自己写的, 也会有种看不懂的感觉, 当我们引入规则引擎的时候, 就会变成下面这个样子:
规则引擎.png这样通过规则引擎, 将规则抽离出来, 这种规则就比层层嵌套的if else显得更加直观, 项目代码的可读性和可维护性将会大大提高
规则引擎适用的场景
-
积分规则
-
打码平台选择
-
运营商资费套餐
-
工资计算
-
绩效指标
-
为订单选取最优优惠券
-
风险控制
-
预警系统
场景的主要特征, 本身业务逻辑的分支比较多, 错综复杂, 并且这些规则在未来是可能或者很可能改变的, 引入规则引擎之后,可以通过修改规则来修改业务逻辑, 这会大大降低业务代码的复杂性
网友评论