在什么情况下需要使用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 )传递给规则进行比较
发表评论