1. 規(guī)則引擎介紹
1.1 傳統(tǒng)業(yè)務(wù)編程與聲明式編程
(1)傳統(tǒng)業(yè)務(wù)編程
傳統(tǒng)業(yè)務(wù)編程
(2) 聲明式編程
聲明式編程
1.2 業(yè)務(wù)規(guī)則面臨的問題
- 業(yè)務(wù)規(guī)則欺缘、商業(yè)邏輯復(fù)雜
- 業(yè)務(wù)規(guī)則經(jīng)常變換
- 24小時(shí)不停機(jī)栋豫,實(shí)時(shí)修改商業(yè)規(guī)則
1.3 規(guī)則引擎解決的問題
- 聲明式編程 -- Rule Engine 允許你說"做什么(What)", 而不是"怎么去做(How to do)"
- Rule系統(tǒng)能解決非常,非常困難的難題
- 邏輯和數(shù)據(jù)分離
- 快捷和靈活
- 易于理解
- 可靠的性能:基于RETE算法
- 將需求轉(zhuǎn)化成規(guī)則
1.4 什么是規(guī)則引擎
- 是一種嵌入到應(yīng)用程序中的組件谚殊,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序中分離出來
- 規(guī)則引擎的核心就是獲取knowledge (知識)
- 應(yīng)用knowledge到特定的數(shù)據(jù)上(fact)
- 使用 "production rules(產(chǎn)生式規(guī)則)"
- IF <conditions> THEN <actions>
- Rule表達(dá)邏輯(任何邏輯都可以使用這種方式表達(dá))
1.5 什么是規(guī)則
- 一個(gè)rule 由conditions和actions組成丧鸯。當(dāng)所有的conditions匹配,rule可能"fire"
- conditions 即LHS (left hand side)
- Actions 即RHS (right hand side 或者 consequence)
- Rule操縱應(yīng)用程序中的數(shù)據(jù)(fact)
(1) 規(guī)則例子 -- 訂單折扣
訂單折扣規(guī)則
1.6 術(shù)語
- Rule engines (比如drools)使用正向或者反向鏈(或者混合使用)
- 正向鏈從事實(shí)到結(jié)論的推理嫩絮。
- rule在LHS conditions匹配的時(shí)候執(zhí)行丛肢。
- Actions可以改變facts, 并可能導(dǎo)致新rule被fire。
- 反向鏈則是指 從假設(shè)剿干,即要證明的結(jié)論蜂怎,到事實(shí)的推理。
1.7 推理引擎
推理引擎
(1) 推理例子
推理例子
(2) 正向鏈
正向鏈
1.8 何時(shí)使用規(guī)則引擎
- 當(dāng)沒有更讓人滿意的"傳統(tǒng)"方案
- 當(dāng)遇到以下問題:
-- 太復(fù)雜
-- 沒有已知的算法
-- 太易變
2. JBoss Drools介紹
2.1 什么是JBoss Drools
什么是Boss Drools
2.2 Drools組成模塊
Drools組成模塊
2.3 Drools 5.x 特性
Drools 5.x 特性
2.4 Drools IDE
Drools eclipse IDE
IDEA 是否有對應(yīng)的Drools IDE插件 這個(gè)需要查資料置尔。
3. Drools開發(fā)環(huán)境搭建與創(chuàng)建樣例
用到的時(shí)候杠步,再直接google 搜索。。幽歼。
4. 案例解析
案例
Fred
Joe
Bob
Tom
3. Drools規(guī)則引擎
3.1 規(guī)則語言基礎(chǔ)
什么是規(guī)則
什么是Facts
規(guī)則文件
Rule格式
Rule例子
3.2 Conditions/LHS
LHS
匹配模式(Patterns)
條件元素(Conditional Elements)
條件例子
其他條件
Exists例子
Not例子
from例子
collect例子
accumulate例子
字段連接約束
字段連接約束例子
字段約束操作符
contains字段約束操作符
memberOf字段約束操作符
matches字段約束操作符
3.3 Consequence/RHS
RHS
RHS例子
Modify塊
3.4 Header
屬性部分
salience
no-loop
data-effective
data-expires
enabled
duration
activation-group
agenda-group
lock-on-active
dialect