• 规则引擎简介


    什么是规则引擎?

    • 是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来
    • 规则引擎的核心就是获取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非常适合用来表述业务逻辑

      

  • 相关阅读:
    Connected Components? Codeforces
    洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control
    洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)
    表达式求值
    费用流(自用,勿看)
    二分图??(自用,勿看)
    C 标准库
    Linux-socket使用
    C 标准库
    C 标准库
  • 原文地址:https://www.cnblogs.com/qiyexue/p/7822464.html
Copyright © 2020-2023  润新知