在什么情况下需要使用Drools信用卡申请

例如,办信用卡时,年龄、学历、工资、是否有车和房,这些数据都是判断用户是否有申请资格的条件。 假设有三条规则,如下所示

规则1:无房无车,学历短大以下,月薪低于5000,拒绝申请

规则2:)无房无车,学历在大专以下,但月薪超过10000,申请通过

规则3:无房无车,学历本科以上,月薪超过3500,低于5000,申请通过

审查通过后,有三条规则规定发放申请额

规则1:学历短大以下,月薪过10000,额10000

规则2 :学历本科以上,月薪低于5000,额10000

规则3 :学历本科以上,月薪10000以上,额15000

传统的实现方式需要在业务代码中嵌入大量的if else判断。 

公共布尔检查(用户) if (! user.isHouse! user.isca ruser.xueli=1000 (返回真; Else if (! user. isHouse! user. isCar user.xuelibenke,3500公共插入检查(useruser ) if (user.xueli=dazhuanuser.xinzi=10000 ) Return 10000 }如果横向发行新的金融政策,申请增加条件,我们必须修改或添加if else的代码。业务规则管理系统

1、硬编码业务规则代码维护困难

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

3、业务规则变化后,修改码,重启APP

面对上面的业务场景,一个好的实现方法是改这个代码有三个弊端

drools规则引擎的优点:

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

2、不恢复服务的情况下,可以随时扩展和维护业务规则

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

4、规则实现更加明确

drools实战:

1、部署drools-compiler.jar

2、drools API开发步骤如下。

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

1)、规则模板

/***审核申请*/rule ' pass _ @ { row.row number } ' no-loop true lock-on-activetruesalience 99 whenuser 3360 user (xueli ) user.set pass (真; 通过end 

2)、基准数据和ObjectDataCompiler.compile初始化为规则;

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