规则引擎案例

在计算个人所得税时,由于“税率”和“速算扣除数”都是根据“全月所得税额”的变化而变化的。若我们我们采用常规的方式来处理,则需写很多”if””else if”语句;而采用关联决策表的方式,把“全月所得税额”作为条件,把“税率”和“速算扣除数”作为结果,则可以省去许多冗余的逻辑,使程序员开发更加方便。现有的个人所得税的“税率”计算方法如下图所示:



 

这个例子中就是根据已知“当月基本工资”,根据上述的税率方式计算“当月实际工资”。

右键名为“功能解析”的工程,点击“新建规则包”,创建一个名为“关联决策表的”规则包,如下图所示:



  

 

我们需要在该规则包的对象库中定义六个变量:当月基本工资(salary),全月所得税额(taxmonth),税率(cess),速算扣除数(kouchu),应缴税额(taxnum),当月实际工资(actuallysalary)。如下图所示:

 



 

首先,在计算“当月实际工资”时,必要得到“全月所得税额”的值(全月所得税额=当月基本工资-3500),再根据“全月所得税额”计算“税率”和“速算扣除数”,最后再根据“当月基本工资”和“应缴税额”得出“当月实际工资”(应缴税额=全月所得税额*(税率/100)—速算扣除数,当月实际工资=当月基本工资—应缴税额)。逻辑理好后,我们根据这个逻辑去创建规则及关联决策表。

 

右键规则包,创建名为“全月所得税额”的规则,如下图所示:



 


创建完成后,我们要计算“全月所得税额”,在规则中我们实现的逻辑过程如下:





   

 

 





  

 

确认后,规则“全月所得税额”的配置工作就完成了!

 

我们需要创建一个名为“当月所得税”的关联决策表,如下图所示:



 



 

关联决策表创建好了,我们需要修改下其属性,我在关联决策表的属性窗口,在赋值元素那里进行修改,其操作如下:

 



 

 

 

我们把关联决策表的属性修改完成之后,我们需要给关联决策表配置逻辑,我们有两处可以进行条件设置:第一处是:在“当月所得税条件”那里;第二处是:双击决策表的“如果”部分,在弹出的编辑框中可以进行条件编辑。两处编辑的操作、结果是一样的。若用的是第一种方式来实现,步骤如下图所示:



 

 

 

在点击了“添加条件”之后,我们就可以设置“关联决策表”的条件了,完成后,条件如下图所示:

 



  

然后我们要根据“全月所得税额”,设置相应的“税率”和“速算扣除数”如下所示:

 

我们从关联决策表中,可以得到“全月所得税额”对应的税率和速算扣除数。在这一规则中,我们就可以根据税率和速算扣除数,计算到“应缴税额”和“当月实际工资”。

 

添加“计算所得税和实际工资”的规则,如下图所示:

 



 

规则逻辑完成后,我们需要对规则进行保存、编译,步骤如下图所示:



  

 

猜你喜欢

转载自ruleengine.iteye.com/blog/1902059