【正文】
查。一個 BetaNode的左輸入通常是一個對象的列表,在 Drools中稱之為元組(Tuple) 。這兩個對象可以是同種類型,也可以是不同類型。圖 AlphaNode節(jié)點(diǎn)針對 Cheese對象的鏈接情況,假定規(guī)則為:Cheese( name == cheddar, strength == strong )圖 Alpha節(jié)點(diǎn)2input節(jié)點(diǎn)即 BetaNode,BetaNode 有兩種:JoinNode(連接節(jié)點(diǎn))和NotNode(非節(jié)點(diǎn)) 。在Fy博士的論文中只提到了等式操作,但許多 Rete算法的實(shí)現(xiàn)還支持其它操作。后續(xù)節(jié)點(diǎn)可能是AlphaNode、LeftInputAdapterNode 或 BetaNode等(這些類型的節(jié)點(diǎn)的介紹見后文) 。ObjectTypeNode 對象類型節(jié)點(diǎn),通常是最初級的過濾節(jié)點(diǎn),只有類型與規(guī)則相匹配的對象才能通過此節(jié)點(diǎn)的過濾。另外,在匹配過程中還會出現(xiàn)其它的節(jié)點(diǎn),如對象類型節(jié)點(diǎn)、求值節(jié)點(diǎn)和左輸入適配器節(jié)點(diǎn)等,如圖 。當(dāng)順著網(wǎng)絡(luò)往下走,通過層層過濾,離根節(jié)點(diǎn)越遠(yuǎn)的節(jié)點(diǎn),其匹配的數(shù)據(jù)也就越少,網(wǎng)絡(luò)的最底部是終止節(jié)點(diǎn)。規(guī)則的編譯描述了如何在規(guī)則工作空間中產(chǎn)生一個有效的辨別網(wǎng)絡(luò),方法是在匹配網(wǎng)絡(luò)的傳遞過程中過濾數(shù)據(jù)。其核心思想是根據(jù)內(nèi)容動態(tài)構(gòu)造匹配樹,在匹配的過程中大量使用記憶和共享,以避免不必要的重復(fù)計(jì)算,達(dá)到顯著降低計(jì)算量的目的。梅隆大學(xué)的 Charles L. Fy 在他的博士論文中發(fā)表 [16],1982 年曾公開發(fā)表過 Rete算法的一個簡化版。模式匹配算法是影響規(guī)則引擎性能的關(guān)鍵部分,本節(jié)討論 Drools所實(shí)現(xiàn)的 Rete算法,下節(jié)將介紹 Leaps算法。議程(Agenda)使用沖突解決策略來管理這些有沖突的規(guī)則的執(zhí)行順序。下面是一幅來自 JBoss官方文檔記載的 Drools系統(tǒng)結(jié)構(gòu)圖 [13]:圖 Drools系統(tǒng)結(jié)構(gòu)圖 如圖 ,Drools 把規(guī)則(rule)保存在規(guī)則庫(Production Memory)中,推理機(jī)要匹配的事實(shí)(fact)保存在工作內(nèi)存(Working Memory)中。一個使用了規(guī)則管理技術(shù)的信息系統(tǒng)的體系結(jié)構(gòu)如圖 :圖 在上述的圖中,規(guī)則引擎被嵌入到商業(yè)應(yīng)用系統(tǒng)中,IT 技術(shù)人員通過系統(tǒng)集成環(huán)境(IDE)來創(chuàng)建和管理業(yè)務(wù)規(guī)則;而業(yè)務(wù)人員通過專有的規(guī)則管理程序工程碩士學(xué)位論文 第二章 相關(guān)理論基礎(chǔ)8來管理業(yè)務(wù)規(guī)則,不需要技術(shù)人員的干預(yù);企業(yè)的業(yè)務(wù)規(guī)則庫被獨(dú)立出來集中管理。此外,Drools 還附帶有相應(yīng)的系統(tǒng)開發(fā)集成環(huán)境,包括一整套的開發(fā)、測試、部署工具。Drools Flow 是一個工作流系統(tǒng)。其中 Drools Guvnor是一個規(guī)則管理系統(tǒng)(Business Rule Management System簡稱 BRMS) ,它的主要部分是一個基于 WEB的可以用來管理規(guī)則庫的應(yīng)用程序。本文以 Drools ,文中所提到的概念、所討論的開發(fā)、測試、部署方法等均以 Drools 。在筆者寫作本文時 Drools的最新版本是 ,但從 Drools 的開源規(guī)則引擎,目前界業(yè)還有不少遺留系統(tǒng)使用的是 Drools 。絕大多數(shù)開源或商業(yè)規(guī)則引擎的工作原理與 Drools 規(guī)則引擎的工作原理大同小異,所以這里介紹的規(guī)則引擎工作原理也同樣適用于其它規(guī)則引擎。工程碩士學(xué)位論文 第一章 緒論6第五章 總結(jié)全文、指出本文的獨(dú)到之處、展望未來的研究方向。討論如何在 ERP基礎(chǔ)框架中使用 Drools規(guī)則引擎、討論了數(shù)據(jù)校驗(yàn)、數(shù)據(jù)聯(lián)動、信息交換、工作流等各種常見場景下規(guī)則引擎的應(yīng)用方法、可能產(chǎn)生的問題及解決辦法。第三章 介紹開源規(guī)則引擎系統(tǒng) Drools的工作原理及目前大多數(shù)規(guī)則引擎所使用的模式匹配算法――RETE 算法及 LEAPS算法。第一章為緒論;第 2至 5章為本文研究內(nèi)容;第 6章為總結(jié)與展望。本文重點(diǎn)研究如何在 ERP系統(tǒng)中應(yīng)用規(guī)則引擎技術(shù),以應(yīng)對復(fù)雜業(yè)務(wù)邏輯,提高系統(tǒng)的動態(tài)可修改性,并降低系統(tǒng)維護(hù)的成本。 論文研究內(nèi)容及組織結(jié)構(gòu) 論文的研究內(nèi)容傳統(tǒng)的 ERP系統(tǒng)在應(yīng)對復(fù)雜的業(yè)務(wù)邏輯、業(yè)務(wù)邏輯經(jīng)常變化以及降低系統(tǒng)維護(hù)成本等問題時,幾乎無一例外地依靠如數(shù)據(jù)庫系統(tǒng)、文件配置系統(tǒng)和腳本技術(shù)。腳本語言的動態(tài)性是眾所周知的,從某個角度來說,腳本引擎的動態(tài)能力甚至遠(yuǎn)超規(guī)則引擎,所以在很多場合,我們完全可以通過預(yù)留接口調(diào)用腳本引擎來實(shí)現(xiàn)需求。這類系統(tǒng)的缺點(diǎn)是:它只能在一個相對固定的范圍內(nèi)很好地工作,超出這個范圍,它很可能就會失控或者無能為力。下面就是兩種傳統(tǒng)上最常見的用來替代規(guī)則引擎的技術(shù):1)借助元數(shù)據(jù)或數(shù)據(jù)庫來描述規(guī)則的系統(tǒng)。另一方面,在某些場合不使用規(guī)則引擎就可以輕易實(shí)現(xiàn)需求;或者某些場合規(guī)則引擎可能難以滿足實(shí)際需求。但規(guī)則引擎也有它自身的缺點(diǎn),在決定一個軟件系統(tǒng)中是否使用規(guī)則引擎時我們應(yīng)該衡量各方面的利弊再做決定。例如,用于可配置的系統(tǒng)框架、用于需要動態(tài)配置的工作流系統(tǒng)、用于需要經(jīng)常調(diào)整決策的業(yè)務(wù)系統(tǒng)等等。當(dāng)前,規(guī)則引擎產(chǎn)品在實(shí)際業(yè)務(wù)中已經(jīng)有了一些成功的應(yīng)用案例,特別是在金融、保險(xiǎn)和電信業(yè),例如光大銀行和太平人壽保險(xiǎn)就使用了 ILOG公司的 JRules規(guī)則系統(tǒng) [9]。Drools使用 Apache License [8]。這是一個比較簡單的規(guī)范,目前已經(jīng)有 Drools、Hammurapi Rules、ILOG JRules(注:2022年 1月 ILOG被 IBM收購) 、Jess、JLisa 等規(guī)則系統(tǒng)實(shí)現(xiàn)了該規(guī)范。另外還有一些不太常見的匹配算法,如 LINEAR算法、TREAT 算法等也可以作為規(guī)則引擎模式匹配算法。目前已經(jīng)實(shí)現(xiàn)的規(guī)則引擎系統(tǒng)大多使用了 RETE算法和 LEAPS算法,這也是目前最成熟、性能最好的兩種算法。推理引擎是規(guī)則引擎的核心,正如圖 ,推理引擎由模式匹配器、議程和執(zhí)行引擎構(gòu)成,其中模式匹配器所用的匹配算法是影響系統(tǒng)性能的關(guān)鍵部分,因?yàn)橐?guī)則引擎需要應(yīng)用在具有大量規(guī)則和事實(shí)的業(yè)務(wù)系統(tǒng)或者需要頻繁工程碩士學(xué)位論文 第一章 緒論4調(diào)用的場合,所以它的性能顯得特別重要。雙向推理是指同時使用正向推理和反向推理。所謂正向推理是指從已知事實(shí)出發(fā),通過規(guī)則庫求得結(jié)論,可稱為數(shù)據(jù)驅(qū)動方式。當(dāng)事實(shí)庫中所有的事實(shí)均被處理完畢后,執(zhí)行引擎按優(yōu)先級從高到低的順序依次執(zhí)行議程排定的動作序列。如圖 ,Drools 的推理引擎也具有相同的系統(tǒng)結(jié)構(gòu),它能夠處理形如公式 ,這個處理過程即是推理過程。另一方面,基于產(chǎn)生式的規(guī)則系統(tǒng)推理方式單純,沒有復(fù)雜計(jì)算,系統(tǒng)的推理路徑容易解釋;規(guī)則庫與推理機(jī)是分離的,這種結(jié)構(gòu)給規(guī)則的修改帶來了方便,因?yàn)樗簧婕俺绦虻男薷?。公?:如果前提 P滿足,則可推出結(jié)論 Q或執(zhí)行 Q所規(guī)定的操作。 推理過程研究狀況本文討論的規(guī)則引擎 Drools就是一個基于規(guī)則的類似于專家系統(tǒng)的規(guī)則引擎,更準(zhǔn)確地說 Drools是一個產(chǎn)生式規(guī)則系統(tǒng),它用產(chǎn)生式來表示規(guī)則 [7]。下面是 RBES的系統(tǒng)結(jié)構(gòu)示意圖 [5]:圖 RBES結(jié)構(gòu)圖其中規(guī)則庫(Rule Base也叫知識庫 Knowledge Base) 、事實(shí)庫(Fact Base也叫工作內(nèi)存 Working Memory)和推理引擎(Inference Engine)是RBES的核心部分。大到具有復(fù)雜推理功能的專家系統(tǒng)(Expert System) ,小到簡單的表單驗(yàn)證系統(tǒng)、動態(tài)表達(dá)式求值引擎、工作流引擎等都可稱為規(guī)則引擎。目前常見的商業(yè)或開源規(guī)則引擎系統(tǒng)的功能則大大超出了 JSR 94所定義的功能,但不同的規(guī)則引擎的實(shí)現(xiàn)方式、對外接口、規(guī)則描述方法、開發(fā)方法等均不相同。2022 年 8月定稿的 JSR 94規(guī)范定義了一個基于 JAVA的規(guī)則引擎系統(tǒng)應(yīng)該具有哪些功能和什么樣的對外接口 [2],這可能是當(dāng)今對規(guī)則引擎最清晰的規(guī)范性定義了。為解決上述與業(yè)務(wù)規(guī)則相關(guān)的種種困難,人們借鑒人工智能(Artificial Intelligence)的理論和技術(shù)發(fā)展了規(guī)則引擎(Rule Engine) 。下面的分析說明了這種修改和維護(hù)的困難及高昂代價(jià):(1)頻繁的系統(tǒng)維護(hù)可能影響企業(yè)的正常運(yùn)營;(2)信息系統(tǒng)的修改總是滯后于需求的變化,這必將影響企業(yè)正常的運(yùn)營或?qū)κ袌龅捻憫?yīng)速度;(3)需要專門的技術(shù)人員才能維護(hù)信息系統(tǒng),但這些技術(shù)人員往往對業(yè)務(wù)并不熟悉,他們需要與業(yè)務(wù)人員進(jìn)行充分的溝通才能準(zhǔn)確地把握業(yè)務(wù)需求,一旦溝通不充分或者理解不準(zhǔn)確就可能導(dǎo)致修改后的系統(tǒng)不能滿足業(yè)務(wù)的需求。但是隨著時間的變遷、企業(yè)的發(fā)展,市場發(fā)生了變化、公司的產(chǎn)品發(fā)生了變化、產(chǎn)品的工藝流程發(fā)生了變化、公司的銷售策略發(fā)生了變化、公司的管理政策發(fā)生了變化……為了應(yīng)對這一切變化,當(dāng)初為企業(yè)量身打造的信息系統(tǒng)也不得不隨時進(jìn)行修改。近十年來,規(guī)則引擎技術(shù)有了長足的發(fā)展,性能已不再是問題,技術(shù)也日趨成熟,它再次被寄望于能有效地解決此類問題。但長期以來,讓軟件方便靈活地隨著用戶需求的變化而變化從來就不是一件容易的事。 and the script programs are poor performance and difficult to maintain to nonprofessional people. This paper focuses on how to solve these problems by using Drools, an open source rules base engine, in the ERP system.In this paper, firstly, we explain the working principle and the matching algorithms of a rules engine. Then we discuss the development, test and deployment technologies of the Drools rules engine. Finally, we systematically research how to use the Drools rules engine in the basic framework and business modules of an ERP system. Some typical problems and solutions that like to be encountered when using Drools are also discussed in this paper.20 figures, 18 tables, 55 references.Keywords: Drools, Rules Engine, ERP, RETE, LEAPSClassification: TP311目錄原創(chuàng)性聲明 ..........................................................I摘要 ...............................................................II目錄 ...............................................................IV第一章 緒論 .........................................................1 課題背景和意義 ..........................................................................................................................1 國內(nèi)外研究現(xiàn)狀 ..........................................................................................................................2 論文研究內(nèi)容及組織結(jié)構(gòu) ..........................................................................................................6 論文的研究內(nèi)容 .......................................................................................................................6 論文的組織結(jié)構(gòu) .......................................................................................................................6第二章 相關(guān)理論基礎(chǔ) .................................................8 Drools 規(guī)則引擎的基本概念 ..........................................................................................