Drools 7.67.0 + DMN 1.2 + SpringBoot3 構建規則引擎

背景:基於項目工作的需要,要建立一個規則引擎的應用集中式的管理業務中的規則流程等,所以先探索一個MVP

1.什麼是規則引擎, 同類竟品?

規則引擎的主要思想是將應用程序中的業務決策部分分離出來,並使用預定義的語義模板編寫業務決策(業務規則),由用戶或開發者在需要時進行配置、管理。需要注意的的規則引擎並不是一個具體的技術框架,而是指的一類系統,即業務規則管理系統。規則引擎實現了將業務決策從應用程序代碼中分離出來,接收數據輸入,解釋業務規則,並根據業務規則做出業務決策。規則引擎其實就是一個輸入輸出平臺。

規則引擎 描述 是否開源
Drools Drools 是用 Java 語言編寫的開放源碼規則引擎,使用 Rete 算法對所編寫的規則求值。Drools 允許使用聲明方式表達業務邏輯。可以使用非 XML 的本地語言編寫規則,從而便於學習和理解。並且,還可以將 Java 代碼直接嵌入到規則文件中,這令 Drools 的學習更加吸引人 開源軟件
Jess  Jess 是完全由 Java 語言編寫的規則引擎和腳本環境,由加利福尼亞州利弗莫爾市Sandia國家實驗室的 Ernest Friedman-Hill 編寫。使用 Jess,您可以使用聲明式規則形式提供的知識來構建具有 “推理” 能力的 Java 軟件。Jess 體積小,重量輕,並且是最快的規則引擎之一。它強大的腳本語言使您可以訪問所有 Java API。AI領域
開源軟件
Visual Rules Visual Rules又稱旗正商業規則定製平臺,是一個基於規則引擎實現的可視化定製業務邏輯的商業規則管理系統,同時又具有快速開發java軟件項目的功能 商業軟件
ILog JRules ILOG JRules 本身是一個靈活的 BRMS (Business Rule Management System),涵蓋了業務規則的整個生命週期。ILOG JRules 內的規則引擎是 J2EE 應用程序,可以部署到任何 J2EE 項目。另外,ILOG (已被 IBM 收購)能輕鬆集成到 IDE 環境中,可以利用 Java 控件調用規則引擎 開源軟件
LiteFlow liteFlow 是一個輕量,快速的組件式流程引擎框架 / 規則引擎,組件編排,組件複用,幫助解耦業務代碼,讓每一個業務片段都是一個優雅的組件,並支持熱加載規則配置,實現即時修改
開源軟件

2.Drools規則引擎

2.1 規則引擎構成

Drools規則引擎由以下三部分構成

1.Working Memory(工作內存)
2.Rule Base(規則庫)
3.Inference Engine(推理引擎)

其中Inference Engine(推理引擎)又包括

1.Pattern Matcher(匹配器)
2.Agenda(議程)
3.Execution Engine(執行引擎) 

 2.2 基於上圖的各組件的說明

1.Working Memory:工作內存,Drools規則引擎會從Working Memory中獲取數據並和規則文件中定義的規則進行模式匹配,
所以我們開發的應用程序只需要將我們的數據插入到Working Memory中即可。
2.Fact:事實,是指在Drools規則應用當中,將一個普通的javaBean插入到Working Memory後的對象就是Fact對象。
Fact對象是我們的應用和規則引擎進行交互的橋樑或通道。
3.Rule Base:規則庫,我們在規則文件中定義的規則都會被加載到規則庫中。 4.Pattern Matcher:匹配器,將Rule Base中的所有規則與Working Memory中的Fact對象進行模式匹配,匹配成功則被激活並放入Agenda中。 5.Agenda:議程,用於存放通過匹配器進行模式匹配後被激活的規則。 6.Execution Engine:執行引擎,執行Agenda中被激活的規則。

2.3 KIE介紹

在操作Drools時經常使用的API以及他們之間的關係如下圖

 

通過上面的API可以發現,大部分類都是以Kie開頭。Kie全稱爲Knowledge is Everything,即“只是就是一切”的縮寫,是Jboss一系列項目的總稱。如下圖所示,Kie的主要模塊有OptaPlanner、Drools、UberFire、jBPM。可以看到,Drools是整個KIE項目中的一個組件,Drools中還包括一個Drools-WB的模塊,他是一個可視化的規則編輯器。

3.什麼是DMN?

DMN全稱Decision Model and Notation(決策模型和符號、決策模型和表示法),是一種用於表示業務決策和規則的規範,旨在幫助參與決策的人都能簡單快速理解決策過程。DMN是由OMG(Object Management Group,對象管理組織)管理的一種規範,該組織下比較知名的還有UML等。

 

3.1 DMN的關鍵組件和DMN的規則表達式FEEL

可參紅帽毛官方的指導文檔

https://access.redhat.com/documentation/zh-cn/red_hat_process_automation_manager/7.9/html/developing_decision_services_in_red_hat_process_automation_manager/dmn-con_dmn-models

DMN編輯插件

https://docs.jboss.org/kogito/release/latest/html_single/#proc-kogito-standalone-editors_kogito-creating-running

4.SpringBoot3集成Drools

項目地址:https://github.com/showkawa/springb/tree/main/src/main/java/com/kawa/springb

5.DMN在AI領域的可發揮的作用?

在AI領域,DMN可以和機器學習、專家系統等技術結合使用。例如,一個複雜的AI系統可能會使用機器學習模型來處理大量的輸入數據,並生成一些初步的結果。然後,
這些結果可以被輸入到一個DMN決策模型中,以便應用更高級別的業務規則和邏輯。此外,DMN也可以用於解釋AI決策。由於DMN模型可以被人類理解,因此它們可以用來解釋
AI系統是如何根據輸入數據做出決策的。這對於提高AI系統的透明度和可信度非常重要。然而,雖然DMN在某些情況下可以和AI技術結合使用,但它並不是AI技術本身。
DMN是一種決策建模工具,而AI是一種用於處理和理解數據的技術。 DMN(Decision Model and Notation)在AI領域的應用還可以包括以下幾個方面:
1. 自動化決策制定:AI系統經常需要做出複雜的決策。通過使用DMN,我們可以創建詳細、精確且可執行的業務規則模型來指導這些決策過程。這種方式不僅提高了效率,
也使得結果更加可預測和一致。
3. 解釋性AI (Explainable AI): DMN 可以作爲一個工具幫助人們理解和信任 AI 決策過程。例如,在金融服務中,如果一個貸款申請被拒絕, 使用 DMN
的邏輯模型能夠清晰地展示哪條規則或條件導致了該結果, 這樣就增強了系統對用戶而言的透明度.
2. 集成與協同工作: 在許多情景下, 機器學習算法生成預測值是第一步, 然後再結合業務規則進行最後決定輸出(如風險評估、審批流程等). 這時候就需要把ML和
Rule Engine 結合起來共同工作.
3. 優化決策過程:在某些情況下,AI系統可能需要處理大量的決策變量和約束條件。DMN可以幫助建立一個清晰的決策模型,使得優化算法能夠更有效地找到最優解。 4. 模擬和預測:DMN模型可以用於模擬不同的決策路徑和結果,從而幫助預測未來的業務情況。這對於戰略規劃和風險管理非常有用。

Drools DMN15分鐘簡易教學:https://learn-dmn-in-15-minutes.com

Drools DMN教學:https://www.drools.org/learn/dmn.html

 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章