周里程++熊碧輝++裘瑞清++周后盤
摘 要在現(xiàn)階段下,Drools規(guī)則引擎技術(shù)發(fā)展的已經(jīng)相對(duì)成熟,且非常具有吸引力,并廣泛應(yīng)用于制造業(yè)、娛樂業(yè)等各個(gè)行業(yè)。本文主要是對(duì)Drools規(guī)則引擎的研究背景、現(xiàn)狀、概念以及其核心算法Rete及其實(shí)現(xiàn)原理等多方面進(jìn)行闡述,旨在促進(jìn)其技術(shù)應(yīng)用的更加廣泛。
【關(guān)鍵詞】規(guī)則引擎 DroolsRete算法
1 規(guī)則引擎的產(chǎn)生背景
隨著世界經(jīng)濟(jì)形勢(shì)變化,市場(chǎng)競(jìng)爭(zhēng)日趨激烈,為不斷適應(yīng)市場(chǎng)的各種變化,企業(yè)需要不斷調(diào)整產(chǎn)品設(shè)計(jì)、生產(chǎn)制造、市場(chǎng)營(yíng)銷、內(nèi)部管理等各個(gè)環(huán)節(jié)的管控方式和規(guī)則制度。故而支撐企業(yè)運(yùn)作的管理系統(tǒng)亦應(yīng)該予以隨之調(diào)整,定期地維護(hù)并且更新程序的業(yè)務(wù)邏輯。在以往的系統(tǒng)設(shè)計(jì)架構(gòu)里面,對(duì)每一回業(yè)務(wù)邏輯進(jìn)行變更操作的時(shí)候,均需修改程序的源代碼,重新予以編譯并部署,容易導(dǎo)致系統(tǒng)不穩(wěn)定,同時(shí)維護(hù)工作量大,維護(hù)成本居高不下。迫切需要將管理系統(tǒng)中內(nèi)含的業(yè)務(wù)規(guī)則、業(yè)務(wù)邏輯獨(dú)立出來,例如生產(chǎn)計(jì)劃排程、風(fēng)險(xiǎn)控制規(guī)則、市場(chǎng)定價(jià)策略等,以解除其程序代碼與業(yè)務(wù)規(guī)則的耦合性,通過調(diào)整修改業(yè)務(wù)規(guī)則來適應(yīng)市場(chǎng)的變化。規(guī)則引擎就是解決此問題的方式之一。
2 Drools規(guī)則引擎的應(yīng)用現(xiàn)狀及分析
正因?yàn)镈rools規(guī)則引擎技有著如此多優(yōu)勢(shì)特點(diǎn),現(xiàn)今在許多行業(yè)都有著其身影。
2.1 Drools規(guī)則引擎在生產(chǎn)制造和產(chǎn)品設(shè)計(jì)中的應(yīng)用
在傳統(tǒng)的制造行業(yè)上,規(guī)則引擎就有著很好的應(yīng)用。華中科技大學(xué)的閆歡,張宜生等在《規(guī)則引擎在制造企業(yè)MES中的研究與應(yīng)用》一文中,提出了在MES中引入業(yè)務(wù)規(guī)則管理系統(tǒng)(Business Rule Management System),借助規(guī)則引擎Drools和其對(duì)應(yīng)的規(guī)則語言,并契合企業(yè)的實(shí)際需求來制定業(yè)務(wù)規(guī)則,把程序代碼和業(yè)務(wù)規(guī)則分離開來,使企業(yè)根據(jù)市場(chǎng)需求隨時(shí)對(duì)企業(yè)的生產(chǎn)方針予以優(yōu)化調(diào)整,從而能夠加速M(fèi)ES系統(tǒng)的開發(fā)、升級(jí)與維護(hù)的過程,最終可大大增強(qiáng)了MES系統(tǒng)的靈活性、適應(yīng)性。同時(shí)在基于BRMS和規(guī)則引擎的MES系統(tǒng)原型中,實(shí)現(xiàn)了生產(chǎn)計(jì)劃的自動(dòng)安排和生產(chǎn)計(jì)劃調(diào)整過程中的設(shè)備負(fù)荷均衡處理。伴隨工件的工序以及機(jī)床數(shù)量的增加,以Drools的規(guī)則為基礎(chǔ)去定義文件的復(fù)雜性亦隨之明顯升高。Drools這些有關(guān)的問題均可運(yùn)用Hadoop Map/Reduce的辦法加以解決。Map/Reduce其實(shí)為一個(gè)處理并且生成超級(jí)數(shù)據(jù)集的算法模型,它可以借助較為低廉的計(jì)算資源達(dá)到大規(guī)模的并行運(yùn)算,在解決大規(guī)模作業(yè)調(diào)試的方面有著非常大的潛力。不僅如此,浙江大學(xué)電氣工程學(xué)院的鄭春團(tuán)隊(duì)利用Drools規(guī)則引擎技術(shù)設(shè)計(jì)了一個(gè)絲綢輔助設(shè)計(jì)專家系統(tǒng),用戶可以通過Web訪問本系統(tǒng),輸入需求信息,結(jié)合知識(shí)庫中存儲(chǔ)的模糊規(guī)則處理得到創(chuàng)意圖。系統(tǒng)實(shí)現(xiàn)了絲綢產(chǎn)品設(shè)計(jì)的智能化和自動(dòng)化,提高了產(chǎn)品設(shè)計(jì)效率。從而能夠看出Drools規(guī)則引擎應(yīng)用于傳統(tǒng)制造行業(yè),提高了工廠資源整體的利用率。
2.2 Drools規(guī)則引擎在政務(wù)服務(wù)中的應(yīng)用
Drools規(guī)則引擎同樣應(yīng)用在政務(wù)服務(wù)當(dāng)中,江蘇大學(xué)的夏平平就將其應(yīng)用于征稅系統(tǒng)當(dāng)中,在征稅系統(tǒng)開發(fā)過程中,需要定義匹配的業(yè)務(wù)規(guī)則,比如企業(yè)名稱的長(zhǎng)度、合伙納稅人比例情況、外資企業(yè)比重情況等,雖然可以通過源代碼的方式實(shí)現(xiàn)這些業(yè)務(wù)規(guī)則,但是隨著國(guó)家稅制的改革和完善,征稅方面的業(yè)務(wù)規(guī)則勢(shì)必會(huì)經(jīng)常變化,必然導(dǎo)致程序需要二次修改和重新部署,給維護(hù)工作帶來非常大的不便,使用Drools規(guī)則引擎很好的解決了上述問題。
2.3 Drools規(guī)則引擎在企業(yè)管理中的應(yīng)用
Drools規(guī)則引擎在企業(yè)管理中也有應(yīng)用,上海復(fù)旦大學(xué)的祝志飛團(tuán)隊(duì)設(shè)計(jì)了一套基于Drools規(guī)則引擎的自主管理會(huì)計(jì)系統(tǒng),通過Drools Guvnor管理會(huì)計(jì)業(yè)務(wù)規(guī)則,以及通過Drools Expert將業(yè)務(wù)系統(tǒng)實(shí)時(shí)產(chǎn)生的單筆交易數(shù)據(jù)或歷史批量數(shù)據(jù)轉(zhuǎn)換成會(huì)計(jì)憑證和分錄產(chǎn)生會(huì)計(jì)報(bào)表等核心內(nèi)容,并將其應(yīng)用在了志飛天下公司的管理會(huì)計(jì)系統(tǒng)中,徹底解決了志飛天下公司交易量大、需要適時(shí)自動(dòng)記賬的功能需求,解放了會(huì)計(jì)人員繁雜的手工記賬,實(shí)時(shí)提供會(huì)計(jì)報(bào)表給公司管理人員,幫助管理人員及早做出商業(yè)決策。
2.4 Drools規(guī)則引擎在娛樂業(yè)的應(yīng)用
在娛樂產(chǎn)業(yè),Drools規(guī)則引擎也發(fā)揮了不小的作用。當(dāng)今市場(chǎng)十分火熱的桌游三國(guó)殺就運(yùn)用到了規(guī)則引擎Drools,它選擇游戲腳本的開發(fā)模式,將游戲的邏輯規(guī)則相關(guān)的部分放進(jìn)腳本中來減少游戲各模塊間的耦合度,方便游戲的測(cè)試、修改以及內(nèi)容的升級(jí)與更新。這是未來游戲開發(fā)的一個(gè)全新的方向。Drools規(guī)則引擎在游戲中的引入,給其網(wǎng)絡(luò)桌游的開發(fā)和維護(hù)帶來了事半功倍的效果。
2.5 Drools規(guī)則引擎在電力行業(yè)的應(yīng)用
在電力部門,Drools規(guī)則引擎同樣有著很好的應(yīng)用。國(guó)網(wǎng)電力科學(xué)研究院的李穆,文正其等針對(duì)變電站現(xiàn)有的變壓器故障診斷系統(tǒng)普遍存在知識(shí)固化的問題,提出了一種基于Drools規(guī)則引擎的變壓器故障診斷專家系統(tǒng)。利用Drools框架搭建變壓器故障診斷專家系統(tǒng)的架構(gòu),實(shí)現(xiàn)規(guī)則文件與邏輯文件的分離;結(jié)合真實(shí)案例與權(quán)威專家的經(jīng)驗(yàn),確定故障模式,利用規(guī)則庫實(shí)現(xiàn)變壓器的故障診斷。并于2014年8月份開始在武漢某750kv變壓器應(yīng)用了此Drools規(guī)則引擎。實(shí)踐證明,系統(tǒng)具有較快的反應(yīng)能力和準(zhǔn)確的診斷能力,具備很好的工程推廣價(jià)值。
2.6 Drools規(guī)則引擎在數(shù)據(jù)清洗中的應(yīng)用
當(dāng)今大數(shù)據(jù)的年代,Drools規(guī)則引擎為以動(dòng)態(tài)可配置規(guī)則為基礎(chǔ)的數(shù)據(jù)清洗打下了堅(jiān)實(shí)的技術(shù)基礎(chǔ)。武漢理工大學(xué)的曹永亮團(tuán)隊(duì)通過實(shí)例測(cè)試得出結(jié)論為:規(guī)則數(shù)量變化對(duì)Drools規(guī)則引擎性能的影響不是非常明顯;在記錄數(shù)很大的時(shí)候,運(yùn)用Drools規(guī)則引擎跟運(yùn)用硬編碼清洗的時(shí)間的比值接近恒定。運(yùn)用Drools規(guī)則引擎的清洗時(shí)長(zhǎng)僅有運(yùn)用硬編碼的2/5左右,在性能方面的損失換來的是系統(tǒng)的通用性以及規(guī)則的動(dòng)態(tài)可配置性上的提升。但規(guī)則引擎用于數(shù)據(jù)清洗技術(shù)發(fā)展的空間還很大,還有許多的工作要做,比如當(dāng)前存在的一個(gè)突出問題,即是清洗規(guī)則是依賴于一些清洗算法的,因而嵌入進(jìn)Drools規(guī)則引擎技術(shù)并沒有降低數(shù)據(jù)清洗的算法復(fù)雜性,所以將Drools規(guī)則引擎的Rete算法與清洗算法整合,達(dá)到算法優(yōu)化便是當(dāng)前應(yīng)用的一個(gè)發(fā)展方向。endprint