最近刚刚接触JAVA的规则引擎,一般的系统而言,业务不是非常复杂,而且变化少,因此很少采用什么规则引擎,最近接触了一个规则引擎的系统,是使用BlazeSoft公司的Blaze来实现的,自己对它正在了解中,把具体的实现相关的知识,写下来,以待进一步的整理。
本系列文章主要先人云亦云地介绍一下规则引擎的背景知识(本人了解规则引擎不多),接着介绍JSR94的API和具体的实现,以及blaze自己提供的java api的简单介绍和实现,然后介绍一下BlazeSoft公司的blaze的搭建、开发和部署,以及在java环境中的集成,简单介绍一下Blaze使用的规则语言,srl的语法。
规则引擎的简介
规则引擎
规则引擎是推理引擎的一种,它起源于基于规则的专家系统。规则引擎好像不是新鲜的话题了,但在java应用中,好像以前讨论得不多,不久热起来的。
规则引擎也就是基于规则的专家系统中的推理引擎发展而来。下面简要介绍一下基于规则的专家系统。
引用一段相关文章的介绍 :
RBES的推理(规则)引擎
和人类的思维相对应,规则引擎存在两者推理方式:演绎法(Forward-Chaining)和归纳法(Backward-Chaining)。演绎法从一个初始的事实出发,不断地应用规则得出结论(或执行指定的动作)。而归纳法则是从假设出发,不断地寻找符合假设的事实。
Rete算法是目前效率最高的一个Forward-Chaining推理算法,Drools项目是Rete算法的一个面向对象的Java实现。
规则引擎的推理步骤如下:
1. 将初始数据(fact)输入Working Memory。
2. 使用Pattern Matcher比较规则(rule)和数据(fact)。
3. 如果执行规则存在冲突(conflict),即同时激活了多个规则,将冲突的规则放入冲突集合。
4. 解决冲突,将激活的规则按顺序放入Agenda。
5. 使用规则引擎执行Agenda中的规则。重复步骤2至5,直到执行完毕所有Agenda中的规则。
具体请参考其他相关文章的介绍。
规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。