本文第一部分簡要介紹了規(guī)則引擎的產(chǎn)生背景和基于規(guī)則的專家系統(tǒng),第二部分介紹了什么是規(guī)則引擎及其架構(gòu)和算法,第三部分介紹了商業(yè)產(chǎn)品和開源項(xiàng)目實(shí)現(xiàn)等各種Java規(guī)則引擎,第四部分對(duì)Java規(guī)則引擎API(JSR-94)作了具體介紹,講解了其體系結(jié)構(gòu),治理API和運(yùn)行時(shí)API及相關(guān)安全問題,第五部分則對(duì)規(guī)則語言及其標(biāo)準(zhǔn)化作了探討,第六部分給出了一個(gè)使用Java規(guī)則引擎API的簡單示例,第七部分給予小結(jié)和展望。
1、 介紹
1.1 規(guī)則引擎產(chǎn)生背景
企業(yè)治理者對(duì)企業(yè)級(jí)IT系統(tǒng)的開發(fā)有著如下的要求:(1)為提高效率,治理流程必須自動(dòng)化,即使現(xiàn)代商業(yè)規(guī)則異常復(fù)雜(2)市場要求業(yè)務(wù)規(guī)則經(jīng)常變化,IT系統(tǒng)必須依據(jù)業(yè)務(wù)規(guī)則的變化快速、低成本的更新(3)為了快速、低成本的更新,業(yè)務(wù)人員應(yīng)能直接治理IT系統(tǒng)中的規(guī)則,不需要程序開發(fā)人員參與。
而項(xiàng)目開發(fā)人員則碰到了以下問題:(1)程序=算法+數(shù)據(jù)結(jié)構(gòu),有些復(fù)雜的商業(yè)規(guī)則很難推導(dǎo)出算法和抽象出數(shù)據(jù)模型(2)軟件工程要求從需求->設(shè)計(jì)->編碼,然而業(yè)務(wù)規(guī)則經(jīng)常在需求階段可能還沒有明確,在設(shè)計(jì)和編碼后還在變化,業(yè)務(wù)規(guī)則往往嵌在系統(tǒng)各處代碼中(3)對(duì)程序員來說,系統(tǒng)已經(jīng)維護(hù)、更新困難,更不可能讓業(yè)務(wù)人員來治理。
基于規(guī)則的專家系統(tǒng)的出現(xiàn)給開發(fā)人員以解決問題的契機(jī)。規(guī)則引擎由基于規(guī)則的專家系統(tǒng)中的推理引擎發(fā)展而來。下面簡要介紹一下基于規(guī)則的專家系統(tǒng)。
1.2 基于規(guī)則的專家系統(tǒng)(RBES)
專家系統(tǒng)是人工智能的一個(gè)分支,它模擬人類的推理方式,使用試探性的方法進(jìn)行推理,并使用人類能理解的術(shù)語解釋和證實(shí)它的推理結(jié)論。專家系統(tǒng)有很多分類:神經(jīng)網(wǎng)絡(luò)、基于案例推理和基于規(guī)則系統(tǒng)等。
RBES包括三部分:Rule Base(knowledge base)、Working Memory(fact base)和Inference Engine(推理引擎)。它們的結(jié)構(gòu)如下所示:
圖1.基于規(guī)則的專家系統(tǒng)組成
如上圖所示,推理引擎包括三部分:Pattern Matcher、Agenda和Execution Engine。Pattern Matcher何時(shí)執(zhí)行哪個(gè)規(guī)則;Agenda治理PatternMatcher挑選出來的規(guī)則的執(zhí)行次序;Execution Engine負(fù)責(zé)執(zhí)行規(guī)則和其他動(dòng)作。
推理引擎通過決定哪些規(guī)則滿足事實(shí)或目標(biāo),并授予規(guī)則優(yōu)先級(jí),滿足事實(shí)或目標(biāo)的規(guī)則被加入議程。存在兩者推理方式:演繹法(Forward-Chaining正向鏈)和歸納法(Backward-Chaining反向鏈)。演繹法從一個(gè)初始的事實(shí)出發(fā),不斷地應(yīng)用規(guī)則得出結(jié)論(或執(zhí)行指定的動(dòng)作)。而歸納法則是從假設(shè)出發(fā),不斷地尋找符合假設(shè)的事實(shí)。
2、 規(guī)則引擎
2.1 業(yè)務(wù)規(guī)則
一個(gè)業(yè)務(wù)規(guī)則包含一組條件和在此條件下執(zhí)行的操作,它們表示業(yè)務(wù)規(guī)則應(yīng)用程序的一段業(yè)務(wù)邏輯。業(yè)務(wù)規(guī)則通常應(yīng)該由業(yè)務(wù)分析人員和策略治理者開發(fā)和修改,但有些復(fù)雜的業(yè)務(wù)規(guī)則也可以由技術(shù)人員使用面向?qū)ο蟮募夹g(shù)語言或腳本來定制。業(yè)務(wù)規(guī)則的理論基礎(chǔ)是:設(shè)置一個(gè)或多個(gè)條件,當(dāng)滿足這些條件時(shí)會(huì)觸發(fā)一個(gè)或多個(gè)操作。
2.2 規(guī)則引擎
什么是規(guī)則引擎?規(guī)則引擎是如何執(zhí)行規(guī)則的?這可以稱之為"什么"與"如何"的問題。到底規(guī)則引擎是什么還是目前業(yè)界一個(gè)比較有爭議的問題,在JSR-94種也幾乎沒有定義。可以這樣認(rèn)為充分定義和解決了"如何"的問題,"什么"問題本質(zhì)上也迎刃而解。也許這又是一種"先有蛋還是先有雞"哲學(xué)爭論。今后標(biāo)準(zhǔn)規(guī)則語言的定義和推出及相關(guān)標(biāo)準(zhǔn)的制定應(yīng)該可以給這樣的問題和爭論劃上一個(gè)句號(hào)。本文中,暫且這樣述說什么是規(guī)則引擎:規(guī)則引擎由推理引擎發(fā)展而來,是一種嵌入在應(yīng)用程序中的組件,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來,并使用預(yù)定義的語義模塊編寫業(yè)務(wù)決策。接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)規(guī)則做出業(yè)務(wù)決策。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注