java规则引擎⽐较_⼏款常⽤规则引擎的简单对⽐及演⽰
Ilog JRules是最有名的商⽤BRMS;Drools是最活跃的开源规则引擎;Jess是Clips的java实现,就如JRuby之于Ruby,是AI系的代表;
Visual Rules(旗正规则引擎)国内商业规则引擎品牌。
今天对⽐了⼀下这四个颇有代表性的规则引擎的规则语⾔。其中Ilog和visual rules是商业产品,没有机会实战。
1.⼀样的If--Then 句式与Rete引擎
四者都⾢把原本杂乱不勘的if---else---elseif----else,拆成N条带优先级的
"If前提语句 then 实施语句" 的句式。
四者都主要使⽤foreward-chaining的Rete引擎,按优先级匹配条件语句,实施规则语句。
java xml是什么规则实施后会激发事实的变化,引擎⼜会重新进⾏条件匹配,直到不能再匹配为⽌,Rete的算法保证了服从的最⾼。
2.开辟⼈员操纵的规则语⾔
2.1 Drools的XML框架+Java/Groovy/Python嵌⼊语⾔
Drools的⽤XML的、 节点表达If--Then句式,⽽⾥⾯可以嵌⼊上述语⾔的代码作为判断语句和实施语句。
其中Java代码会操纵Antlr进⾏解释,⽽Groovy和Python⾃⼰即是脚本语⾔,可以直接调⽤。
Drools的聪明之处在于,⽤XML节点来典型If--Then句式和事实定义,使引擎⼲起活来很舒服。
⽽操纵Java,Groovy等原⽣语⾔来做判断和执⾏语句,让程序员很轻易过渡、移植,学习曲线很低。
hello.equals("Hello")
helloWorld( hello );
2.2 ILog的IRL(ILog Rule Language)
IRL⽤When{}Then{}表达
If--Then句式
When
{
customer:
Customer(totalTime >=1000);
}
Then
{
execute
{?customer.setAmount(getAmount()-20.00);
}⽂档称IRL的语法是Java Syntax-like的,但我怎么也看不出两者是类似的。不过他因为是商业产品,有很强⼤的编辑器和管理⼯具,编写规则的速度应该有⼀定效率。
2.3 Jess的CLIPS
jess⽤ => 表达 If-Then句式。 这CLIPS是真正的程序员专⽤语⾔,⽽且还若是很专业的程序员才习惯的⼯具。但这种原本即是⽤来做专家系统的AI语⾔,对规则的表达本事也应该是最强的。
教学⼀下下⾯这段代码,airplane有⼀个属性--name,有两个⼦类--喷⽓式和螺旋桨飞机,其中螺旋桨飞机可以适⽤任意跑道,⽽喷⽓式飞机不能使⽤Grass跑道。
; Fact templates
(deftemplate airplane (slot name))
(deftemplate jet extends airplane)
(deftemplate prop extends airplane) ;
Rules
(defrule can-use-grass-runway
(prop (name ?n))
=>
(printout t "Aircraft can use grass - " ?n
crlf))
(defrule can-use-asphalt-runway
(airplane (name ?n))
=>
(printout t "Aircraft can use asphalt - " ?n
crlf))
3.客户使⽤的规则语⾔
若是客户可以⾃⼰尽情编写规则,⽆疑是产品⼀个很⼤的卖点。⼤部分客户都爱这样的东西。⽽且也只有把规则编写交给客户,才达到了规则引擎的全数意义。
3.1 Drools的 DSLDrools的最新版Drools2.0Rc2⾥,House和Conways
game of Live两个例⼦有DSL的版本
对⽐⼀下Java版本,功效如下:
20
vs
convertToCelsius( Temperature() ) > 20但这种XML Base的DSL语法实在好不了多少,⽽且实现的代价⼀点不少,要⾃⼰实现Conditons和Consequence Factory类,⾃⾏解释那段XML,根柢上没有什么便利的底层⽀持。
实在,⼀不做⼆不竭,爽性⽤Antlr来界说真正的DSL,同样是实现Conditons和Consequence
Factory类概略更好。只不外解释XML谁都会,Antlr就没什么⼈⽤⽽已。
3.2 ILog的BAL(Business Action
Language)-已改名ODM,最强王者从⽂档来看,配合Ilog的编纂器,简直即是很完美的规则语⾔了,价格贵了点。
If
the call destination number is the preferred number
Then
apply the preferred number rate
3.3 Visual Rules(旗正规则引擎)--国内商业规则引擎代表:
完全本⼟化的国内规则引擎,有⾃主知识产权,全中⽂操作,⽐较适合国⼈习惯,在处理速度、内存占⽤⽅⾯都拥有⼀定的优势,感觉有些ILOG的翻译版本的意思,算是良⼼之作了。看看表现形式:
全中⽂操作界⾯,看起来⽐较亲切,规则表现形式也更为简洁⼈性化。有兴趣的同学可以去玩玩试⽤版本。
全中⽂操作,很容易上⼿,也较为适合业务来使⽤,可以打通IT和业务之间的沟通隔阂,个⼈挺看好的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论