Drools 8 規(guī)則引擎:核心技術(shù)與實(shí)踐 朱智勝
定 價(jià):99 元
- 作者:朱智勝
- 出版時(shí)間:2024/8/1
- ISBN:9787111761860
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP391.3
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
內(nèi)容介紹這是一本可幫助讀者迅速掌握Drools的精髓并將其應(yīng)用于實(shí)際項(xiàng)目,為企業(yè)構(gòu)建智能決策系統(tǒng)提供可用經(jīng)驗(yàn)和方法的專業(yè)技術(shù)書(shū)。全書(shū)以作者15年實(shí)戰(zhàn)經(jīng)驗(yàn)為基礎(chǔ),以作者在支付系統(tǒng)中的風(fēng)控、反洗錢(qián)業(yè)務(wù)板塊實(shí)際運(yùn)用Drools規(guī)則引擎并構(gòu)建一套完整的規(guī)則引擎體系為基礎(chǔ),以CSDN上超36萬(wàn)閱讀量的規(guī)則引擎專欄文章為參考,以近3.7萬(wàn)人購(gòu)買(mǎi)的收費(fèi)視頻課程為藍(lán)本,從入門(mén)知識(shí)、底層原理、一線架構(gòu)到實(shí)戰(zhàn)項(xiàng)目深入解讀運(yùn)用Drools 8規(guī)則引擎所有知識(shí)。無(wú)論你是程序開(kāi)發(fā)人員,還是項(xiàng)目管理者或決策者,都能在本書(shū)中找到自己想要的內(nèi)容,比如提升規(guī)則引擎使用能力的方法、實(shí)現(xiàn)智能決策的技巧等。本書(shū)共分為12章,外加2個(gè)附錄。第1~5章 帶領(lǐng)大家初步了解Drools規(guī)則引擎,包括什么是規(guī)則引擎、什么是Drools規(guī)則引擎框架、規(guī)則引擎適用的業(yè)務(wù)場(chǎng)景以及規(guī)則引擎運(yùn)行的基本原理,并通過(guò)實(shí)例介紹Drools規(guī)則引擎的使用以及常用的核心API。這部分為實(shí)踐和系統(tǒng)集成架構(gòu)提供理論和技術(shù)支持。第6~10章 站在業(yè)務(wù)系統(tǒng)架構(gòu)的視角解讀如何將Drools規(guī)則引擎引入項(xiàng)目,制定規(guī)則資源的管理方案,包括Drools決策管理系統(tǒng)架構(gòu)解讀、與Spring Boot集成、與Kogito云原生集成、轉(zhuǎn)轉(zhuǎn)圖書(shū)Drools實(shí)踐、自主設(shè)計(jì)Drools BRMS系統(tǒng)等經(jīng)典內(nèi)容。這部分可幫讀者從更多的視角認(rèn)識(shí)和實(shí)踐Drools規(guī)則引擎,真正做到活學(xué)活用,學(xué)以致用。第11章和第12章 剖析Drools規(guī)則引擎的底層算法,介紹Drools與人工智能結(jié)合的可能性。這部分的目的是拓展讀者的視野,站在當(dāng)下展望未來(lái)。附錄部分 通過(guò)KIE Server和WildFly的實(shí)戰(zhàn)應(yīng)用,為讀者提供更多技術(shù)選型和實(shí)操方面的參考。
作者是10年系統(tǒng)架構(gòu)師,這本書(shū)是他在支付系統(tǒng)中的風(fēng)控、反洗錢(qián)業(yè)務(wù)板塊實(shí)際運(yùn)用Drools規(guī)則引擎并構(gòu)建一套完整的規(guī)則引擎體系總結(jié)得到的實(shí)戰(zhàn)精華,本書(shū)部分內(nèi)容曾以連載文章的方式分享在CSDN閱讀量超36萬(wàn),作者曾基于本書(shū)內(nèi)容錄制了視頻收費(fèi)課程,至本書(shū)完稿時(shí)已有近3.7萬(wàn)人購(gòu)買(mǎi)。本書(shū)以指導(dǎo)實(shí)戰(zhàn)為目標(biāo),深入解讀Drools 8規(guī)則引擎的核心技術(shù)、原理、架構(gòu)和實(shí)戰(zhàn)項(xiàng)目,可助你實(shí)現(xiàn)規(guī)則引擎實(shí)戰(zhàn)能力提升、智能決策和業(yè)務(wù)流程優(yōu)化。
前 言
為什么要寫(xiě)這本書(shū)
2015年我首次接觸Drools規(guī)則引擎,當(dāng)時(shí)我在做一個(gè)金融系統(tǒng),需要使用規(guī)則引擎來(lái)處理大量反洗錢(qián)業(yè)務(wù)場(chǎng)景。由于場(chǎng)景的復(fù)雜性、多樣性和多變性,傳統(tǒng)的if-else判斷和簡(jiǎn)單的腳本化處理已經(jīng)無(wú)法滿足業(yè)務(wù)需求,而市面上做得比較好的、開(kāi)源的規(guī)則引擎非Drools莫屬。
但是,我在學(xué)習(xí)和使用的過(guò)程中遇到了一個(gè)難題:技術(shù)資料匱乏。當(dāng)時(shí),我搜遍整個(gè)網(wǎng)絡(luò)都無(wú)法找到相對(duì)全面的中文資料,唯一能夠提供完整參考資料的就是官方的英文文檔,即便如此,文檔中對(duì)語(yǔ)法的講解和使用案例的說(shuō)明也不足。
于是,在隨后的學(xué)習(xí)和使用過(guò)程中,我做了一些事情,比如翻譯英文文檔、編寫(xiě)實(shí)戰(zhàn)案例、補(bǔ)充官方資料的不足等,并在博客上發(fā)布了近百篇相關(guān)文章,同時(shí)建立了一些技術(shù)交流群,錄制了一些視頻教程。
如今,再次搜索相關(guān)資料時(shí),我發(fā)現(xiàn)網(wǎng)絡(luò)上關(guān)于Drools規(guī)則引擎的資料越來(lái)越豐富了,而且許多文章和案例都是基于我的博客文章擴(kuò)展而成的,這也算是我在這一領(lǐng)域所作的貢獻(xiàn)之一吧。
同時(shí)我也發(fā)現(xiàn),目前網(wǎng)絡(luò)上的文章和書(shū)籍,大多停留在基礎(chǔ)語(yǔ)法的使用和說(shuō)明上,缺少深入的、系統(tǒng)的、貼近實(shí)戰(zhàn)的案例。于是,我便有了寫(xiě)這本書(shū)的想法。
在寫(xiě)這本書(shū)時(shí),我更多的是希望為技術(shù)社區(qū)多做一些貢獻(xiàn)。在寫(xiě)作的過(guò)程中,不少朋友提供了實(shí)戰(zhàn)案例和技術(shù)支持,在此表示感謝。寫(xiě)作、分享、為技術(shù)社區(qū)做貢獻(xiàn),這些都是非常有意義的事情,也希望更多的朋友以更豐富的形式為國(guó)內(nèi)技術(shù)的發(fā)展添磚加瓦。
讀者對(duì)象
本書(shū)涵蓋了Drools規(guī)則引擎的使用場(chǎng)景、實(shí)現(xiàn)原理、基礎(chǔ)語(yǔ)法、項(xiàng)目集成、實(shí)戰(zhàn)案例、算法等多方面的內(nèi)容,因此,理論上適合各類讀者群體閱讀:
有一定Java編程語(yǔ)言基礎(chǔ)的Drools規(guī)則引擎初學(xué)者。
想深入了解和實(shí)踐Drools規(guī)則引擎的開(kāi)發(fā)者。
希望使用規(guī)則引擎對(duì)項(xiàng)目進(jìn)行設(shè)計(jì)和重構(gòu)的架構(gòu)師。
對(duì)規(guī)則引擎感興趣的技術(shù)愛(ài)好者。
大專院校相關(guān)專業(yè)的學(xué)生。
本書(shū)特色
關(guān)于Drools規(guī)則引擎,目前市面上有兩類資料(文章和書(shū)籍):一類為基礎(chǔ)的語(yǔ)法講解,另一類為簡(jiǎn)單的實(shí)戰(zhàn)案例。這些資料雖然能夠幫助初學(xué)者入門(mén),但無(wú)論是語(yǔ)法的羅列還是簡(jiǎn)單實(shí)戰(zhàn)案例的代碼展示,都無(wú)法讓初學(xué)者或系統(tǒng)架構(gòu)師從整體、系統(tǒng)、深入淺出的視角來(lái)學(xué)習(xí)和實(shí)踐。再加上Drools規(guī)則引擎自身有非常多的靈活組合方案,于是大家就面臨一個(gè)困境:語(yǔ)法學(xué)會(huì)了,簡(jiǎn)單的案例也寫(xiě)了,就是無(wú)法著手去實(shí)踐。
本書(shū)的重點(diǎn)(或者說(shuō)是特色)便是帶領(lǐng)讀者解決此難題。本書(shū)站在初學(xué)者的視角,先從Drools規(guī)則引擎的使用場(chǎng)景、實(shí)現(xiàn)原理出發(fā),使讀者理解什么場(chǎng)景適合使用規(guī)則引擎,它是如何運(yùn)作的;然后,基于Drools規(guī)則引擎的核心語(yǔ)法結(jié)構(gòu)、簡(jiǎn)單示例,使讀者了解Drools的基本使用;接著,用大量篇幅來(lái)介紹各類組合案例以及如何將其集成到項(xiàng)目當(dāng)中,其中既有我參與的項(xiàng)目,也有一些大廠項(xiàng)目。通過(guò)這樣的結(jié)構(gòu)設(shè)計(jì),可幫讀者學(xué)會(huì)技術(shù)選型,掌握基礎(chǔ)語(yǔ)法,完成技術(shù)集成并學(xué)會(huì)設(shè)計(jì)適合自己項(xiàng)目的解決方案。最后,本書(shū)為想了解底層算法的讀者簡(jiǎn)單介紹了規(guī)則引擎的算法實(shí)現(xiàn),以便讀者知其然也知其所以然。
本書(shū)的另外一個(gè)特色就是,在Drools框架的版本方面做到了最大的覆蓋,兼顧歷史版本和新版本的語(yǔ)法與解決方案。除已經(jīng)過(guò)時(shí)的Drools 5之外,本書(shū)詳細(xì)講解了Drools 6/7的基礎(chǔ)語(yǔ)法、組件支持(附錄部分)、解決方案,以及Drools 8的傳統(tǒng)語(yǔ)法、規(guī)則單元(新語(yǔ)法)、云原生實(shí)踐等,以最大限度地滿足讀者的實(shí)踐場(chǎng)景需要。
如何閱讀本書(shū)
本書(shū)分為3篇:
基礎(chǔ)篇(第1~5章),簡(jiǎn)單介紹規(guī)則引擎的使用場(chǎng)景、實(shí)現(xiàn)原理,以及Drools規(guī)則引擎的基礎(chǔ)語(yǔ)法和核心API的使用。這部分旨在幫助讀者快速了解相關(guān)背景、基礎(chǔ)語(yǔ)法知識(shí),并熟悉Drools規(guī)則引擎的代碼編寫(xiě)。
高級(jí)篇(第6~10章),著重講解Drools規(guī)則引擎決策管理系統(tǒng)架構(gòu)、與Spring Boot的集成、與Kogito云原生的集成、轉(zhuǎn)轉(zhuǎn)圖書(shū)的Drools實(shí)戰(zhàn)案例、自建Drools BRMS實(shí)戰(zhàn)等。這部分為本書(shū)的重點(diǎn),也是讀者在實(shí)踐中常常無(wú)從下手的地方。這部分以從整體到局部的案例場(chǎng)景向讀者演示如何進(jìn)行實(shí)踐,以便讀者可以根據(jù)自己的業(yè)務(wù)場(chǎng)景選擇最合適的實(shí)踐方案。
拓展篇(第11和12章),簡(jiǎn)單介紹Drools規(guī)則引擎的底層算法實(shí)現(xiàn)以及可與人工智能(AI)配合使用的場(chǎng)景,旨在拓寬讀者的視野和思路。
此外,附錄(附錄A和附錄B)是基于Drools 6/7提供的BRMS組件的兩種實(shí)戰(zhàn)方案,以便使用這兩個(gè)版本的讀者更好地進(jìn)行實(shí)踐以及構(gòu)建自己的BRMS。
上述內(nèi)容按照遞進(jìn)關(guān)系展開(kāi),但又相對(duì)獨(dú)立。初學(xué)者順序閱讀學(xué)習(xí)即可;已經(jīng)有一定經(jīng)驗(yàn)的讀者,如果需要了解解決方案或?qū)崿F(xiàn)原理等,可以直接閱讀對(duì)應(yīng)章節(jié)。
勘誤和支持
由于我的水平有限,編寫(xiě)時(shí)間倉(cāng)促,書(shū)中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。為此,我特意創(chuàng)建了一個(gè)提供在線支持與應(yīng)急方案的二級(jí)站點(diǎn)https://github.com/secbr/drools-book,書(shū)中所有案例源碼都可以從這里下載。讀者也可以將發(fā)現(xiàn)的書(shū)中錯(cuò)誤發(fā)布在勘誤表頁(yè)面中。讀者遇到任何問(wèn)題,可以訪問(wèn)問(wèn)答(Q
朱智勝
資深軟件開(kāi)發(fā)者,系統(tǒng)架構(gòu)師,Drools規(guī)則引擎國(guó)內(nèi)早期的推廣者和技術(shù)分享者之一,暢銷書(shū)《Spring Boot技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》與《深入以太坊智能合約開(kāi)發(fā)》作者。具有15年軟件開(kāi)發(fā)經(jīng)驗(yàn)和10年支付領(lǐng)域工作經(jīng)驗(yàn)。在規(guī)則引擎領(lǐng)域?qū)嵺`經(jīng)驗(yàn)豐富,尤其是在Drools規(guī)則引擎的應(yīng)用與研究上。曾主導(dǎo)在支付系統(tǒng)中風(fēng)控、反洗錢(qián)業(yè)務(wù)板塊運(yùn)用Drools規(guī)則引擎的項(xiàng)目,為公司業(yè)績(jī)提升做出卓越貢獻(xiàn)。曾主導(dǎo)構(gòu)建一套完整的規(guī)則引擎體系。
翻譯了大量Drools規(guī)則引擎相關(guān)文檔,撰寫(xiě)了一系列Drools規(guī)則引擎博客文章,僅CSDN上Drools規(guī)則引擎專欄閱讀量就超過(guò)了36萬(wàn),Drools規(guī)則引擎收費(fèi)視頻課程已有近3.7萬(wàn)人購(gòu)買(mǎi)學(xué)習(xí)。
CSDN博客專家,博客排名位列前100,全網(wǎng)博客訪問(wèn)量超過(guò)1000萬(wàn)。
目 錄 Contents
前言
基礎(chǔ)篇
第1章 規(guī)則引擎簡(jiǎn)介2
1.1 什么是規(guī)則引擎2
1.2 為什么要使用規(guī)則引擎4
1.2.1 規(guī)則引擎的使用場(chǎng)景4
1.2.2 規(guī)則引擎的優(yōu)缺點(diǎn)5
1.2.3 舉例分析6
1.3 規(guī)則引擎的使用流程7
1.4 規(guī)則引擎家族9
1.4.1 Drools9
1.4.2 Ilog JRules9
1.4.3 Easy Rules9
1.4.4 Jess10
1.5 Drools規(guī)則引擎家族10
1.6 Drools規(guī)則引擎的主要版本12
第2章 規(guī)則引擎的架構(gòu)與原理14
2.1 基于規(guī)則引擎的業(yè)務(wù)系統(tǒng)架構(gòu)14
2.1.1 業(yè)務(wù)系統(tǒng)架構(gòu)的變化14
2.1.2 規(guī)則引擎的系統(tǒng)架構(gòu)17
2.2 規(guī)則引擎的實(shí)現(xiàn)原理18
2.2.1 推理引擎模型18
2.2.2 規(guī)則數(shù)據(jù)模型20
2.3 Drools中的基礎(chǔ)概念22
第3章 初識(shí)Drools規(guī)則引擎23
3.1 如何循序漸進(jìn)地學(xué)習(xí)24
3.2 創(chuàng)建第一個(gè)Drools項(xiàng)目24
3.2.1 環(huán)境準(zhǔn)備25
3.2.2 創(chuàng)建項(xiàng)目26
3.2.3 業(yè)務(wù)實(shí)現(xiàn)29
3.2.4 運(yùn)行驗(yàn)證31
3.3 項(xiàng)目結(jié)構(gòu)詳解32
3.3.1 事實(shí)對(duì)象32
3.3.2 規(guī)則文件33
3.3.3 kmodule.xml配置35
3.3.4 API使用35
3.4 Drools 8語(yǔ)法示例36
3.4.1 創(chuàng)建Drools 8項(xiàng)目36
3.4.2 業(yè)務(wù)實(shí)現(xiàn)37
第4章 核心語(yǔ)法示例詳解41
4.1 規(guī)則文件的結(jié)構(gòu)41
4.1.1 規(guī)則屬性41
4.1.2 判斷條件44
4.1.3 規(guī)則執(zhí)行44
4.2 規(guī)則語(yǔ)法綜合示例45
4.2.1 場(chǎng)景分析45
4.2.2 具體實(shí)現(xiàn)46
4.3 示例語(yǔ)法點(diǎn)分析51
4.3.1 規(guī)則的優(yōu)先級(jí)51
4.3.2 規(guī)則的分組52
4.3.3 內(nèi)置update函數(shù)53
4.3.4 no-loop防止規(guī)則死循環(huán)54
4.3.5 global全局變量55
4.3.6 function的使用56
4.4 Drools 8核心語(yǔ)法分析57
4.4.1 規(guī)則單元與傳統(tǒng)語(yǔ)法58
4.4.2 Drools 8示例實(shí)現(xiàn)58
第5章 Drools核心API詳解64
5.1 什么是KIE64
5.2 核心API之間的關(guān)系65
5.3 KieServices詳解67
5.4 KieContainer詳解68
5.5 KieModule詳解70
5.6 KieBase詳解72
5.7 KieRepository詳解74
5.8 KieFileSystem詳解76
5.9 KieScanner詳解77
5.10 KieSession和StatelessKieSession
詳解79
5.11 KieHelper詳解82
5.12 規(guī)則單元API詳解84
高級(jí)篇
第6章 Drools決策管理系統(tǒng)架構(gòu)88
6.1 什么是決策管理系統(tǒng)架構(gòu)88
6.2 Drools的決策資產(chǎn)分類89
6.2.1 DMN90
6.2.2 引導(dǎo)決策表90
6.2.3 電子表格決策表91
6.2.4 引導(dǎo)規(guī)則93
6.2.5 DRL規(guī)則93
6.2.6 PMML模型94
6.3 Drools的不同部署環(huán)境95
6.4 Drools項(xiàng)目存儲(chǔ)和構(gòu)建方案96
6.5 Drools項(xiàng)目部署方案97
6.6 Drools決策資產(chǎn)的執(zhí)行98
6.7 Drools決策管理架構(gòu)方案98
6.7.1 方案一:Drools 7官方推薦
組合99
6.7.2 方案二:IDE和內(nèi)置Java
應(yīng)用組合101
6.7.3 方案三:自主研發(fā)決策資產(chǎn)
管理平臺(tái)102
第7章 Drools與Spring Boot
集成實(shí)戰(zhàn)104
7.1 與Spring Boot集成實(shí)戰(zhàn)案例104
7.1.1 實(shí)戰(zhàn)案例分析105
7.1.2 項(xiàng)目創(chuàng)建105
7.1.3 Drools集成配置107
7.1.4 業(yè)務(wù)邏輯實(shí)現(xiàn)109
7.1.5 功能驗(yàn)證114
7.2 基于kmodule.xml配置實(shí)戰(zhàn)
案例115
7.3 動(dòng)態(tài)加載規(guī)則實(shí)戰(zhàn)案例116
第8章 Drools基于Kogito云
原生實(shí)戰(zhàn)122
8.1 規(guī)則單元與Spring Boot集成123
8.1.1 Spring Boot項(xiàng)目創(chuàng)建123
8.1.2 規(guī)則單元集成配置124
8.1.3 基于規(guī)則單元的業(yè)務(wù)邏輯
改造125
8.2 規(guī)則單元與Kogito集成128
8.2.1 Kogito簡(jiǎn)介128
8.2.2 項(xiàng)目創(chuàng)建129
8.2.3 業(yè)務(wù)改造與實(shí)現(xiàn)131
8.2.4 基本原理講解134
8.3 Kogito Tooling工具包136
第9章 轉(zhuǎn)轉(zhuǎn)圖書(shū)的Drools實(shí)戰(zhàn)139
9.1 什么是DMN139
9.1.1 DMN的基本組成139
9.1.2 DMN與DRL的區(qū)別140
9.1.3 DMN合規(guī)等級(jí)與Drools
支持140
9.2 項(xiàng)目技術(shù)選型141
9.3 業(yè)務(wù)場(chǎng)景簡(jiǎn)介142
9.4 DMN建模工具選擇143
9.5 DMN建模實(shí)現(xiàn)145
9.6 Drools集成DMN151
9.6.1 DMN決策導(dǎo)出151
9.6.2 創(chuàng)建Drools項(xiàng)目152
9.6.3 編寫(xiě)業(yè)務(wù)代碼153
第10章 自建Drools BRMS實(shí)戰(zhàn)155
10.1 Drools BRMS簡(jiǎn)介155
10.2 自建BRMS的優(yōu)勢(shì)156
10.3 自建BRMS的基本步驟157
10.4 設(shè)計(jì)實(shí)戰(zhàn)158
10.4.1 包存儲(chǔ)設(shè)計(jì)158
10.4.2 基礎(chǔ)元素設(shè)計(jì)159
10.4.3 事實(shí)對(duì)象設(shè)計(jì)160
10.4.4 DRL規(guī)則設(shè)計(jì)161
10.4.5 DRL的編譯校驗(yàn)163
10.4.6 構(gòu)建KJAR實(shí)現(xiàn)164
10.4.7 部署和運(yùn)維168
拓展篇
第11章 Drools底層算法詳解172
11.1 Drools 算法演變172
11.2