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

JBoss Drools 6.3 (KIE Workbench) 入門實戰教程:從安裝到第一條規則

     編輯:Java 綜合教學

前言:為什麼需要規則引擎?

傳統開發中,業務邏輯硬編碼在 Java 程式中,導致:

  • 業務變更需修改代碼、重新編譯部署,週期長、風險高
  • 業務人員無法直接參與規則維護,溝通成本高
  • 複雜規則導致 if-else 巢狀地獄,難以維護

規則引擎將業務規則從代碼中剝離,以聲明式方式編寫,支援熱更新、版本管理、業務人員可視化編輯,實現「業務驅動 IT」。

核心概念:規則、事實、BRMS、KIE

  • Fact(事實/因子):規則評估的輸入資料(如投保金額、用戶年齡)
  • Rule(規則/公式):when 條件 then 動作 結構
  • KIE (Knowledge Is Everything):Drools 6.x 統一知識平台,包含 Workbench、Execution Server
  • BRMS:業務規則管理系統,提供規則編寫、測試、部署、版本控制一站式平台

規則引擎核心價值

環境準備與安裝步驟

基礎環境

  • CentOS 6+
  • MySQL 5.5+
  • Apache Tomcat 7.0.67+
  • JDK 1.7+

關鍵安裝檔案

  • kie-drools-wb-6.3.0.Final-tomcat7.war → 解壓重命名為 kie-drools 放入 webapps
  • drools-distribution-6.3.0.Final.zip → 解壓備用
  • JDBC 驅動 mysql-connector-java-5.1.38.jar 等 JAR 放入 tomcat/lib

核心配置檔修改

  1. persistence.xml:將 H2Dialect 改為 MySQL5Dialect
  2. btm-config.properties (Tomcat conf 目錄):配置 Bitronix 事務管理器日誌路徑
  3. resources.properties (同目錄):配置 XA 資料源(JNDI 名 jdbc/jbpm、連線池、MySQL 連線資訊)
  4. context.xml:新增 <Resource name="jdbc/jbpm" .../>
  5. server.xml:在 <Host> 下新增 <Valve className="org.kie.integration.tomcat.JACCValve"/>
  6. tomcat-users.xml:新增 admin/manager-gui 角色用戶(如 tomcat/tomcat)
  7. catalina.sh:設定 CATALINA_OPTS、JAVA_OPTS(含 -Dorg.kie.demo=false 避免離線環境啟動超時)

資料庫初始化

建立 drools schema,授權用戶(支援遠端 % 或指定 IP),首啟會自動建 39 張表。

啟動驗證與首次登入

./catalina.sh start
# 觀察 logs/catalina.out 無錯誤
# 瀏覽器訪問 https://IP:8080/kie-drools
# 登入 tomcat/tomcat

KIE Workbench 首頁

實戰:建立報銷審批規則專案

1. 新建專案(本質為 Maven 專案)

新建專案

2. 定義因子

package org.sky.threshholdrulz;
public class PaymentInfo implements Serializable {
    private int moneyAmount = 0;
    private String decisionPath = "";
    // getter/setter 省略
}

建立 Data Object

3. 編寫 DRL 規則

package org.sky.threshholdrulz;
rule "approval by manager"
when
    $p : PaymentInfo(moneyAmount > 5000)
then
    modify($p) { setDecisionPath("GM") };
end

rule "approval by general manager"
when
    $p : PaymentInfo(moneyAmount <= 5000)
then
    modify($p) { setDecisionPath("M") };
end

規則編輯器

4. 向導式測試

  • 建立 Test Scenario,輸入 moneyAmount = 6000 → 預期 decisionPath = "GM"
  • 執行測試,綠燈通過

測試結果

Java 程式整合調用(本地規則檔)

  1. 專案打包 → 下載 .jar (KJAR)
  2. Maven 依賴引入 KJAR
  3. 程式碼載入 KieServices → KieContainer → KieSession → insert/fireAllRules

下載 KJAR

後續預告

下集將講解:

  • 遠程 REST/KIE Server 調用
  • Stateful vs Stateless KieSession 差異與選型
  • 規則版本管理、熱部署、生產環境最佳實踐
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved