drools:业务规则管理系统

Drools是一款基于Java的开源规则引擎,全称为业务规则管理系统,实现了将业务决策从应用程序中分离出来。

drools:业务规则管理系统

什么场景下需要使用Drools

drools:业务规则管理系统

信用卡申请

比如说办信用卡,年龄、学历、薪水、和是否有车和房,这些数据会作为用户是否有申请资格的判定条件,假如有三个规则如下:

规则一:既没房也没车,学历大专以下,月薪少于5000,申请拒绝

规则二:既没房也没车,学历大专以下,但月薪大于10000,申请通过

规则三:既没房也没车,学历本科以上,月薪大于3500,小于5000,申请通过

审核通过后,又有三个规则规定发放申请额度:

规则一:学历大专以下,月薪大于10000,额度10000

规则二:学历本科以上,月薪小于5000,额度10000

规则三:学历本科以上,月薪大于10000,额度15000

传统实现方式,在业务代码中需要植入大量if else判断:

Public boolean check(User user){If(!user.isHouse && !user.isCar &&user.xueli<dazhuan && user.xinzi < 5000)Return false;Else if(!user. isHouse && !user.isCar &&user.xueli<dazhuan && user.xinzi >=1000)Return true;Else if(!user. isHouse && !user. isCar &&user.xueli>benke &&,3500<user.xinzi <5000)Return true;}

 Public int check(User user){If(user.xueli<=dazhuan && user.xinzi >=10000)Return 10000;Else if(user.xueli>=benke && 3500<user.xinzi <5000)Return 10000;Else if(&user.xueli>=benke &&,user.xinzi >10000)Return 15000;}

如果人行出具新的金融政策,申请要求增加条件,那我们就必须修改或者新增if else的代码。改这个代码有三个弊端

1、硬编码实现业务规则代码难以维护

2、硬编码使业务代码和规则高耦合,难以应对变化

3、业务规则一旦发生变化,就要修改代码,重启应用

面对上面的业务场景,有个好的实现方式就是drools规则引擎

drools:业务规则管理系统

drools规则引擎的优势:

1、业务规则和系统代码分离

2、不重启服务的情况下,可随时对业务规则进行扩展和维护

3、减少硬编码业务规则的成本和风险

4、规则实现变得更加清晰

drools实战:

1、引入drools-compiler.jar

2、drools API开发步骤如下:

drools:业务规则管理系统

3、规则引擎主要包括三个方面:规则模板、基准数据、业务数据

drools:业务规则管理系统

1、规则模板

/***审核申请*/rule "pass_@{row.rowNumber}"   no-loop true    lock-on-active true    salience 99  when   user : User(xueli>("@{xueli}"), xinshui>("@{xinshui}"),isHouse.equals("@{isHouse}"), isCar.equals("@{isCar}"))  thenSystem.out.println("user=" user);   user.setPass(true);end 

2、基准数据,通过ObjectDataCompiler.compile初始化到规则中;

3、业务数据fact,通过ksession.insert(fact)传给规则做比较

drools:业务规则管理系统

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年12月1日 上午9:55
下一篇 2022年12月1日 上午10:09

相关推荐