文章目录
- 系列文章索引
- 十、个人所得税计算器实战
- 1、名词解释
- 2、计算规则
- 3、实现步骤
- 十一、信用卡申请实战
- 1、计算规则
- 2、实现
- 十二、保险产品准入规则实战
- 1、决策表
- 2、基于决策表的入门案例
- 3、保险产品规则介绍
- 4、实现步骤
- 5、资料
我们需要通过Drools规则引擎来根据规则计算个人所得税,最终页面效果如下:
税前月收入:即税前工资,指交纳个人所得税之前的总工资
应纳税所得额:指按照税法规定确定纳税人在一定期间所获得的所有应税收入减除在该纳税期间依法允许减除的各种支出后的余额
税率:是对征税对象的征收比例或征收额度
速算扣除数:指为解决超额累进税率分级计算税额的复杂技术问题,而预先计算出的一个数据,可以简化计算过程
扣税额:是指实际缴纳的税额
税后工资:是指扣完税后实际到手的工资收入
要实现个人所得税计算器,需要了解如下计算规则:
规则编号 名称 描述
本实战案例我们基于Spring Boot整合Drools的方式来实现。
第一步:创建maven工程calculation并配置pom.xml文件
第二步:创建/resources/application.yml文件
第三步:编写配置类DroolsConfig
第四步:编写实体类Calculation
第五步:在resources/rules下创建规则文件calculation.drl文件
第六步:创建RuleService
第七步:创建RuleController
第八步:创建启动类DroolsApplication
第九步:准备前端页面
我们需要通过Drools规则引擎来根据规则进行申请人的合法性检查,检查通过后再根据规则确定信用卡额度,最终页面效果如下:
合法性检查规则如下:
信用卡额度确定规则:
编写实体类CreditCardApplyInfo:
在resources/rules下创建规则文件creditCardApply.drl文件
前面的课程中我们编写的规则文件都是drl形式的文件,Drools除了支持drl形式的文件外还支持xls格式的文件(即Excel文件)。这种xls格式的文件通常称为决策表(decision table)。
决策表(decision table)是一个“精确而紧凑的”表示条件逻辑的方式,非常适合商业级别的规则。决策表与现有的drl文件可以无缝替换。Drools提供了相应的API可以将xls文件编译为drl格式的字符串。
一个决策表的例子如下:
决策表语法:
在决策表中还经常使用到占位符,语法为$后面加数字,用于替换每条规则中设置的具体值。
上面的决策表例子转换为drl格式的规则文件内容如下:
要进行决策表相关操作,需要导入如下maven坐标:
通过下图可以发现,由于maven的依赖传递特性在导入drools-decisiontables坐标后,drools-core和drools-compiler等坐标也被传递了过来
Drools提供的将xls文件编译为drl格式字符串的API如下:
Drools还提供了基于drl格式字符串创建KieSession的API:
第一步:创建maven工程drools_decisiontable_demo并配置pom.xml文件
第二步:创建实体类PersonInfoEntity
第三步:创建xls规则文件(可以直接使用资料中提供的testRule.xls文件)
第四步:创建单元测试
各保险公司针对人身、财产推出了不同的保险产品,作为商业保险公司,筛选出符合公司利益最大化的客户是非常重要的,即各保险产品的准入人群是不同的,也就是说保险公司会针对不同的人群特征,制定不同的产品缴费和赔付规则。
我们来看一下某保险产品准入规则的简化版,当不满足以下规则时,系统模块需要返回准入失败标识和失败原因
规则1: 保险公司是:PICC
规则2: 销售区域是:北京、天津
规则3: 投保人年龄:0 ~ 17岁
规则4: 保险期间是:20年、25年、30年
规则5: 缴费方式是:趸交(一次性交清)或年交
规则6: 保险期与交费期规则一:保险期间为20年期交费期间最长10年交且不能选择[趸交]
规则7: 保险期与交费期规则二:保险期间为25年期交费期间最长15年交且不能选择[趸交]
规则8: 保险期与交费期规则三:保险期间为30年期交费期间最长20年交且不能选择[趸交]
规则9: 被保人要求:(投保年龄+保险期间)不得大于40周岁
规则10: 保险金额规则:投保时约定,最低为5万元,超过部分必须为1000元的整数倍
规则11: 出单基本保额限额规则:线上出单基本保额限额62.5万元,超62.5万元需配合契调转线下出单
在本案例中规则文件是一个Excel文件,业务人员可以直接更改这个文件中指标的值,系统不需要做任何变更。
本案例还是基于Spring Boot整合Drools的架构来实现。
第一步:创建maven工程insuranceInfoCheck并配置pom.xml文件
第二步:创建/resources/application.yml文件
第三步:创建实体类InsuranceInfo
第四步:创建决策表文件(也可以直接使用实战资料中提供的insuranceInfoCheck.xls文件)
第五步:封装工具类KieSessionUtils
第六步:创建RuleService类
第七步:创建RuleController类
第八步:创建启动类DroolsApplication