首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Drools BRMS 實戰:智能交通系統業務規則動態管理

     編輯:Java 相關知識

業務場景:高速公路收費規則

智能交通系統中,車輛通過收費點需根據道路類型、車輛類型、識別方式、賬戶類型、通行時段等多維度計算費用。規則頻繁變動(如調整費率、新增折扣),硬編碼維護成本高、上線慢。引入 Drools BRMS 實現規則外部化、熱部署、業務人員可視化維護。

Drools BRMS 4.0.7 架構

  • UI 層:GWT 實現的 Web 編輯器,支援決策表、DSL、DRL 多種規則編寫方式。
  • 倉庫層:JackRabbit (JCR) 存儲規則資產、版本管理。
  • 核心引擎:驗證、編譯、部署規則包,暴露 HTTP URL 供 RuleAgent 輪詢獲取。

規則建模:決策表方式

業務對象模型 (BOM)

public class RuleInput implements Serializable {
    // 輸入條件
    String identifyMethod;      // TAG/OCR/MIR
    Date detectionTime;
    String detectionPointCode;
    String accountType;         // ANNUAL/TEMP
    int vehicleClass;           // 1=摩托車 2=小轎車 3=卡車...
    int dayOfWeek;              // 1,7=週末 1,1=工作日
    int timeOfDay;              // 8-24 / 0-8
    String operator;
    String purposeOfUse;        // A/B/C...

    // 輸出結果
    double tollFee;      // 道路基本使用費
    double adminFee;     // 附加費
    double discount;     // 折扣
}

決策表結構

Excel/OpenOffice 編輯,上傳至 BRMS。三張決策表分別計算:

  1. 通行費:依運營商、檢測點、賬戶類型、車型、日期、時段、用途決定。
  2. 附加費:識別方式 TAG=0, OCR=0.5, MIR=1 元。
  3. 折扣:ANNUAL=-0.2, TEMP=-0.4。

決策表關鍵行說明

行號關鍵字說明
2RuleSet規則集名稱,與 Package 同名
3Import導入 BOM 類路徑
6RuleTable開始一張規則表
7CONDITION/ACTION標記該欄為條件/動作
8fee宣告模型變數名及類型
9模板條件/動作模板,$1,$2 為參數佔位
10描述欄位說明
11+數據行每行一條規則

部署與客戶端整合

  1. 建立 Package com.sample.rule,上傳 BOM JAR,配置 Import。
  2. 上傳三張決策表,Validate 通過後 Build Package。
  3. Create Snapshot TollRule,獲得部署 URL:
    https://localhost:8080/drools-jbrms/.../package/com.sample.rule/TollRule

客戶端 RuleAgent 配置

newInstance=false
url=https://localhost:8080/drools-jbrms/.../package/com.sample.rule/TollRule
poll=30
name=TollRule
localCacheDir=c:/temp

執行規則代碼

StatefulSession session = ruleBase.newStatefulSession();
session.insert(ruleInput);
session.fireAllRules();
session.dispose();
// 結果保存在 ruleInput 的 tollFee/adminFee/discount 欄位

動態修改驗證

業務調整 OCR 附加費 0.5 → 0.8:修改決策表 → 重新上傳 → Build & Deploy 新 Snapshot。無需重啟應用,RuleAgent 輪詢 30 秒後自動熱加載,客戶端刷新即見新費率。

總結

  • Drools BRMS 提供輕量級、Web 化的規則全生命週期管理。
  • 決策表讓業務人員直接維護,降低 IT 介入成本。
  • RuleAgent 熱部署機制保障規則變更實時生效。
  • 適合電信、銀行、政府等規則頻變、合規要求高的領域。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved