国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

這五種規(guī)則引擎,真香!

開(kāi)發(fā) 前端
曾有人問(wèn)我:“規(guī)則引擎會(huì)不會(huì)讓程序員失業(yè)?” 我的回答是:“工具永遠(yuǎn)淘汰不了思考者,只會(huì)淘汰手工作坊”。真正的高手,不是寫(xiě)更多代碼,而是用更優(yōu)雅的方式解決問(wèn)題。

前言

核心痛點(diǎn):業(yè)務(wù)規(guī)則高頻變更與系統(tǒng)穩(wěn)定性之間的矛盾。

想象一個(gè)電商促銷(xiāo)場(chǎng)景:

// 傳統(tǒng)硬編碼方式(噩夢(mèng)開(kāi)始...)
public BigDecimal calculateDiscount(Order order) {
    BigDecimal discount = BigDecimal.ZERO;
    
    if (order.getTotalAmount().compareTo(new BigDecimal("100")) >= 0) {
        discount = discount.add(new BigDecimal("10"));
    }
    
    if (order.getUser().isVip()) {
        discount = discount.add(new BigDecimal("5"));
    }
    
    // 更多if-else嵌套...
    return discount;
}

當(dāng)規(guī)則變成:"非VIP用戶(hù)滿(mǎn)200減30,VIP用戶(hù)滿(mǎn)150減40,且周二全場(chǎng)額外95折"時(shí),代碼將陷入維護(hù)地獄!

規(guī)則引擎通過(guò)分離規(guī)則邏輯解決這個(gè)問(wèn)題:

  1. 規(guī)則外置存儲(chǔ)(數(shù)據(jù)庫(kù)/文件)
  2. 支持動(dòng)態(tài)加載
  3. 聲明式規(guī)則語(yǔ)法
  4. 獨(dú)立執(zhí)行環(huán)境

下面給大家分享5種常用的規(guī)則引擎,希望對(duì)你會(huì)有所幫助。

1.五大常用規(guī)則引擎

1.1 Drools:企業(yè)級(jí)規(guī)則引擎扛把子

官網(wǎng):https://www.drools.org/

適用場(chǎng)景:

  • 金融風(fēng)控規(guī)則(上百條復(fù)雜規(guī)則)
  • 保險(xiǎn)理賠計(jì)算
  • 電商促銷(xiāo)體系

實(shí)戰(zhàn):折扣規(guī)則配置

// 規(guī)則文件 discount.drl
rule "VIP用戶(hù)滿(mǎn)100減20"
    when
        $user: User(level == "VIP")
        $order: Order(amount > 100)
    then
        $order.addDiscount(20);
end

Java調(diào)用代碼:

KieServices kieServices = KieServices.Factory.get();
KieContainer kContainer = kieServices.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("discountSession");

kSession.insert(user);
kSession.insert(order);
kSession.fireAllRules();

優(yōu)點(diǎn)

  • 完整的RETE算法實(shí)現(xiàn)
  • 支持復(fù)雜的規(guī)則網(wǎng)絡(luò)
  • 完善的監(jiān)控管理控制臺(tái)

缺點(diǎn)

  • 學(xué)習(xí)曲線陡峭
  • 內(nèi)存消耗較大
  • 需要依賴(lài)Kie容器

適合:不差錢(qián)的大廠,規(guī)則復(fù)雜度高的場(chǎng)景

1.2 Easy Rules:輕量級(jí)規(guī)則引擎之王

官網(wǎng):https://github.com/j-easy/easy-rules

適用場(chǎng)景:

  • 參數(shù)校驗(yàn)
  • 簡(jiǎn)單風(fēng)控規(guī)則
  • 審批流引擎

注解式開(kāi)發(fā):

@Rule(name = "雨天打折規(guī)則", description = "下雨天全場(chǎng)9折")
public class RainDiscountRule {

    @Condition
    public boolean when(@Fact("weather") String weather) {
        return "rainy".equals(weather);
    }
    
    @Action
    public void then(@Fact("order") Order order) {
        order.setDiscount(0.9);
    }
}

引擎執(zhí)行:

RulesEngineParameters params = new RulesEngineParameters()
    .skipOnFirstAppliedRule(true); // 匹配即停止

RulesEngine engine = new DefaultRulesEngine(params);
engine.fire(rules, facts);

優(yōu)點(diǎn)

  • 五分鐘上手
  • 零第三方依賴(lài)
  • 支持規(guī)則組合

缺點(diǎn)

  • 不支持復(fù)雜規(guī)則鏈
  • 缺少可視化界面

適合:中小項(xiàng)目快速落地,開(kāi)發(fā)人員不足時(shí)

1.3 QLExpress:阿里系腳本引擎之光

官網(wǎng):https://github.com/alibaba/QLExpress

適用場(chǎng)景:

  • 動(dòng)態(tài)配置計(jì)算邏輯
  • 財(cái)務(wù)公式計(jì)算
  • 營(yíng)銷(xiāo)規(guī)則靈活變更

執(zhí)行動(dòng)態(tài)腳本:

ExpressRunner runner = new ExpressRunner();
DefaultContext<String, Object> context = new DefaultContext<>();
context.put("user", user);
context.put("order", order);

String express = "if (user.level == 'VIP') { order.discount = 0.85; }";
runner.execute(express, context, null, true, false);

高級(jí)特性:

// 1. 函數(shù)擴(kuò)展
runner.addFunction("計(jì)算稅費(fèi)", new Operator() {
    @Override
    public Object execute(Object[] list) {
        return (Double)list[0] * 0.06;
    }
});

// 2. 宏定義
runner.addMacro("是否新用戶(hù)", "user.regDays < 30");

優(yōu)點(diǎn)

  • 腳本熱更新
  • 語(yǔ)法接近Java
  • 完善的沙箱安全

缺點(diǎn)

  • 調(diào)試?yán)щy
  • 復(fù)雜規(guī)則可讀性差

適合:需要頻繁修改規(guī)則的業(yè)務(wù)(如運(yùn)營(yíng)活動(dòng))

1.4 Aviator:高性能表達(dá)式專(zhuān)家

官網(wǎng):https://github.com/killme2008/aviatorscript

適用場(chǎng)景:

  • 實(shí)時(shí)定價(jià)引擎
  • 風(fēng)控指標(biāo)計(jì)算
  • 大數(shù)據(jù)字段加工

性能對(duì)比(執(zhí)行10萬(wàn)次):

// Aviator 表達(dá)式
Expression exp = AviatorEvaluator.compile("user.age > 18 && order.amount > 100");
exp.execute(map);

// Groovy 腳本
new GroovyShell().evaluate("user.age > 18 && order.amount > 100");

引擎

耗時(shí)

Aviator

220ms

Groovy

1850ms

編譯優(yōu)化:

// 開(kāi)啟編譯緩存(默認(rèn)開(kāi)啟)
AviatorEvaluator.getInstance().useLRUExpressionCache(1000);

// 字節(jié)碼生成模式(JDK8+)
AviatorEvaluator.setOption(Options.ASM, true);

優(yōu)點(diǎn)

  • 性能碾壓同類(lèi)引擎
  • 支持字節(jié)碼生成
  • 輕量無(wú)依賴(lài)

缺點(diǎn)

  • 只支持表達(dá)式
  • 不支持流程控制


適合:對(duì)性能有極致要求的計(jì)算場(chǎng)景

1.5 LiteFlow:規(guī)則編排新物種

官網(wǎng):https://liteflow.com/

適用場(chǎng)景:

  • 復(fù)雜業(yè)務(wù)流程
  • 訂單狀態(tài)機(jī)
  • 審核工作流

編排示例:

<chain name="orderProcess">
    <then value="checkStock,checkCredit"/> <!-- 并行執(zhí)行 -->
    <when value="isVipUser"> 
        <then value="vipDiscount"/> 
    </when>
    <otherwise>
        <then value="normalDiscount"/>
    </otherwise>
    <then value="saveOrder"/>
</chain>

Java調(diào)用:

LiteflowResponse response = FlowExecutor.execute2Resp("orderProcess", order, User.class);
if (response.isSuccess()) {
    System.out.println("流程執(zhí)行成功");
} else {
    System.out.println("失敗原因:" + response.getCause());
}

優(yōu)點(diǎn)

  • 可視化流程編排
  • 支持異步、并行、條件分支
  • 熱更新規(guī)則

缺點(diǎn)

  • 新框架文檔較少
  • 社區(qū)生態(tài)待完善


適合:需要靈活編排的復(fù)雜業(yè)務(wù)流

2.五大規(guī)則引擎橫向評(píng)測(cè)

圖片圖片

性能壓測(cè)數(shù)據(jù)(單機(jī)1萬(wàn)次執(zhí)行):

引擎

耗時(shí)

內(nèi)存占用

特點(diǎn)

Drools

420ms

功能全面

Easy Rules

38ms

輕量易用

QLExpress

65ms

阿里系腳本引擎

Aviator

28ms

極低

高性能表達(dá)式

LiteFlow

120ms

流程編排專(zhuān)家

3.如何技術(shù)選型?

圖片圖片

黃金法則:

  1. 簡(jiǎn)單場(chǎng)景:EasyRules + Aviator 組合拳
  2. 金融風(fēng)控:Drools 穩(wěn)如老狗
  3. 電商運(yùn)營(yíng):QLExpress 靈活應(yīng)變
  4. 工作流驅(qū)動(dòng):LiteFlow 未來(lái)可期

4.避坑指南

  • Drools內(nèi)存溢出
// 設(shè)置無(wú)狀態(tài)會(huì)話(避免內(nèi)存積累)
KieSession session = kContainer.newStatelessKieSession();
  • QLExpress安全漏洞
// 禁用危險(xiǎn)方法
runner.addFunctionOfServiceMethod("exit", System.class, "exit", null, null);
  • 規(guī)則沖突檢測(cè)
// Drools沖突處理策略
KieSessionConfiguration config = KieServices.Factory.get().newKieSessionConfiguration();
config.setProperty("drools.sequential", "true"); // 按順序執(zhí)行

總結(jié)

  1. 能用:替換if/else(新手村)
  2. 用好:規(guī)則熱更新+可視化(進(jìn)階)
  3. 用精:規(guī)則編排+性能優(yōu)化(大師級(jí))

曾有人問(wèn)我:“規(guī)則引擎會(huì)不會(huì)讓程序員失業(yè)?” 我的回答是:“工具永遠(yuǎn)淘汰不了思考者,只會(huì)淘汰手工作坊”

真正的高手,不是寫(xiě)更多代碼,而是用更優(yōu)雅的方式解決問(wèn)題。

責(zé)任編輯:武曉燕 來(lái)源: 蘇三說(shuō)技術(shù)
相關(guān)推薦

2023-08-09 08:01:38

場(chǎng)景Redis接口

2024-07-12 11:54:38

2025-04-14 08:10:00

負(fù)載均衡代碼java

2019-09-20 08:00:00

開(kāi)發(fā)技能Web開(kāi)發(fā) 人工智能

2025-08-01 09:38:00

2022-01-07 18:53:51

元素服務(wù)端數(shù)據(jù)

2021-12-16 15:40:35

編程語(yǔ)言微軟語(yǔ)言

2021-12-30 10:36:12

編程語(yǔ)言RubyFlahs

2022-06-12 20:53:09

TS typeofJavaScript

2023-10-16 22:36:41

多線程應(yīng)用程序

2017-12-17 21:05:41

編程語(yǔ)言DevOps庫(kù)

2025-05-16 10:03:09

2018-11-02 14:20:44

區(qū)塊鏈數(shù)字貨幣比特幣

2018-09-29 05:12:54

廣域網(wǎng)網(wǎng)絡(luò)連接DDN

2016-03-12 21:35:37

2019-09-11 09:21:54

Facebook法定貨幣比特幣

2019-10-17 09:07:49

TCPUDPHTTP

2014-08-06 11:03:48

編程語(yǔ)言

2020-08-21 07:57:13

軟件開(kāi)發(fā)程序員

2025-09-29 01:55:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲五月六月丁香激情| 欧美精品日韩少妇| 99re免费99re在线视频手机版| 久久99国产精品视频| 亚洲欧美精品中文字幕在线| 欧美中文在线字幕| 丁香花在线电影| 亚洲第一av色| 国产免费毛卡片| 欧美亚洲三级| 4438全国亚洲精品在线观看视频| 另类视频在线| 欧美性少妇18aaaa视频| 色综合手机在线| 免费观看在线综合色| 成人免费在线视频网站| 警花av一区二区三区| 欧美草草影院在线视频| 濑亚美莉一二区在线视频| 激情综合网天天干| 91嫩草在线| 国产乱码精品一区二区亚洲| 亚洲跨种族黑人xxx| 久久中文字幕一区二区| 99久久自偷自偷国产精品不卡| 欧美亚洲色图校园春色| 国产亚洲精品va在线观看| 免费a级毛片在线播放| 中文字幕九色91在线| 成人福利影视| 午夜精品蜜臀一区二区三区免费| 午夜精品久久久久久毛片| 91精品综合久久久久久| 中文字幕高清在线观看| 国产精品无圣光一区二区| 日本国产中文字幕| 久久久久看片| 蜜桃狠狠色伊人亚洲综合网站| 婷婷久久一区| 国产日韩精品在线| 精品免费在线| 国产成人aa精品一区在线播放| 欧美影院精品| 不卡av在线网站| 99久久er| 在线不卡国产精品| 激情亚洲影院在线观看| 国产丝袜精品视频| 51av在线| 精品久久人人做人人爰| 午夜欧洲一区| 国产成人一区二区三区电影| 精品视频一区二区三区| 久久人人97超碰人人澡爱香蕉| 激情文学一区| 欧美性xxxx69| 久久国内精品自在自线400部| 亚洲精品电影在线一区| 日韩avvvv在线播放| 欧美日韩综合另类| 一区二区三区免费在线观看| 四虎影视精品成人| 欧美色倩网站大全免费| 天使と恶魔の榨精在线播放| 精品少妇一区二区三区| 精品少妇av| 超碰在线人人爱| 中文字幕五月欧美| 瑜伽美女视频| 色av成人天堂桃色av| 中文字幕中文字幕在线十八区 | 在线日韩成人| 欧美—级a级欧美特级ar全黄| 98视频精品全部国产| 久久久久久亚洲| 国产一区二三区| 国产成人无码a区在线观看视频| 成人国产亚洲欧美成人综合网| 91香蕉视频污版| 亚洲桃花岛网站| 欧美电影完整版在线观看| 超级碰在线观看| 中文在线一区二区| 日韩深夜福利网站| 超级碰在线观看| 亚洲裸体xxxx| 日韩中文欧美在线| 国产中文字幕视频在线观看| 亚洲国产中文字幕在线观看| 91麻豆精品| 国产精品丝袜久久久久久高清 | 一区二区在线观看免费 | 激情成人中文字幕| www.久久久久.com| 日韩在线视频观看| 五月激激激综合网色播| www.夜夜爽| 91麻豆精品国产| 国产精品视区| 日韩欧美xxxx| 亚洲自拍另类综合| 蜜桃a∨噜噜一区二区三区| 亚色视频在线观看| 欧美一区二区高清| 中文字幕一区二区三区日韩精品 | 日韩电影免费看| 久久久久久久久网站| 久久老女人爱爱| 黄色片视频在线免费观看| 色爱av美腿丝袜综合粉嫩av| 成人精品视频一区二区三区尤物| 日本综合视频| 亚洲综合国产精品| 丁香五精品蜜臀久久久久99网站| 3344永久| 亚洲第一男人av| 精品盗摄女厕tp美女嘘嘘| 色佬视频在线观看| 国产成人精品福利一区二区三区 | 国产影视一区| 亚洲高清成人影院| 久久爱av电影| 亚洲第一黄色网| 成人高清伦理免费影院在线观看| 欧美.com| 猛男欧美办公室激情在线| 成人av免费电影| 亚洲第一精品福利| 99精品视频在线观看免费| 91社区在线观看| 久久综合电影一区| 1024成人网| 竹内纱里奈兽皇系列在线观看| 97在线视频国产| 免费久久99精品国产| avav成人| www.99色| 都市激情久久久久久久久久久| 亚洲成色999久久网站| 久久精子c满五个校花| 精品精品久久| 国产又色又爽又黄刺激在线视频| 国产 福利 在线| 国产精品黄色av| 91毛片在线观看| 三妻四妾完整版在线观看电视剧 | 亚洲精品天堂成人片av在线播放 | 日韩精品久久| 国产成人无码精品久久久性色| 992tv在线成人免费观看| 欧美亚州韩日在线看免费版国语版| 欧美尿孔扩张虐视频| 你懂的视频在线播放| 日韩av理论片| 97精品国产露脸对白| 超碰成人久久| 成视频年人免费看黄网站| 国产一区二区免费在线观看| 亚洲国产aⅴ成人精品无吗| 久久福利影视| 激情av综合| 亚洲一区二区三区四区五区xx| 成人免费激情视频| 亚洲三级av在线| 亚洲一区二区成人在线观看| 精品一区二区三区在线观看| 女子免费在线观看视频www| 狠狠热免费视频| 久久www免费人成精品| 欧美激情国产精品| 国产午夜精品一区二区三区四区| 欧美gay视频| 男插女免费视频| 日韩欧美国产视频| 成人高清av在线| 亚洲精品免费观看| 老司机午夜在线视频| 国产亚洲精品美女久久久m| 日韩在线视频网站| 欧美色倩网站大全免费| 中文字幕欧美国产| 久久一区欧美| 18videosex性欧美麻豆| www.xxx黄| 天堂а√在线中文在线| 91天堂在线视频| 欧美午夜精品免费| 久久久精品国产99久久精品芒果| 麻豆久久精品| 久久一区二区三区喷水| 久久综合九色综合久| 熟女人妇 成熟妇女系列视频| 欧美人交a欧美精品| 久久久久久久久久久久久夜| 蜜乳av另类精品一区二区| 网友自拍区视频精品| 高清久久一区| 男女午夜视频在线观看| 成人精品在线视频| 国产最新精品视频|