多数大学生出来选择的工作和专业无关
首页 > 专业知识

JAVA反射机制的规则引擎设计与实现

时间:2017-07-06 18:24:03 [来源]:郑州PHP培训学校

  JAVA反射机制的规则引擎设计与实现
  根据专家系统的推理机制和JAVA语言的反射机制设计实现了一个规则引擎,该规则引擎利用XML 文档存储规则RETE算法匹配规则.应用程序通过实例化类调用规则引擎,改变了传统企业中业务过程和企业信息紧密耦合的情况,降低了企业信息系统的维护成本.
  在传统的企业级应用中,业务过程和企业信息系统紧密地集成在一起.当市场条件不断发生改变时,企业往往需要不断的调整业务以适应变化的需求.这种紧耦合的集成方法只能够实现对固定业务的支持,业务的变化常常要引起代码的变化,甚至数据库结构的变化,使传统的企业信息系统难以维护,难以及时适应需求的变化.规则引擎技术的引入很好地解决上述问题.首先,把固化在信息系统中的业务规则提取出来进行集中的管理.然后,规则引擎作为一个组件嵌入到应用程序中,通过规则引擎的调用,激活符合当前数据状态下的业务规则,根据业务规则中声明的执行逻辑,触发应用程序中对应的操作.
  1 基于JAVA反射机制的规则引擎设计与实现 1.1 业务规则业务规则是对业务的某个方面进行定义或约束的语句.业务规则一般包含一组声明性的语句和约束,这些语句和约束可以断言某些操作或目标[1].业务规则的目的是通过结构的强制实施来控制或影响业务的某个方面.结合业务规则的原子性、一致性、准确性、非冗余性和相容性,文章设计实现的规则引擎采用结构清晰、开发简单的XML[2]表示业务规则. 1.2 规则引擎的设计与实现规则引擎是一个第三方的软件,所以开发人员可以通过程序接口的方式来使用和控制它,规则引擎的程序接口至少包含以下几种API:加载和卸载规则集的API、数据操作的API、引擎执行的API.开发人员在程序中使用规则引擎通常遵循以下步骤:创建规则引擎对象;向引擎中加载规则集或更换规则集;向引擎提交需要被规则集处理的数据对象;命令引擎执行;导出引擎执行结果,从引擎中撤出处理过的数据.使用了规则引擎之后,许多涉及业务逻辑的程序代码被这些步骤所取代. 1.2.1 规则引擎的架构和推理原理 规则引擎是规则系统的一个核心部件.其最大的价值就是修改了业务规则而不必改写代码[3].规则引擎与专家系统用的引擎类似,规则引擎的运行简单地说就是,两个输入、一个输出.输入规则、输入事实,输出动作(匹配结果).工作原理如图1所示. (1)将FACT输入至WORKING MEMORY; (2)使用模式匹配将RULE BASE中的RULE和FACT 比较;(3)如果执行规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合;(4)解决冲突,将激活的规则按顺序放入AGENDA中;
  (5)执行AGENDA中的规则.在实现时,当一个规则涉及到多个对象,而这些对象之间不是独立的而是有联系的时候,要求规则引擎要具有表示这种关系的能力.另外,还有一个问题就是规则动作的回调,规则引擎所做的仅仅是属性的匹配,至于匹配成功之后要做什么那是应用程序的任务,规则引擎不含有“怎么做”的代码,否则就“做死了”.这是规则引擎与专家系统最大的不同.本文利用JAVA的反射机制,实现了一个规则引擎. 1.2.2 JAVA反射机制 目前,程序语言被分为动态语言和静态语言.程序运行时,允许改变程序结构或变量类型的语言为动态语言,否则为静态语言.JAVA虽不是动态语言,但拥有动态机制:反射.利用反射机制编写与执行程序代码时,使程序代码能够接入装载到JVM中的类的内部信息,即可以在运行时加载、探知、使用编译期间完全未知的classes,加载一个运行时才知道类的名称、获悉其完整构造(但不包括methods定义)并生成其对象实体、或对其fields设值、或唤起其methods.因此,反射是一种强大的工具,利用反射机制创建的代码更加灵活,在运行时装配,在组件之间无需进行源代表链接.但需注意的是:如果使用不当,反射的成本很高.

上一篇:PHP常见异步调用的实现方式

下一篇:10个实用的PHP正则表达式