規則引擎及drools簡介

規則引擎介紹

規則引擎定義

以下是百度百科的介紹:

規則引擎由推理引擎發展而來,是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來,並使用預定義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,並根據業務規則做出業務決策。

在傳統的軟件開發中,業務決策和程序代碼是糅合在一起的。伴隨複雜、多變的業務邏輯,勢必會頻繁修改代碼,規則引擎的提出,解決了上述難題。

Drools引入

以下是Drools官方文檔的介紹,目前Drools的最新版本爲7.19.0.Final

Drools是一個業務規則管理系統,具有基於前向鏈接和後向鏈接推理的規則引擎,允許快速可靠地評估業務規則和複雜的事件處理。 規則引擎也是創建專家系統的基本構建塊,在人工智能中,該專家系統是模擬人類專家的決策能力的計算機系統。

Drools是爲Java量身定製的基於Charles Forgy的RETE算法的規則引擎的實現。

一個規則文件

一個標準的規則文件是以.drl結尾的文件(支持決策表,Drools 提供的編譯API也會先轉化爲.drl文件),.drl文件最終會編譯成.java文件執行。

一個規則文件可以存放多個規則,除此之外,在規則文件當中還可以存放用戶自定義的函數、數據對象及自定義查詢等相關在規則當中可能會用到的一些對象。

文件結構圖如下:
package
imports
globals
functions
queries
rules

對於一個規則文件而言,首先聲明 package 是必須的,除 package 之外,其它對象在規
則文件中的順序是任意的,也就是說在規則文件當中必須要有一個 package 聲明,同時
package 聲明必須要放在規則文件的第一行。一個規則通常包括三個部分:屬性部分(attribute) 、條件部分(LHS)和結果部分(RHS) 一個標準規則的結構如下:

      Rule "Hello"
      when
              LHS
      then
              RHS
      end

看起來很簡單。大多數情況下都不需要標點符號,規則名“name”前面的雙引號也是可選的,換行符也是如此。 LHS是規則的條件部分, RHS是滿足條件執行的操作部分。
有關Drools語法的介紹,可以參考官方文檔或者網上相關的博客。

規則 vs 方法

在剛學習Drools的時候,容易混淆規則和普通的java類或者方法,可以參考規則和方法的區別

結語

在下節中,將基於Springboot展示一些Demo,關於Springboot的介紹可以參考純潔的微笑的相關博客。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章