規(guī)則引擎的定義及體系結(jié)構(gòu)_第1頁
規(guī)則引擎的定義及體系結(jié)構(gòu)_第2頁
規(guī)則引擎的定義及體系結(jié)構(gòu)_第3頁
規(guī)則引擎的定義及體系結(jié)構(gòu)_第4頁
規(guī)則引擎的定義及體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上規(guī)規(guī)則引擎的定義及其體系結(jié)構(gòu)摘 要 隨著經(jīng)濟的迅速發(fā)展,市場的快速變化導(dǎo)致商業(yè)業(yè)務(wù)規(guī)則的變化也越來越快,因此對于企業(yè)的IT部門或者IT企業(yè)來說,這就要求設(shè)計出來的應(yīng)用系統(tǒng)能夠適應(yīng)這種快速變化。然而,軟件的開發(fā)周期和維護周期長,這和適應(yīng)快速變化的市場需求產(chǎn)生了矛盾。規(guī)則引擎的出現(xiàn)很好的解決了這一矛盾。有了規(guī)則引擎,我們可將以程序代碼的形式固化在應(yīng)用系統(tǒng)中的業(yè)務(wù)邏輯分離、抽象出來,被分離的業(yè)務(wù)邏輯以業(yè)務(wù)規(guī)則形式存儲在規(guī)則庫中,并通過規(guī)則引擎進行執(zhí)行。本文將介紹規(guī)則引擎的定義,并將以WebSphere ILOG JRules 規(guī)則引擎為例介紹其體系結(jié)構(gòu)。關(guān)鍵字 規(guī)則引擎 業(yè)

2、務(wù)規(guī)則 業(yè)務(wù)對象模型 規(guī)則執(zhí)行模型 規(guī)則調(diào)用目 錄第1章 緒論1.1規(guī)則引擎的產(chǎn)生背景第2章 規(guī)則引擎概述2.1 業(yè)務(wù)規(guī)則2.2 規(guī)則引擎2.2.1 什么是規(guī)則引擎2.2.2 使用規(guī)則引擎的優(yōu)點2.3 規(guī)則引擎運行模式第3章 規(guī)則引擎的架構(gòu)和工作機制3.1 規(guī)則引擎的架構(gòu)原理3.2 規(guī)則引擎的工作機制第4章 總結(jié)第1章 緒論1.1 規(guī)則引擎的產(chǎn)生背景隨著信息技術(shù)在企業(yè)的廣泛的應(yīng)用,企業(yè) IT 部門所開發(fā)和維護的應(yīng)用系統(tǒng)也越來越復(fù)雜,而現(xiàn)代企業(yè)要求響應(yīng)快速及靈活,他們對企業(yè)軟件也有同樣的要求。企業(yè)管理者對企業(yè)級IT系統(tǒng)的開發(fā)有著如下的要求:一、為提高效率,管理流程必須自動化,即使現(xiàn)代商業(yè)規(guī)則異常

3、復(fù)雜。二、市場要求業(yè)務(wù)規(guī)則經(jīng)常變化,IT系統(tǒng)必須依據(jù)業(yè)務(wù)規(guī)則的變化快速、低成本的更新。三、為了快速、低成本的更新,業(yè)務(wù)人員應(yīng)能直接管理IT系統(tǒng)中的規(guī)則,不需要程序開發(fā)人員參與。因此如何使應(yīng)用系統(tǒng)能夠更快的響應(yīng)的企業(yè)業(yè)務(wù)的變化已成為企業(yè) IT 發(fā)展的重要挑戰(zhàn)之一。另外,項目開發(fā)人員會碰到了以下問題:一、程序=算法+數(shù)據(jù)結(jié)構(gòu),有些復(fù)雜的商業(yè)規(guī)則很難推導(dǎo)出算法和抽象出數(shù)據(jù)模型。二、軟件工程要求從需求>設(shè)計>編碼,然而業(yè)務(wù)規(guī)則常常在需求階段可能還沒有明確,在設(shè)計和編碼后還在變化,業(yè)務(wù)規(guī)則往往嵌在系統(tǒng)各處代碼中。三、對程序員來說,系統(tǒng)已經(jīng)維護、更新困難,更不可能讓業(yè)務(wù)人員來管理。但是,當包含

4、業(yè)務(wù)邏輯的代碼隱藏在大量其他代碼中時,修改就變得緩慢、痛苦且易出錯了。因此,復(fù)雜企業(yè)級項目的開發(fā)以及其中隨外部條件不斷變化的業(yè)務(wù)規(guī)則,迫切需要分離商業(yè)決策者的商業(yè)決策邏輯和應(yīng)用開發(fā)者的技術(shù)決策,并把這些商業(yè)決策放在中心數(shù)據(jù)庫或其他統(tǒng)一的地方,讓它們能在運行時(即商務(wù)時間)可以動態(tài)地管理和修改從而提供軟件系統(tǒng)的柔性和適應(yīng)性。規(guī)則引擎正是應(yīng)用于上述動態(tài)環(huán)境中的一種解決方法。第2章 規(guī)則引擎概述2.1業(yè)務(wù)規(guī)則業(yè)務(wù)規(guī)則專家組 (BRG)規(guī)定了業(yè)務(wù)規(guī)則的兩個定義。第一個定義與業(yè)務(wù)觀點相關(guān),而第二個定義與IT相關(guān):1、“從業(yè)務(wù)的角度而言,業(yè)務(wù)規(guī)則是一種原則,包含在特定活動或范圍內(nèi)關(guān)于指導(dǎo)、操作、實踐或過程

5、的行為規(guī)范?!?2、“從IT角度而言,規(guī)則是可集成到現(xiàn)有基礎(chǔ)結(jié)構(gòu)(如基于應(yīng)用程序或面向服務(wù)的體系結(jié)構(gòu))的決策系統(tǒng)的靈活實現(xiàn)?!币粋€業(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è)置一個或多個條件,當滿足這些條件時會觸發(fā)一個或多個操作。 運行時,規(guī)則引擎必須對這些業(yè)務(wù)規(guī)則進行解釋。可以將規(guī)則引擎理解為一種高性能的專用解釋程序,其中包含if-then命令,可根據(jù)預(yù)先定義的規(guī)則對轉(zhuǎn)換的值和對象進行分析,然后返回修改后

6、的值和對象,或直接執(zhí)行操作。2.2 規(guī)則引擎 2.2.1 什么是規(guī)則引擎規(guī)則引擎由推理引擎發(fā)展而來,是一種嵌入在應(yīng)用程序中的組件,實現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來,并使用預(yù)定義的語義模塊編寫業(yè)務(wù)決策。接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)業(yè)務(wù)規(guī)則做出業(yè)務(wù)決策。其中,推理引擎由三部分組成,它們分別是規(guī)則解釋器Rule Interprete、模式匹配器Pattern Matcher和議程Agenda。模式匹配器從規(guī)則庫中找出需要執(zhí)行的規(guī)則并寫入議程;議程為這些規(guī)則賦予優(yōu)先級,確定執(zhí)行順序;規(guī)則解釋器執(zhí)行這些規(guī)則并輸出運行結(jié)果。規(guī)則引擎具有以下功能:1、能夠?qū)㈥P(guān)鍵的業(yè)務(wù)規(guī)則與其他源代碼分開保存。

7、它使用戶能夠迅速實施業(yè)務(wù)邏輯的更改而不必重新編寫應(yīng)用程序。2、它使用了XOM,即定義應(yīng)用執(zhí)行規(guī)則的類。這些類可以有不同的數(shù)據(jù)來源,這些數(shù)據(jù)可以在XOM中像對Java類一樣進行查看和處理。例如,XOM使用了功能強大的XML綁定系統(tǒng),使規(guī)則引擎能夠直接對XML數(shù)據(jù)或Web Service所提供的數(shù)據(jù)進行操作。3、通過嵌入方式,可以在任何Java應(yīng)用程序中執(zhí)行業(yè)務(wù)規(guī)則,并支持多種部署方案,從而優(yōu)化了系統(tǒng)性能和擴展性。2.2.2 使用規(guī)則引擎的優(yōu)點使用規(guī)則引擎可以通過降低實現(xiàn)復(fù)雜業(yè)務(wù)邏輯的組件的復(fù)雜性,降低應(yīng)用程序的維護和可擴展性成本,其優(yōu)點如下: 1、分離商業(yè)決策者的商業(yè)決策邏輯和應(yīng)用開發(fā)者的技術(shù)決

8、策; 2、能有效的提高實現(xiàn)復(fù)雜邏輯的代碼的可維護性; 3、在開發(fā)期間或部署后修復(fù)代碼缺陷; 4、應(yīng)付特殊狀況,即客戶一開始沒有提到要將業(yè)務(wù)邏輯考慮在內(nèi); 5、符合組織對敏捷或迭代開發(fā)過程的使用;2.3 規(guī)則引擎的運行模式 規(guī)則引擎根據(jù)規(guī)則的不同應(yīng)用場景和業(yè)務(wù)規(guī)則的特點提供了三種常用的不同的運行模式:RetePlus、Sequential 和 FastPath。下面將以當前最主流的規(guī)則引擎JRules ILog 為例介紹這三種運行模式。RetePlusRete是目前主流的規(guī)則引擎模式匹配算法,RetePlus 則是 JRules 在 Rete 算法上的擴展和優(yōu)化,也是 JRules 規(guī)則引擎默認

9、的運行模式。RetePlus 運行模式為 ILOG 規(guī)則引擎提供了種種手段,用以盡量減少需要加以評估的規(guī)則和條件的數(shù)量,計算哪些規(guī)則應(yīng)當執(zhí)行,并確定這些規(guī)則的執(zhí)行順序。在 RetePlus 算法中,規(guī)則引擎使用 Working memory(工作內(nèi)存) 和 Agenda來存放和操作應(yīng)用程序?qū)ο?。Working memory 中包含的應(yīng)用程序?qū)ο蟮囊?,Agenda 則按順序列出將要執(zhí)行的規(guī)則實例。如圖1所示: 圖 1. RetePlus 執(zhí)行模式具體執(zhí)行過程如下:1、規(guī)則引擎依據(jù) Working Memory 中的數(shù)據(jù)對象來匹配規(guī)則集中規(guī)則的條件部分。在模式匹配過程中,RetePlus 首先創(chuàng)

10、建出以規(guī)則條件測試之間的語義關(guān)系為基礎(chǔ)的網(wǎng)絡(luò)(步驟 1),然后將匹配的規(guī)則實例化并添加到 Agenda 中,隨后對 Agenda 中的規(guī)則按照一定原則進行排序(步驟2)。2、執(zhí)行 Agenda 中的規(guī)則實例,即執(zhí)行規(guī)則的動作(Action)部分。同時,規(guī)則實例的執(zhí)行也會影響 Working Memory 中的數(shù)據(jù)對象,主要方式有:(步驟3):(1)往 Working Memory 中加入一個新的對象(2)移除 Working Memory 中現(xiàn)有對象(3)修改現(xiàn)有對象的屬性3、 以上過程將不斷重復(fù),直至執(zhí)行完 Agenda 中所有規(guī)則實例。在RetePlus 算法中每當 Working Mem

11、ory 被修改,規(guī)則引擎將重復(fù)模式匹配的過程。它在每次規(guī)則執(zhí)行數(shù)據(jù)修改后重新評估每個規(guī)則匹配。這可能會改變 Agenda 中的規(guī)則實例。因此,RetePlus 是漸進的和數(shù)據(jù)驅(qū)動的。這些特點使 RetePlus 在計算和關(guān)聯(lián)性類型的應(yīng)用方面擁有卓越的性能。Sequential順序運行模式,顧名思義,即規(guī)則引擎按順序執(zhí)行 rule task 中符合條件的所有規(guī)則。如圖 2 所示: 圖 2. 順序執(zhí)行模式具體執(zhí)行過程如下:1、 規(guī)則引擎根據(jù)輸入?yún)?shù)以及 working memory 中的對象集合和規(guī)則的條件部分進行匹配。每次匹配都將生成一個規(guī)則實例并立即運行。(步驟 1)2、 當規(guī)則實例被執(zhí)行后,

12、它有可能設(shè)置屬性或規(guī)則集輸出參數(shù)的值。(步驟 2)順序算法執(zhí)行的規(guī)則是無狀態(tài)的。順序算法的運行就像堆棧一樣,匹配的規(guī)則只會運行一次,而不會再次評估。因此在順序模式下,規(guī)則中不能使用類似“至少有一 個 < 詞匯 >”、“如下對象的數(shù)目:< 詞匯 >”等等跟 working memory 中對象有關(guān)系的存在性條件(existence conditions),除非這個對象是集合類型。順序模式的特性決定了其在校驗和一致性等類型的應(yīng)用中有良好的性能表現(xiàn)。FastPathFastpath 運行模式是增強型的順序運行模式,和順序模式類似,F(xiàn)astpath 也是順序運行,但是它同時還能

13、和 RetePlus 模式一樣在進行模式匹配時檢測規(guī)則條件的語義關(guān)系。如圖 3所示: 圖 3.FastPath 執(zhí)行模式具體執(zhí)行過程如下:1、在 Fastpath 模式中,規(guī)則引擎可以通過 working memory 引用應(yīng)用數(shù)據(jù)對象或規(guī)則集參數(shù)。與 Reteplus 類似,在模式匹配時 Fastpath 同樣創(chuàng)建以規(guī)則條件測試之間的語義關(guān)系為基礎(chǔ)的網(wǎng)絡(luò)(步驟 1)。2、每次匹配,將創(chuàng)建一個規(guī)則實例并立即執(zhí)行。規(guī)則實例執(zhí)行后,它可能修改 working memory 中的對象,但是這些修改不會影響其它規(guī)則的執(zhí)行,并且規(guī)則引擎也不會重復(fù)模式匹配的過程(步驟 2)。Fastpath 綜合了 Re

14、teplus 的模式匹配和順序運行模式的規(guī)則執(zhí)行的特性,從這個意義上來說,它在關(guān)聯(lián)型應(yīng)用和校驗類應(yīng)用中都有較好表現(xiàn)。和順序運行模式一樣,F(xiàn)astpath 運行模式也是無狀態(tài)的,適合在大量單獨執(zhí)行簡單判定或少量交叉測試的規(guī)則上進行對象匹配。這樣一些規(guī)則集可以在沒有任何 agenda 支持下很好的按順序執(zhí)行。除了作為一種變異的順序模式的優(yōu)勢,F(xiàn)astpath 運行模式的目的是進一步優(yōu)化一致性和校驗性類型規(guī)則的執(zhí)行,通常這些類型的規(guī)則占據(jù)了商業(yè)規(guī)則的絕大部分。第3章 規(guī)則引擎的體系結(jié)構(gòu)3.1 規(guī)則引擎的架構(gòu)原理1、規(guī)則引擎的架構(gòu)如圖4所示:圖4.業(yè)務(wù)規(guī)則引擎架構(gòu)2、 規(guī)則引擎的推理步驟如下: (1)

15、將初始數(shù)據(jù)(fact)輸入至工作內(nèi)存(Working Memory)。 (2)使用Pattern Matcher將規(guī)則庫(Rules repository)中的規(guī)則(rule)和數(shù)據(jù)(fact)比較。 (3)如果執(zhí)行規(guī)則存在沖突(conflict),即同時激活了多個規(guī)則,將沖突的規(guī)則放入沖突集合。 (4)解決沖突,將激活的規(guī)則按順序放入Agenda。 (5)執(zhí)行Agenda中的規(guī)則。重復(fù)步驟(2)至(5),直到執(zhí)行完畢Agenda中的所有規(guī)則。上述即是規(guī)則引擎的原始架構(gòu),商業(yè)規(guī)則引擎就是從這一原始架構(gòu)演變而來的。3.2 規(guī)則引擎的工作機制規(guī)則引擎是一種根據(jù)規(guī)則中包含的指定過濾條件,判斷其能否匹

16、配運行時刻的實時條件來執(zhí)行規(guī)則中所規(guī)定的動作的引擎。為更好的理解并闡述規(guī)則引擎的工作機制,下面先介紹四個與規(guī)則引擎相關(guān)的基本概念。1、 信息元(Information Unit)信息元是規(guī)則引擎的基本建筑塊,它是一個包含特定事件的所有信息的對象。這些信息包括:消息、產(chǎn)生事件的應(yīng)用程序標識、事件產(chǎn)生事件、信息元類型、相關(guān)規(guī)則集、通用方法、通用屬性以及一些系統(tǒng)相關(guān)信息。2、 信息服務(wù)(Information Services)信息服務(wù)產(chǎn)生信息元對象。每個信息服務(wù)產(chǎn)生它自己類型相對應(yīng)的信息元對象。即特定信息服務(wù)根據(jù)信息元所產(chǎn)生的每個信息元對象有相同的格式,但可以有不同的屬性和規(guī)則集。需要注意的事,在

17、一臺機器上可以運行許多不同的信息服務(wù),還可以運行同一信息服務(wù)的不同實例。但無論如何,每個信息服務(wù)只產(chǎn)生它自己類型相對應(yīng)的信息元。3、 規(guī)則集(Rule Set)顧名思義,規(guī)則集就是許多規(guī)則的集合。每條規(guī)則包含一個過濾器和多個動作。一個條件過濾器可以包含多個過濾條件。條件過濾器是多個布爾表達式的組合,其組合結(jié)果仍然是一個布爾類型的。在程序運行時,動作將會在條件過濾器值真的情況下執(zhí)行。除了一般的執(zhí)行動作,還有三類比較特別的動作,它們分別是:放棄動作(Discard Action)、包含動作(Include Action)和使信息元對象內(nèi)容持久化的動作。4、 隊列管理器(Queue Manager)

18、隊列管理器用來管理來自不同信息服務(wù)的信息元對象的隊列。下面介紹規(guī)則引擎的工作機制。規(guī)則引擎從隊列管理器中依次接收信息元(若是java規(guī)則引擎,即為java對象),然后依規(guī)則定義的順序檢查第一個規(guī)則并對其條件過濾器求值,如果值為假,所有與此規(guī)則相關(guān)的動作皆被忽略并繼續(xù)執(zhí)行下一條規(guī)則。如果第二條規(guī)則的過濾器值為真,所有與此規(guī)則相關(guān)的動作皆依定義順序執(zhí)行,執(zhí)行完畢繼續(xù)下一條規(guī)則。該信息元中的所有規(guī)則執(zhí)行完畢后,信息元將被銷毀,然后從隊列管理器接收下一個信息元。在這個過程中并考慮兩個特殊動作:放棄動作(Discard Action)和包含動作(Include Action)。放棄動作如果被執(zhí)行,將會跳過其所在信息元中接下來的規(guī)則,并銷毀所在信息元,規(guī)則引擎繼續(xù)接收隊列管理器中的下個信息元。包含動作其實就是動作中包含其它現(xiàn)存規(guī)則集的動作。包含動作如果被執(zhí)行,規(guī)則引擎將暫停并進入被包含的規(guī)則集,執(zhí)行完畢后,規(guī)則引擎還會返回原來暫停的地方繼續(xù)執(zhí)行。以上過程將遞歸進行。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論