Drools简介 Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。 JBoss Rules 的前身是Codehaus的一个开源项目叫Drools。最近被纳入JBoss门下,更名为JBoss Rules,成为了JBoss应用服务器的规则引擎。 Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE,使得商业规则有了更自然的表达。 Drools的用XML的<Conditons>、<Consequence> 节点表达If--Then句式,而里面可以嵌入上述语言的代码作为判断语句和执行语句。 其中Java代码会使用Antlr进行解释,而Groovy和Python本身就是脚本语言,可以直接调用。 Drools的聪明之处在于,用XML节点来规范If--Then句式和事实的定义,使引擎干起活来很舒服。 而使用Java,Groovy等原生语言来做判断和执行语句,让程序员很容易过渡、移植,学习曲线很低。 扩展内容:规则引擎 规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的其中一个分支。专家系统属于人工智能的范畴,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论 规则引擎一般由3部分组成:规则库(Knowledge base)+Working Memory(Fact base)+推理机(规则引擎)。 规则引擎的工作:模式匹配、冲突消解、执行引擎。 模式匹配算法:将事实与规则进行匹配的算法。常见的模式匹配算法有RETE,LFA,TREAI,LEAPS。Drools采用的匹配算法就是RETE,该算法被认为是目前世界上最先进的模式匹配算法。 补充:规则引擎(rule engine)是有很多种的。依据规则的执行方式来划分。商业上采用的大部分规则引擎都是 forward chaining(汉语咋解释不知道)类型的。forward chaining类型有分为2种:(1)production/inference rules(汉语咋解释不知道)它是通过IFconditionTHEN action这种条件判断的形式来驱动规则引擎的。(2)reaction/Event Condition Action rules,这种规则引擎是通过事件机制来驱动规则引擎的。这是我从维基百科上了解的。 (责任编辑:yang) |