规则引擎 (Rule Engine)介绍
规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的其中一个分支。专家系统属于人工智能的范畴,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。
利用它就可以在应用系统中分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时可以动态地管理和修改,从而为企业保持灵活性和竞争力提供有效的技术支持。
简单地说:让程序的业务逻辑可以通过规则配置进行处理。
.NET下的开源规则引擎有:
序号:1
规则引擎:Drools.NET
介绍说明:Drools.NET 是 .NET 版的 Drools,基于Charles Forgy的RETE算法的开源的业务规则引擎。
官方地址:http://droolsdotnet.codehaus.org/
序号:2
规则引擎:SRE
介绍说明:SRE (Simple Rule Engine)是.NET下的一款轻量级的开源正向串行的推理规则引擎(forward chaining inference rule engine)。它容易理解,可以解决复杂的问题。
官方地址:http://sourceforge.net/projects/sdsre/
序号:3
规则引擎:NxBRE
介绍说明:NxBRE是.NET平台下的一款开源轻量级的业务规则引擎(aka Rule Based Engine),它由正向串行的推理引擎(forward-chaining inference engine)和XML驱动流控制引擎(XML-driven flow control engine)组成.它支持 RuleML 0.9 Naf Datalog 和 Visio 2003 建模。
官方地址:http://sourceforge.net/projects/nxbre
Java下的开源规则引擎有:
序号:1
规则引擎:Drools
介绍说明:Drools是Java语言开发,基于Charles Forgy的RETE算法的开源的业务规则引擎。
官方地址:http://www.jboss.org/drools/
序号:2
规则引擎:Jamocha
介绍说明:Jamocha是一个Java语言开发的开源规则引擎。
官方地址:http://sourceforge.net/projects/jamocha/
规则引擎相关构件
规则引擎是一种根据规则中包含的指定过滤条件,判断其能否匹配运行时刻的实时条件来执行规则中所规定的动作的引擎。与规则引擎相关的有四个基本概念,为更好地理解规则引擎的工作原理,下面将对这些概念进行逐一介绍。
1)信息元(Information Unit)
信息元是规则引擎的基本建筑块,它是一个包含了特定事件的所有信息的对象。这些信息包括:消息、产生事件的应用程序标识、事件产生事件、信息元类型、相关规则集、通用方法、通用属性以及一些系统相关信息等等。
2)信息服务(Information Services)
信息服务产生信息元对象。每个信息服务产生它自己类型相对应的信息元对象。即特定信息服务根据信息元所产生每个信息元对象有相同的格式,但可以有不同的属性和规则集。需要注意的是,在一台机器上可以运行许多不同的信息服务,还可以运行同一信息服务的不同实例。但无论如何,每个信息服务只产生它自己类型相对应的信息元。
3)规则集(Rule Set)
顾名思义,规则集就是许多规则的集合。每条规则包含一个条件过滤器和多个动作。一个条件过滤器可以包含多个过滤条件。条件过滤器是多个布尔表达式的组合,其组合结果仍然是一个布尔类型的。在程序运行时,动作将会在条件过滤器值为真的情况下执行。除了一般的执行动作,还有三类比较特别的动作,它们分别是:放弃动作(Discard Action)、包含动作(Include Action)和使信息元对象内容持久化的动作。
4)队列管理器(Queue Manager)
队列管理器用来管理来自不同信息服务的信息元对象的队列。
未来应用规则引擎的趋势
商业世界充满了关于变化的陈词滥调,如任何事物都会改变,唯一不变的是变化等等。而在技术领域里,情况正好相反。我们仍然在试图解决30年前软件业中同样的一堆问题--也许比30年前还要多的问题。在过去的十年,IT从业人员淹没在软件方法学的大量文献中,如快速软件开发,极限编程,敏捷软件开发等,它们无一例外地强调灵活和变化的重要性。
但商业通常比开发团队所依赖的软件过程和技术改变得更加迅速。当商业策划人员试图重整IT部门,以支持新的业务转型时,仍然觉得很费劲。
哪些软件项目正在使用规则引擎
目前中国移动的BOSS系统、企业应用的ERP、CRM以及电子商务的销售系统等。
转自: http://www.cnblogs.com/taven/archive/2011/02/12/1952245.html