规则引擎简介

什么是规则引擎?

  • 是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来
  • 规则引擎的核心就是获取knowledge(知识)
  • 应用knowledge到特定的数据上(fact)
  • 使用 “production rules(产生式规则)” IF <conditions> THEN <actions> Rule表达逻辑(任何逻辑都可以用这种方式表达)

什么是规则?

  • 一个rule由conditions,和actions组成。当所有的conditions匹配,rule可能“fire”  Conditions即LHS(left hand side)
  • Actions即RHS(right hand side或者consequence)
  • Rule操纵应用程序中的数据( fact )

术语:

  • Rule engines(比如Drools)使用正向或者反向链(或者混合使用)
  • 正向链从事实到结论的推理。rule在LHS conditions匹配的时候执行。Actions可以改变facts,并可能导致新rule被fire。
  • 反向链指则是从假设,即要证明的结论,到事实的推理

推理引擎:

  • 规则系统的大脑实际上就是一个推理引擎,用于匹配facts和rules
  • 推理引擎将事实、数据与产生式规则进行匹配(模式匹配),以推出结论
  • 当匹配被找到,rule actions被fire
  • Actions—经常会改变facts的状态,或者在应用上执行一些“外部”action

         

正向链

何时使用规则引擎

  • 当没有更让人满意的“传统”方案
  • 当遇到以下问题:

    太复杂
    没有已知的算法
    太易变

JBoss Drools

  Drools是一个业务逻辑集成平台,基于JAVA和RATE算法的产生式规则引擎实现,是Red Hat旗下的开源产品.

 

  Drools历史
    2001年,Drools问世,基于线性蛮力搜索
    在2.0版本后,又基于Rate算法进行了重写,提高了Drools的性能,规则文件主要以XML为主
    在3.0版本,引入了.drl文件格式,它是一种领域特定语言(DSL)专门针对规则编写
    在5.0版本,引入了Drools Funsion/Flow rule等重要功能模块

 

  Drools组成模块

               

 

 

总结:

  • Rules技术提供了一种新的方式用于创建业务应用系统,通过“声明式”的rule语言写业务逻辑,而不是传统的程序语言
  • Rule engine非常适合解决复杂问题,且在没有更好的其他
  • Rule engine非常适合用来表述业务逻辑

 

 

  

posted @ 2017-11-12 18:56  七夜·雪  阅读(27960)  评论(0编辑  收藏  举报