规则引擎出现的原因?
目前流行的行业,以金融类项目为例,风险控制系统、反欺骗系统、决策引擎等也成为常用且经常变化的业务。这类经常变更的业务让公司运营和程序员都非常头痛。对于复杂多变的业务规则,如果按照传统的逻辑思维,通常的做法首先要传进去参数,通过if…else或者通过SQL查询条件中的动态添加判断,如MyBatis中的<if>进行业务逻辑判断。其次获取到接口执行完毕后的结果。会出现以下弊端:
(1)增加开发人员与测试人员的工作量。
(2)部门间需要更加频繁地进行业务沟通,时间成本增加。
(3)增加用人成本,造成公司损失。
规则引擎的出现就完美的解决了这些问题。
Drools简要概述
Drools是一款基于Java语言的开源的规则引擎,可以将复杂且多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件或者特定的存储介质中(eg:数据库表),使得业务规则的变更不需要修正项目代码,重启服务器就可以在线上环境立即生效。可以理解为动态代码(动态业务)。
规则引擎的核心目的之一就是将业务决策从程序代码中分离出来,使其代码与业务解耦合。通过特定的语法内容编写业务模块,由API进行解析并对外提供执行接口,再接收输入数据、进行业务逻辑处理并返回执行结果。引用规则引擎后的效果如图1-1所示。
应用场景
(1) 适用的行业分类。
①金融行业——黑名单、白名单、风险投保。
②医疗行业——合理输血、合理用药。
③电商行业——促销平台。
(2)适用的系统分类。
①风险控制系统——风险贷款、风险评估系统。
②反欺诈项目——银行贷款、征信验证。
③决策平台系统——财务计算。
④促销平台系统——满减、打折、加价购。
作用与优点
(1)业务规则与系统代码分离,实现代码与业务的解耦合。
(2)提供领域语言(自然语言),使业务人员更容易理解。
(3)提供了可视化页面(指KIE-WB)操作,使用更简单。
(4)大大提高了对复杂逻辑代码的可维护性。
(5)可随时对业务进行扩展和维护。
(6)符合公司对敏捷性或者迭代性开发的策略。