Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护
Java常用的規則引擎,讓你變動的代碼更加容易維護
Java常用的規則引擎,讓你變動的代碼更加容易維護
在本文中,我們將介紹Java中一些最受歡迎的規則引擎。
規則引擎由推理引擎發展而來,是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來,并使用預定義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,并根據業務規則做出業務決策。在Java中,大多數流行的規則引擎都實現JSR94
將規則引擎想象成一個以數據和規則作為輸入的系統。它將這些規則應用于數據,并根據規則定義為我們提供輸出。讓我們以一個在線購物為例,我們希望為客戶提供某些促銷或折扣。
如果購物車總額超過$ 400,可為客戶提供20%的折扣。
第一次下單給10%。
上面將購物車和客戶定義為滿足規則集中定義的條件的規則將在其中執行的數據。
簡化系統架構,優化應用
提高系統的可維護性
減少編寫“硬代碼”業務規則的成本和風險
應付特殊狀況,即客戶一開始沒有提到要將業務邏輯考慮在內
過將規則引擎分開,它提供了更大的可重用性。
流程分支非常復雜,規則變量龐大
有不確定性的需求,變更頻率較高
需要快速做出響應和決策
規則變更期望脫離于開發人員,脫離coding
Java 中常用的開源規則引擎有哪些呢?
Drools是業務規則管理系統(BRMS)解決方案。它提供了核心業務規則引擎(BRE),Web UI和規則管理應用程序(Drools Workbench),對符合性級別3的決策模型和注釋(DMN)模型的完整運行時支持,以及用于核心開發的Eclipse IDE插件及Idea插件。
Drools 是一個基于Charles Forgy’s的RETE算法的,易于訪問企業策略、易于調整以及易于管理的開源業務規則引擎,符合業內標準,速度快、效率高。 業務分析師人員或審核人員可以利用它輕松查看業務規則,從而檢驗是否已編碼的規則執行了所需的業務規則。
Drools是開源軟件,根據Apache Software License發布。它用100%純Java?編寫,可以在任何JVM上運行,并且在Maven Central存儲庫中也可用。
Drools 是業務邏輯集成平臺,被分為5個項目:
Drools Workbench (web UI )
Drools Expert (business rules engine)
Drools Fusion (complex event processing features)
jBPM (process/workflow integration for rule orchestration/flow)
OptaPlanner (automated planning)
Drools相關概念:
事實(Fact):對象之間及對象屬性之間的關系
規則(rule):是由條件和結論構成的推理語句,一般表示為if…Then。一個規則的if部分稱為LHS,then部分稱為RHS。
模式(module):就是指IF語句的條件。這里IF條件可能是有幾個更小的條件組成的大條件。模式就是指的不能在繼續分割下去的最小的原子條件。
EasyRule是輕量級的規則引擎API。它提供Rule抽象來創建帶有條件和動作的規則,以及RulesEngine通過一組規則運行以測試條件和執行動作的API。
以下是EasyRule的一些核心特點:
輕量級規則引擎API。
基于注釋和POJO。
支持復合規則構造。
支持表達語言(如MVEL和SpEL)來定義規則。
簡單了解下easyRule
核心概念
Rule : 包含規則執行的條件與動作,描述,優先級別。屬于最基本配置。
Facts:輸入對象。
RulesEngine:規則引擎執行核心。
簡單了解下使用例子
添加Maven 依賴
簡易規則提供以下創建規則的選項
以聲明方式使用注釋。
務實地使用流利的API。
使用表達語言
使用規則描述符。
讓我們看幾個例子:
聲明式注解
或者使用函數方式
表達式方式
文件描述
執行規則
RuleBook提供了靈活的簡單直觀的DSL。如果您有更多規則集,我們可以將其構建為帶注釋的POJO,并且RuleBook可以將整個包立即轉換為RuleBook。它提供了一個易于使用的啟用Lambda的領域特定語言或使用POJO,讓我們使用RuleBook來查看一個簡單的規則定義:
Maven依賴
要將RuleBook添加到項目中,請在pom.xml文件中添加以下依賴項:
讓我們看一個例子:
Hello World
使用Facts
執行規則
OpenL Tablets業務規則引擎(BRE)和業務規則管理系統(BRMS)。它包含以下主要組件:
Business Rules Engines(業務規則引擎)
WebStudio
Web services(web服務)
Rule repository(基于JCR的實現的規則庫)
核心概念
Rules:規則是由條件,操作和返回值組成的邏輯語句
Tables:列出了OpenL Tablets處理的基本信息,例如規則和數據
Projects: 是處理規則相關信息所需的所有資源的容器。通常,一個簡單的項目僅包含帶有規則的Excel文件。
maven依賴
使用
在本文中,我們討論了Java中流行的規則引擎。這些規則引擎為業務邏輯抽象提供了靈活性。在所有這些規則引擎中,Drools是最先進,最活躍的規則引擎,也正因如此,環境也是相對復雜。
EasyRule更加簡潔,我們現在就是使用的這個解決方案。
根據自身的業務需要,選擇更加符合的業務引擎方案。
文章整理不易,請關注下
微信公共號:
頭條號:
Java常用的規則引擎,讓你變動的代碼更加容易維護相關教程
總結
以上是生活随笔為你收集整理的Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thetae_1在MATLAB中的意思,
- 下一篇: matlab读取指定路径excel文件,