`
nanjingjiangbiao_T
  • 浏览: 2594265 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

规则引擎

 
阅读更多

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

  应用背景: 企业级管理者对企业IT系统的开发有着如下的要求:
  1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。
  2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。

  3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

  使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本,其优点如下:
  · 分离商业决策者的商业决策逻辑和应用开发者的技术决策;
  · 能有效的提高实现复杂逻辑的代码的可维护性;
  · 在开发期间或部署后修复代码缺陷;
  · 应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内;

  · 符合组织对敏捷或迭代开发过程的使用;

  大多数规则引擎都支持规则的次序和规则冲突检验,支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。目前业内有多个规则引擎可供使用,其中包括商业和开放源码选择。开源的代表是Drools,商业的代表是VisualRules ,iLog。

  规则引擎是解析、调用、执行规则包的服务,目前VisualRules采用java语言来实现规则引擎,并且提供了java类接口、Socket、Servlet、SOAP等多种外部调用接口。其实Java类接口是所有这些接口的核心,其他接口其实也是通过Java类接口来加以调用。考虑到最小化规则引擎,因此规则包的解析工作已经放在规则编辑时,预先进行了处理。规则引擎只处理规则包的调用和执行,同时为规则包用到的数据库接口、Excel接口、内存表接口、Xml接口提供缺省的实现。

  规则引擎执行原理

  VisualRules规则引擎会根据规则包名称,取得对应规则包编译后的rsc文件。然后将rsc加载到内存中,生成规则包执行上下文。同时规则引擎将传递的参数传递到规则包执行上下文中,然后开始执行规则包。执行完毕后,再将规则包执行上下文中的数据,传回给调用规则包的应用程序。整个执行原理非常简单,因此最大限度的保证了规则运行平台的稳定以及最佳的性能。

  数据库接口

  规则包的对象库中,定义了以下一些数据库对象接口Database、Table、Select、View、Procedure。VisualRules规则引擎直接用JDBC来实现这些接口,最大限度的保证了数据库对象调用的性能。当然用户可以根据自己的需要,重新来实现这些数据库接口。

  Excel接口

  规则包需要调用的Excel接口主要是IExcelBook、IExcelSheet、IExcelTableSheet、IExcelXYSheet。VisualRules规则引擎采用POI来实现Excel接口。

  内存表格接口

  规则包需要调用的内存表格接口为Sheet,VisualRules采用Object[][]来实现内存表格接口的实现。

  Xml接口

  规则包需要调用的XML接口为Node。目前VisualRules采用Jdom来实现。

  如何调用
  规则引擎是外部Java程序调用规则包的一组Java类,其包含在engine.jar中。 外部Java程序调用规则包时只需要用到两个类。一个是 com.flagleader.engine.RuleEngine 。另一个是 com.flagleader.engine.RuleEngineFactory 。
  RuleEngineFactory是得到规则引擎实例的工厂类。 通常代码为
  RuleEngine ruleEngine = RuleEngineFactory.newInstance().getRuleEngine();
  得到规则引擎实例后,可以调用规则引擎中的方法,主要是put、excute和get这三个方法。 put用于传入需要传入的值,excute用于运行指定的规则包,get用于得到传出的值。 一般的调用代码为:
  ruleEngine.put(传入对象);
  ruleEngine.excute("规则包调用名");
  传出对象 = ruleEngine.get("传出对象名");
  因此外部程序调用规则包非常简单。只需以上几行代码就可以完成应用。
分享到:
评论
1 楼 Wangwei86609 2017-07-05  
非常好的规则引擎框架,支持决策树和多线程运行规则

https://github.com/wangwei86609/osmanthus

相关推荐

    springboot ice规则引擎

    Easy Rules,Drools,Aviator表达式求值引擎,Rule Book、Oracle Rules SDK、Blaze (fico)、IBM Decision Manager,DTRules,DSL规则引擎 规则引擎由三部分 事实(Fact):已知对象,比如以上刷卡的行为,即成事实...

    Drools规则引擎从入门到精通

    从基础讲起,结合应用场景,由浅到深细化讲解drools规则引擎的的相关知识,并结合具体实例,演示功能的使用和注意事项。后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括...

    规则引擎-规则测试和轨迹跟踪

    在规则引擎中测试的方法有两种:一种是普通的规则包测试,另外一种是批量测试。在普通测试中,可以在任意规则、规则集中选择“执行到此”,意思是:规则包执行到该规则就停止,然后测试规则包的输出结果;同时也可以...

    JAVA规则引擎原理

    <br>第一部分简要介绍了规则引擎的产生背景和基于规则的专家系统, 第二部分介绍了什么是规则引擎及其架构和算法, 第三部分介绍了商业产品和开源项目实现等各种Java规则引擎, 第四部分对Java规则引擎...

    规则引擎Drools入门实战案例

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

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

    从基础讲起,结合应用场景,由浅到深细化讲解drools规则引擎的的相关知识,并结合具体实例,演示功能的使用和注意事项。后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括...

    规则引擎-表达式规则

    规则引擎提供了内存表的概念,内存表就是一张虚拟表。我们可以把数据库中表的数据导入到内存表中,再对内存表进行操作。 表达式表格,实际上就是对内存表进行查询操作。在这个表达式中,我们可以设置不同的条件,...

    规则引擎-决策树

    在这里规则引擎提供了“决策树”的概念:在“决策树”中可以引用其他规则包的规则单位。被引用的规则可以是其他规则包的规则,也可以是其他工程的规则。我们可以在“决策树”中,设置引用规则执行的顺序,也可以设置...

    规则引擎-版本控制

    我们在规则编写时,往往会遇到...规则引擎对每次修改保存之后的规则包都会记录成一个版本,然后对每个规则包的每个版本都有具体控制,我们不但可以把规则包恢复到任意的历史版本,而且可以比较每个版本之间的具体差别。

    规则引擎urule文档

    URule Pro整个产品由两部分构成:一个是设计器部分,另一个是规则执行引擎部分。设计器部分主要是由库文件 设计器以及具体的规则文件设计器两... 本文档是面向规则引擎配置人员(运营人员),详细地讲述如何在线配置规则。

    规则引擎技术的可配置EOS平台的设计与实现

    在嵌入式技术中,EOS(嵌入式...同时还对规则引擎,Vxworks Workbench,XML,XML Schema以及Eclipse插件开发等一系列相关技术做了研究,通过实践应用验证了规则引擎以及配置模型在实际开发中的可行性,具备一定的推广价值。

    规则引擎eclipse插件

    规则引擎eclipse插件规则引擎eclipse插件

    Drools规则引擎介绍

    Drools是Jboss公司旗下一款开源的规则引擎,它完整的实现了Rete算法;提供了强大的EclipsePlugin开发支持;通过使用其中的DSL(DomainSpecificLanguage),可以实现用自然语言方式来描述业务规则,使得业务分析人员也...

    java规则引擎开发教程全

    规则引擎 规则引擎开发教程 java规则引擎

    规则引擎在促销系统中的应用_最新高清.pdf

    规则引擎在促销系统中的应用_最新高清

    Drools规则引擎技术分享

    - Drools规则引擎 - 问题引出 - 电商平台促销活动 -  规则引擎概述 - 什么是规则引擎 - 规则引擎方案对比 - 使用规则引擎的优势 - 规则引擎应用场景 - Drools介绍 - 开发实现 - 规则引擎构成 - 相关概念...

    drools整合apollo实现动态规则引擎

    drools整合apollo实现动态规则引擎,可以在不停服的情况下动态调整规则。无需数据库等存储,自动推送

    Drools规则引擎Drools规则引擎

    Drools是Jboss公司旗下一款开源的规则引擎,它完整的实现了Rete 算法;提供了强大的Eclipse Plugin开发支持; 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析...

    规则引擎Drools.NET移植版

    很优秀的规则引擎,从java社区移植到.net平台上。

    ILOG规则引擎技术手册.doc

    ILOG规则引擎IT人员需要维护的工程包括XOM工程、BOM工程、规则应用工程和客户端工程。 XOM工程是BOM工程的Java实现,是规则执行的技术支持。XOM主要完成业务模型的技术化,主要是创建一些JavaBean。 BOM工程是实现...

Global site tag (gtag.js) - Google Analytics