`
NIIT_zhu
  • 浏览: 47789 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

规则引擎案例

阅读更多

 

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

 



 

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

 

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



  

 

 

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

 



 

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

 

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



 


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





   

 

 





  

 

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

 

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



 



 

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

 



 

 

 

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



 

 

 

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

 



  

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

 

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

 

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

 



 

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



  

 

  • 大小: 11.9 KB
  • 大小: 23.9 KB
  • 大小: 24.1 KB
  • 大小: 49.5 KB
  • 大小: 26.5 KB
  • 大小: 16.5 KB
  • 大小: 31.3 KB
  • 大小: 25.3 KB
  • 大小: 43.9 KB
  • 大小: 20 KB
  • 大小: 25.3 KB
  • 大小: 19.5 KB
  • 大小: 28.1 KB
  • 大小: 21 KB
  • 大小: 17.1 KB
  • 大小: 17.8 KB
  • 大小: 17.5 KB
  • 大小: 19.4 KB
  • 大小: 29.4 KB
  • 大小: 10.4 KB
  • 大小: 14.3 KB
  • 大小: 21 KB
  • 大小: 18.8 KB
  • 大小: 21.4 KB
  • 大小: 27.8 KB
分享到:
评论
4 楼 NIIT_zhu 2013-08-21  
felix_alone2012 写道
恩,thanks楼主的耐心解答,很希望和这样的技术牛人一起交流,从中学习别人的经验,我会加你的qq的,一起学习吧,哈哈,小弟也是刚毕业出来工作不到一年,工作中对工作流和业务规则计算校验接触的比较多,但是公司原来的技术实现比较陈旧,规则还是直接Java硬编码维护的,想到学习一些java规则引擎,最近就在研究Drools规则引擎,还有JBPM5最新版本的特性,很享受学习过程,更希望和技术同仁一起学习交流,呵呵


技术牛人不敢当,呵呵,说的太严重了,规则如果用硬编码的方式去实现,后面的调整,变动,维护,很痛苦啊
3 楼 felix_alone2012 2013-08-21  
恩,thanks楼主的耐心解答,很希望和这样的技术牛人一起交流,从中学习别人的经验,我会加你的qq的,一起学习吧,哈哈,小弟也是刚毕业出来工作不到一年,工作中对工作流和业务规则计算校验接触的比较多,但是公司原来的技术实现比较陈旧,规则还是直接Java硬编码维护的,想到学习一些java规则引擎,最近就在研究Drools规则引擎,还有JBPM5最新版本的特性,很享受学习过程,更希望和技术同仁一起学习交流,呵呵
2 楼 NIIT_zhu 2013-08-19  
felix_alone2012 写道
你好,看到你的帖子,觉得自己业余参考学习倒是值得研究下,但是公司里面做规则要用真用不起啊。Drools规则引擎不是有这方面的实现么,有时间可以交流下。最近做公司的项目,就用了Drools来执行规则的,规则的维护包括,规则的定义drl文件中定义(或drt规则模板中定义),规则的参照数据完全可以存到决策表中(Excel表格中)或者在JSP页面上维护(我用的是easyui的可编辑表格做的),这样数据模型和规则定义分离开来,而规则执行时可以向规则模板中传入数据模型(可以直接解析excel,也可以从Java对象、Map中获取),动态生成静态的rule,看到你的帖子,觉得规则维护太麻烦了,还不知道这个工具是不是开源的,就多说两句了,呵呵

你好,首先感谢你对这篇文章的阅读,就你提到的问题做一下说明
     1:公司是否用得起,应该有很多因素来决定,从价格上说,ILog算是很贵了,但是国内的公司用的也不少。
     2:非常欢迎一起交流规则引擎的试用经验,呵呵
        我的QQ:496106920
       加时请注明:规则引擎
     3:规则的维护,定义,既可以在规则配置器中完成,也可以在web界面上完成,规则的参照数据存储在决策表中是毫无问题的,不但可以存储在决策表中,还可以经数据存储在内存表中,上面的演示例子只是我为了做详细的说明才这么做的,其实在平时的使用,是直接通过Excel导进去的,或者你把数据放到页面上去维护也没有问题。

     4:规则中,本来就是业务逻辑和数据分开的,可以解析Excel,xml,csv,Java对象,Map,List,Json,都没有问题,包括Java,C#等调用规则(servlet调用,SOAP调用,Socket调用)
     5:最后,你看到的上面的例子中规则维护麻烦,主要是我为了详细的展示规则是如何一步一步配置出来的,所以相对较为繁琐,其实,是可以Excel直接操作的,呵呵。
1 楼 felix_alone2012 2013-08-17  
你好,看到你的帖子,觉得自己业余参考学习倒是值得研究下,但是公司里面做规则要用真用不起啊。Drools规则引擎不是有这方面的实现么,有时间可以交流下。最近做公司的项目,就用了Drools来执行规则的,规则的维护包括,规则的定义drl文件中定义(或drt规则模板中定义),规则的参照数据完全可以存到决策表中(Excel表格中)或者在JSP页面上维护(我用的是easyui的可编辑表格做的),这样数据模型和规则定义分离开来,而规则执行时可以向规则模板中传入数据模型(可以直接解析excel,也可以从Java对象、Map中获取),动态生成静态的rule,看到你的帖子,觉得规则维护太麻烦了,还不知道这个工具是不是开源的,就多说两句了,呵呵

相关推荐

    规则引擎Drools入门实战案例

    规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 使用规则引擎的优势如下: 1、业务规则与系统代码分离,实现...

    Drools规则引擎从入门到精通

    1 Drools简介1.1 Drools的作用1.2 使用规则引擎的优势1.3 规则引擎应用场景2 Drools初体验2.1 构建项目2.2 案例描述 2.3 代码实现3 Drools语法介绍3.1 规则文件的组成3.2 规则体语法结构3.3 Pattern模式匹配 ...

    Drools规则引擎从入门到精通源码

    本资源是https://download.csdn.net/download/qq_36305027/85055262这个资源的源码部分,各位朋友可以订阅我的专栏规则引擎实战https://blog.csdn.net/qq_36305027/article/details/123838610来查看代码中的详细案例...

    基于Drools的规则引擎实例(完整、可运行eclipse工程)

    基于Drools的规则引擎实例(完整、可运行eclipse工程)。 Drools 规则引擎

    drools规则引擎实例

    drools工作台6.5.0 该技术指南为开源的,内容少一些, 但做入门是没有什么问题的,如果有需要可以联系我 特此声明: 小编出新版本的Drools技术指南的文档啦,相比之前的免费版添加了如下特点: ...

    Drools规则引擎手册.zip

    一个关于drools规则引擎的说明文档,说明的很详细,包括对drools的简介,运行方式介绍,语言编写教程,集成和测试教程,同时包括一些案例,应该是由外文文档进行的翻译

    Drools5.x 规则引擎开发教程

    Drools5.x 规则引擎开发教程 比较详细的介绍了规则引擎的作用 以及基础知识 规则编写案例 开发案例

    Drools规则引擎开发实例+源码

    Drools 规则引擎是现在流行的开源免费规则引擎 功能强大,使用方便 本案例 直接带你入门到运用

    Drools 业务规则管理系统 BRMS

    03-规则引擎Drools-Drools入门案例 ---01-Drools入门案例(业务场景说明).mp4 ---02-Drools入门案例(开发实现_1).mp4 ---03-Drools入门案例(开发实现_2).mp4 ---04-Drools入门案例(开发实现_3).mp4 ---05-...

    Drools规则引擎介绍

    Drools规则引擎介绍,内容包括Drools技术介绍、案例、flow生成

    规则引擎Drools.md

    2.规则rt引擎概述3. Drools入门案例4. Drools基础语法5.Drools属性学习6.Drools高级语法7.案例。资源来源网络,如有侵权,请联系管理员删除

    风控决策引擎--建模案例介绍,金融银行

    风控决策引擎 建模案例介绍 金融银行 。 网商银行联合贷业务,为某城商行通过与网商银行合作,利用全线上技术,按照约定的资金比例,基于双方共同认可的规则审批,为符合特定准入标准的淘宝、天猫、口碑、B2B商户、...

    liteFlow规则引擎框架 v2.11.4.zip

    liteFlow规则引擎框架 v2.11.4.zip

    新闻采集 数据采集 本地搜索引擎案例

    规则定义:通过采集规则的定义,可以搜索所有网站采集几乎任何类型的信息。 数据保存:数据边采集边自动保存到关系数据库中,并且数据结构能够自动适应 计划任务:通过这个功能可以让你的采集任务定时或者一直循环...

    SpringBoot2整合Drools规则引擎及案例详解

    主要介绍了SpringBoot2整合Drools规则引擎及案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Droosl规则文件+语法结构+案例实现代码

    该资源文件是本人CSDN 技术文章专栏《Drools》相关文章的代码案例,包含了Drools规则文件语法代码、规则属性测试代码、Drools高级语法代码、综合案例-消费积分案例代码等相关内容;有兴趣的朋友可以下载下来看看;...

    Drools web项目信用卡案例

    Drools规则引擎用于web项目案例,清楚明了的教你入门规则引擎!

    drools案例代码

    这是我学习业务规则引擎的案例,希望能帮到你,如果有任何问题,可以 留言给我。

    国内精彩网络营销案例分析

    错误的规则导致错误的结果 网吧显威力:评FM365网吧推广案例 2元钱就给--评“与当当第一次亲密接触”活动 勇气之外别无创意--评“伊丽人”网上“养男人”活动 守株待兔的雅虎俱乐部 运动也虚拟?--评Acer-263网络...

Global site tag (gtag.js) - Google Analytics