規則引擎簡介


什么是規則引擎?

  • 是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來
  • 規則引擎的核心就是獲取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非常適合用來表述業務邏輯

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM