`
NIIT_zhu
  • 浏览: 49636 次
  • 性别: 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、业务规则与系统代码分离,实现...

    规则引擎-数据库访问操作

    规则引擎-数据库访问操作有很多应用案例,例如: * 客户关系管理系统 * 风险管理系统 * 数据分析和处理系统 7. 规则引擎-数据库访问操作的挑战和限制 规则引擎-数据库访问操作也存在一些挑战和限制,例如: * ...

    规则引擎的介绍

    ### Drools规则引擎在信用卡申请流程中的应用案例 以信用卡申请为例,Drools规则引擎可以应用于整个审批流程中: 1. **信息合法性检查**:当用户提交个人信息后,Drools规则引擎根据预设规则检查信息的完整性和...

    规则引擎的实现

    如果能访问这些文件,我们可以获取更详细的规则引擎实现细节、案例分析或最佳实践。 总的来说,规则引擎的实现涉及了业务逻辑的抽象、规则的表示(如使用DSL或JSON)、规则的解析和编译、以及执行引擎的设计。它...

    基于Spring的规则引擎

    ### 基于Spring的规则引擎 #### 一、引言 随着信息技术的发展,企业级应用系统的复杂性不断增加,为了更好地应对不断变化的市场需求和业务环境,开发灵活、可扩展的应用系统成为当前的一个重要趋势。业务规则作为...

    规则引擎内部交流.7z

    在IT行业中,规则引擎是一种非常重要的软件组件,尤其在处理业务逻辑复杂且多变的场景下,它扮演着核心角色。规则引擎允许开发者将业务规则从应用程序代码中分离出来,使得规则可以独立维护和更新,提高了系统的灵活...

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

    在" Drools规则引擎开发案例 "中,你可能会学到如何设置和配置Drools环境,创建并加载规则文件,以及如何在Java应用程序中使用Drools API来操作规则。你还会看到如何插入事实,触发规则执行,以及如何查看和分析执行...

    Java规则引擎工作原理及其应用.docx

    5. 实战应用案例:文档可能会通过具体的Java项目实例,展示如何集成和使用规则引擎,比如在信贷审批、保险索赔或供应链管理等场景中的应用。 6. 常见的Java规则引擎框架:例如Drools、JESS、Apache BRMS等,这些...

    Java开发案例-springboot-54-整合LiteFlow规则引擎-源代码+文档.rar

    Java开发案例-springboot-54-整合LiteFlow规则引擎-源代码+文档.rar Java开发案例-springboot-54-整合LiteFlow规则引擎-源代码+文档.rar Java开发案例-springboot-54-整合LiteFlow规则引擎-源代码+文档.rar Java开发...

    规则引擎应用实践

    根据提供的文件信息,...以上知识点涉及了规则引擎的定义、应用领域、动态数据清洗的重要性和方法、Java规则引擎的使用案例以及学术研究的流程等方面,可以为对相关领域感兴趣的研究者提供一定的理论基础和应用指导。

    为什么要用规则引擎(译文)

    由于压缩包中的文件名为“myfirst”,我们可以假设这可能是博主或作者初次尝试使用规则引擎的一个项目或教程的起点,可能包含一个简单的规则引擎实现或使用案例。 规则引擎的核心组成部分通常包括规则定义、规则...

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

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

    规则引擎-规则流

    在IT领域,规则引擎是一种软件系统,用于处理和执行基于特定业务规则的应用程序。规则引擎的核心功能是将业务逻辑从应用程序代码中分离出来,使得业务规则可以被独立地创建、修改和管理。规则流则是规则引擎中的一个...

    Drools规则引擎手册.zip

    Drools是一款强大的开源规则引擎,它允许开发者在应用程序中嵌入复杂的业务规则,从而实现逻辑的自动化处理。本手册详细介绍了Drools的核心概念、使用方法和最佳实践,是学习和掌握Drools的宝贵资源。 首先,Drools...

    Drools5规则引擎开发教程.pdf.zip-最新-目录-完整

    **Drools5规则引擎开发教程** Drools5是一款强大的、开源的业务规则管理系统(BRMS),它基于Java平台,提供了高效的规则引擎,帮助企业快速实现业务规则的管理和执行。本教程将深入探讨Drools5的核心功能和开发...

    Drools5规则引擎开发教程

    《Drools5规则引擎开发教程》是一本深入解析Drools规则引擎的实用指南,旨在帮助开发者理解和掌握如何在实际项目中应用规则引擎技术。Drools是Java平台上的一个开源规则引擎,它允许开发者以声明式的方式编写业务...

    Java规则引擎---Drools的介绍及应用

    ### Java规则引擎——Drools的深度解析与应用探索 #### 一、规则引擎与基于规则的专家系统 规则引擎,作为软件开发领域的一项关键技术,其核心在于模仿人类的决策过程,通过预定义的规则集对输入数据进行分析,...

    Drools规则引擎及教程

    Drools是一款强大的开源规则引擎,它基于Java平台,由JBOSS社区开发,主要用于实现业务规则的管理和执行。在企业应用中,Drools能够帮助开发者将复杂的业务逻辑以规则的形式分离出来,使得业务规则的修改和维护变得...

Global site tag (gtag.js) - Google Analytics