规则引擎

推理引擎

      推理引擎就是应用系统中用 来完成推理功能的模块,也能够称做推理机。推理机通常包括调度器,执行器和一致性协调器三部分。调度器控制整个推理流程,使得推理能够按照必定的流程进行下去;执行器执行调度器所选定的动做,而且负责读取知识库中的知识和全局黑板中的信息;一致性协调器保持推理中间结果的一致性,主要用于反向推理中。

     推理引擎根据知识表示的不一样采起的控制策略也是不一样的,在这里咱们所实现的是基于产生式规则集的知识表示。选择这种知识表示是由于其具备不少的优势,尤为是其易于理解、易于获取、易于管理,而且在现今的大多数智能应用系统中都采用了这种知识表示方法。基于这种知识表示的推理引擎采用“识别-动做"的方式来循环执行规则。 java

规则引擎

      规则引擎由 推理引擎发展而来,是一种嵌入在应用程序中的组件 ,实现了将业务决策从应用程序代码中分离出来,并使用预约义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则作出业务决策。
      应用背景: 企业级管理者对企业IT系统的开发有着以下的要求:
         1.为提升效率,管理流程必须自动化,即便现代商业规则异常复杂。
         2.市场要求业务规则常常变化,IT系统必须依据业务规则的变化快速、低成本的更新。
         3.为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不须要程序开发人员参与。
     使用规则引擎能够经过下降实现复杂业务逻辑的组件的复杂性,下降应用程序的维护和可扩展性成本,其优势以下:
       · 分离商业决策者的商业决策逻辑和应用开发者的技术决策;
       · 能有效的提升实现复杂逻辑的代码的可维护性;
       · 在开发期间或部署后修复代码缺陷;
       · 应付特殊情况,即客户一开始没有提到要将业务逻辑考虑在内;
       · 符合组织对敏捷或 迭代开发过程的使用;

      

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

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

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

       数据库接口
      规则包的对象库中,定义了如下一些 数据库对象接口Database、Table、Select、View、Procedure。VisualRules规则引擎直接用JDBC来实现这些接口,最大限度的保证了 数据库对象调用的性能。固然用户能够根据本身的须要,从新来实现这些 数据库接口


      Excel接口        性能

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


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


       Xml接口        htm

       规则包须要调用的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("传出对象名");
所以外部程序调用规则包很是简单。只需以上几行代码就能够完成应用。



----from 百度百科 内存

相关文章
相关标签/搜索