• 1. Bstek TeamDrools规则引擎
  • 2. 议程什么是规则引擎? Drools规则引擎介绍 信用卡申请实例介绍 Drools实现信用卡申请规则 编写客户端测试信用卡申请规则2
  • 3. 什么是规则引擎?规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相应的决策。 引入规则引擎后带来的好处: 实现业务逻辑与业务规则的分离,实现业务规则的集中管理 可以动态修改业务规则,从而快速响应需求变更 使业务分析人员也可以参与编辑、维护系统的业务规则 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单3
  • 4. Drools规则引擎介绍Drools是Jboss公司旗下一款开源的规则引擎,它完整的实现了Rete 算法;提供了强大的Eclipse Plugin开发支持; 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析人员也可以看懂业务规则代码。 最新版本Drools5提供了基于WEB的BRMS——Guvnor,Guvnor提供了规则管理的知识库,通过它可以实现规则的版本控制,及规则的在线修改与编译,使得开发人员和系统管理人员可以在线管理业务规则。Eclipse Plugin版规则设计器Drools的Guvnor4
  • 5. 信用卡申请实例用户填写申请的个人信息。 然后提交到系统进行初审。初审的职责是通过已有的规则对用户信息合法性和真实性进行检查。 对于合法的用户提交到信用卡发放部门,使用规则来决定要发放的信用卡额度等信息。 通知申请人申请结果申请流程图信息提交检查通过检查不通过发送通知5
  • 6. 用户需要输入的个人信息用户需要输入的信息包括:姓名、性别、年龄、学历、电话、所在公司、职位、月收入、是否有房、是否有车、是否有信用卡等。点击“申请”按钮将申请信息提交到后台,后台启动审批流程,通过规则先对信息的合法性进行验证,对于验证合格申请系统将调用相关规则发放相关的信用卡。6
  • 7. 用户信息合法性检查规则规则编号名称描述1检查学历 与薪水1如果申请人既没房也没车,同时学历为大专及以下,并且月薪少于5000,那么不通过。2检查学历 与薪水2如果申请人既没房也没车,同时学历为大专或本科,并且月薪少于3000,那么不通过。3检查学历 与薪水3如果申请人既没房也没车,同时学历为本科以上,并且月薪少于2000,同时之前没有信用卡的,那么不通过。4检查申请人已有的信用卡数量如果申请人现有的信用卡数量大于10,那么不通过。申请人信息提交到系统后,首先调用这些规则进行验证,只有这些规则全部通过,才能进入发放信用卡的流程,否则申请结果就是不通过。7
  • 8. 合法用户的信用卡发放规则规则编号名称描述1规则1如果申请人有房有车,或者月收入在20000以上,那么发放的信用卡信用额度为15000。2规则2如果申请人没房没车,但月收入在10000~20000之间,那么发放的信用卡信用额度为60003规则3如果申请人没房没车,月收入在10000以下,那么发放的信用额度为3000。4规则4如果申请人有房没车或者是没房但有车,月收入在10000以下,那么发放的信用额度为5000。5规则5如果申请人有房没车或者是没房但有车,月收入在10000~2000之间,那么发放的信用额度为8000。以上5条规则为验证通过的用户发放信用卡时使用,主要是用来决定信用卡的发放额度8
  • 9. Drools实现信用卡申请规则采用Drools规则引擎来计算复杂的信用卡审批与发放规则 通过Drools提供的BRMS——Guvnor实现规则的管理与动态更新 通过Drools提供的RuleFlow(规则流)实现对信用卡审批规则的编排与执行系统架构9
  • 10. Drools实现的信用卡自动审批流程“检查申请人信息是否合法”:用来存放检查申请人信息是否合法的四条规则,对申请人信息进行合法性检查。 “判断是否合法”:判断当前申请人信息是否合法,如果合法那么将选择“合法”线路,否则选择“非法”线路。 “合法申请人信用卡发放”:存放发放信用卡的五条规则,对申请人的信息进行检查,从而为申请人提供合适的信用卡额度。 两个结束节点分别用来结束合法与非法的信用卡申请信息。利用Drools提供的Rule Flow设计的信用卡审批流程,该流程的主要作用是用来对信用卡的合法性检查规则及信用卡发放规则的执行顺序进行编排。10
  • 11. Drools实现的用户信息合法性检查规则点击查看用户信息合法性检查规则的完整源文件/** 如果申请人既没房也没车,同时学历为大专及以下,并且月薪少于5000,那么不通过。 */ rule "检查学历与薪水1" ruleflow-group "applycheck" lock-on-active true salience 1 when Current user -degree is 1 -has car is false -has house is false -salary is less then 5000 then So current user apply is invalid end /** 如果申请人既没房也没车,同时学历为大专或本科,并且月薪少于3000,那么不通过。 */ rule "检查学历与薪水2" ruleflow-group "applycheck" lock-on-active true salience 2 when Current user -has car is false -has house is false -salary is less then 3000 -current user degree is 2 or 3 then So current user apply is invalid End ……11
  • 12. Drools实现的合法用户的信用卡发放规则点击查看信用发放规则完整源文件/** 如果申请人有房有车,那么发放的信用卡信用额度为15000。 */ rule "规则1" salience 1 ruleflow-group "creditcardpayment" lock-on-active true when Current user -has car is true -has house is true then Payment credit card and credit limit is 15000 end /** 月收入在20000以上,那么发放的信用卡信用额度为15000。 */ rule "规则2" salience 2 ruleflow-group "creditcardpayment" lock-on-active true when Current user -salary is greate then 20000 then Payment credit card and credit limit is 15000 End ……12
  • 13. 将相关规则文件部署到Guvnor申请人信息合法性检查规则在Guvnor里查看的效果在Guvnor里查看信用卡审批的规则流程图可以将编写好的信用卡申请规则及编排规则执行的规则流文件一起发布到Guvnor,通过Guvnor可以实现对规则的管理与动态编译,以快速的响应业务变化需求。 通过使用Guvnor提供的Eclipse-plugin可以将规则文件直接部署到Guvnor当中。13
  • 14. 编写客户端测试信用卡申请规则为了可以更加真实的反映Drools的使用方法,我们用一个B/S架构的应用来作为规则调用的客户端。 Drools的客户端采用Dorado实现,通过Dorado客户端提供申请人申请信息,再这些信息交给Drools进行合法性检查,对于合法的申请再进行信用卡的发放,最将结果返回给Dorado。Dorado客户端调用规则引擎进行信用卡申请14
  • 15. 谢谢