日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护

發(fā)布時(shí)間:2023/12/18 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java常用的規(guī)則引擎,讓你變動(dòng)的代碼更加容易維護(hù)

Java常用的規(guī)則引擎,讓你變動(dòng)的代碼更加容易維護(hù)

在本文中,我們將介紹Java中一些最受歡迎的規(guī)則引擎。

規(guī)則引擎由推理引擎發(fā)展而來,是一種嵌入在應(yīng)用程序中的組件,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來,并使用預(yù)定義的語(yǔ)義模塊編寫業(yè)務(wù)決策。接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)業(yè)務(wù)規(guī)則做出業(yè)務(wù)決策。在Java中,大多數(shù)流行的規(guī)則引擎都實(shí)現(xiàn)JSR94

將規(guī)則引擎想象成一個(gè)以數(shù)據(jù)和規(guī)則作為輸入的系統(tǒng)。它將這些規(guī)則應(yīng)用于數(shù)據(jù),并根據(jù)規(guī)則定義為我們提供輸出。讓我們以一個(gè)在線購(gòu)物為例,我們希望為客戶提供某些促銷或折扣。

如果購(gòu)物車總額超過$ 400,可為客戶提供20%的折扣。

第一次下單給10%。

上面將購(gòu)物車和客戶定義為滿足規(guī)則集中定義的條件的規(guī)則將在其中執(zhí)行的數(shù)據(jù)。

簡(jiǎn)化系統(tǒng)架構(gòu),優(yōu)化應(yīng)用

提高系統(tǒng)的可維護(hù)性

減少編寫“硬代碼”業(yè)務(wù)規(guī)則的成本和風(fēng)險(xiǎn)

應(yīng)付特殊狀況,即客戶一開始沒有提到要將業(yè)務(wù)邏輯考慮在內(nèi)

過將規(guī)則引擎分開,它提供了更大的可重用性。

流程分支非常復(fù)雜,規(guī)則變量龐大

有不確定性的需求,變更頻率較高

需要快速做出響應(yīng)和決策

規(guī)則變更期望脫離于開發(fā)人員,脫離coding

Java 中常用的開源規(guī)則引擎有哪些呢?

Drools是業(yè)務(wù)規(guī)則管理系統(tǒng)(BRMS)解決方案。它提供了核心業(yè)務(wù)規(guī)則引擎(BRE),Web UI和規(guī)則管理應(yīng)用程序(Drools Workbench),對(duì)符合性級(jí)別3的決策模型和注釋(DMN)模型的完整運(yùn)行時(shí)支持,以及用于核心開發(fā)的Eclipse IDE插件及Idea插件。

Drools 是一個(gè)基于Charles Forgy’s的RETE算法的,易于訪問企業(yè)策略、易于調(diào)整以及易于管理的開源業(yè)務(wù)規(guī)則引擎,符合業(yè)內(nèi)標(biāo)準(zhǔn),速度快、效率高。 業(yè)務(wù)分析師人員或?qū)徍巳藛T可以利用它輕松查看業(yè)務(wù)規(guī)則,從而檢驗(yàn)是否已編碼的規(guī)則執(zhí)行了所需的業(yè)務(wù)規(guī)則。

Drools是開源軟件,根據(jù)Apache Software License發(fā)布。它用100%純Java?編寫,可以在任何JVM上運(yùn)行,并且在Maven Central存儲(chǔ)庫(kù)中也可用。

Drools 是業(yè)務(wù)邏輯集成平臺(tái),被分為5個(gè)項(xiàng)目:

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相關(guān)概念:

事實(shí)(Fact):對(duì)象之間及對(duì)象屬性之間的關(guān)系

規(guī)則(rule):是由條件和結(jié)論構(gòu)成的推理語(yǔ)句,一般表示為if…Then。一個(gè)規(guī)則的if部分稱為L(zhǎng)HS,then部分稱為RHS。

模式(module):就是指IF語(yǔ)句的條件。這里IF條件可能是有幾個(gè)更小的條件組成的大條件。模式就是指的不能在繼續(xù)分割下去的最小的原子條件。

EasyRule是輕量級(jí)的規(guī)則引擎API。它提供Rule抽象來創(chuàng)建帶有條件和動(dòng)作的規(guī)則,以及RulesEngine通過一組規(guī)則運(yùn)行以測(cè)試條件和執(zhí)行動(dòng)作的API。

以下是EasyRule的一些核心特點(diǎn):

輕量級(jí)規(guī)則引擎API。

基于注釋和POJO。

支持復(fù)合規(guī)則構(gòu)造。

支持表達(dá)語(yǔ)言(如MVEL和SpEL)來定義規(guī)則。

簡(jiǎn)單了解下easyRule

核心概念

Rule : 包含規(guī)則執(zhí)行的條件與動(dòng)作,描述,優(yōu)先級(jí)別。屬于最基本配置。

Facts:輸入對(duì)象。

RulesEngine:規(guī)則引擎執(zhí)行核心。

簡(jiǎn)單了解下使用例子

添加Maven 依賴

簡(jiǎn)易規(guī)則提供以下創(chuàng)建規(guī)則的選項(xiàng)

以聲明方式使用注釋。

務(wù)實(shí)地使用流利的API。

使用表達(dá)語(yǔ)言

使用規(guī)則描述符。

讓我們看幾個(gè)例子:

聲明式注解

或者使用函數(shù)方式

表達(dá)式方式

文件描述

執(zhí)行規(guī)則

RuleBook提供了靈活的簡(jiǎn)單直觀的DSL。如果您有更多規(guī)則集,我們可以將其構(gòu)建為帶注釋的POJO,并且RuleBook可以將整個(gè)包立即轉(zhuǎn)換為RuleBook。它提供了一個(gè)易于使用的啟用Lambda的領(lǐng)域特定語(yǔ)言或使用POJO,讓我們使用RuleBook來查看一個(gè)簡(jiǎn)單的規(guī)則定義:

Maven依賴

要將RuleBook添加到項(xiàng)目中,請(qǐng)?jiān)趐om.xml文件中添加以下依賴項(xiàng):

讓我們看一個(gè)例子:

Hello World

使用Facts

執(zhí)行規(guī)則

OpenL Tablets業(yè)務(wù)規(guī)則引擎(BRE)和業(yè)務(wù)規(guī)則管理系統(tǒng)(BRMS)。它包含以下主要組件:

Business Rules Engines(業(yè)務(wù)規(guī)則引擎)

WebStudio

Web services(web服務(wù))

Rule repository(基于JCR的實(shí)現(xiàn)的規(guī)則庫(kù))

核心概念

Rules:規(guī)則是由條件,操作和返回值組成的邏輯語(yǔ)句

Tables:列出了OpenL Tablets處理的基本信息,例如規(guī)則和數(shù)據(jù)

Projects: 是處理規(guī)則相關(guān)信息所需的所有資源的容器。通常,一個(gè)簡(jiǎn)單的項(xiàng)目?jī)H包含帶有規(guī)則的Excel文件。

maven依賴

使用

在本文中,我們討論了Java中流行的規(guī)則引擎。這些規(guī)則引擎為業(yè)務(wù)邏輯抽象提供了靈活性。在所有這些規(guī)則引擎中,Drools是最先進(jìn),最活躍的規(guī)則引擎,也正因如此,環(huán)境也是相對(duì)復(fù)雜。

EasyRule更加簡(jiǎn)潔,我們現(xiàn)在就是使用的這個(gè)解決方案。

根據(jù)自身的業(yè)務(wù)需要,選擇更加符合的業(yè)務(wù)引擎方案。

文章整理不易,請(qǐng)關(guān)注下

微信公共號(hào):

頭條號(hào):

Java常用的規(guī)則引擎,讓你變動(dòng)的代碼更加容易維護(hù)相關(guān)教程

總結(jié)

以上是生活随笔為你收集整理的Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。