ilog jrules 是最有名的商用brms,刚拿了jolt;drools 是最活跃的开源规则引擎,一路高歌猛进;jess 是clips的java实现,就如jruby之于ruby,是ai系的代表.
1.一样的if--then 句式与rete引擎 【程序编程相关:利用Eclipse编辑中文资源文件】
今天对比了一下这三个颇有代表性的规则引擎的规则语言.其中ilog是商业产品,没有机会实战. 【推荐阅读:第一次感受DI & java.l】
2.开发人员使用的规则语言 【扩展信息:Servlet基本结构】
三者都会把原来混乱不堪的if---else---elseif----else谜团, 拆成n条带优先级的"if 条件语句 then 执行语句" 的句式. 三者都主要使用foreward-chaining的rete引擎,按优先级匹配条件语句,执行规则语句. 规则执行后会引发事实的变化,引擎又会重新进行条件匹配,直到不能再匹配为止,rete的算法保证了效率的最高.
2.1 drools的xml框架+java/groovy/python嵌入语言
drools的用xml的<conditons>.<consequence> 节点表达if--then句式,而里面可以嵌入上述语言的代码作为判断语句与执行语句. 其中java代码会使用antlr进行解释,而groovy与python本身就是脚本语言,可以直接调用. drools的聪明之处在于,用xml节点来规范if--then句式与事实的定义,使引擎干起活来很舒服. 而使用java,groovy等原生语言来做判断与执行语句,让程序员很容易过渡.移植,学习曲线很低.
<java:condition> hello.equals("hello") </java:condition> <java:consequence> helloworld( hello ); </java:consequence>2.2 ilog的irl(ilog rule language)
... 下一页