简介本资源为 Drools 规则引擎 7.48.0 Final 正式发行版完整分发包面向 Java 开发者、企业级规则系统设计人员及中间件集成工程师适用于业务规则动态化管理、复杂决策逻辑解耦、可配置审批流与风控策略落地等典型场景。压缩包为标准 ZIP 格式体积 64.01MB虽未提供具体文件清单但依据 Drools 官方 distribution 惯例内含核心 JAR 库如 drools-core、kie-api、预编译示例工程、规则调试工具Drools Workbench 相关脚手架、文档HTML/ASCII Doc 格式及 Maven 依赖描述文件便于开箱即用与本地集成验证。目前已有 309 人学习下载适合需快速部署稳定版本、研究规则语法演进、比对 7.x 系列 API 变更或搭建本地规则测试环境的中高级开发者。1. Drools 7.48.0.Final 安装不是“解压即用”JDK 11 是硬门槛Maven 3.6 是隐形守门员你兴冲冲下载完drools-distribution-7.48.0.Final.zip双击解压、进bin/目录敲./kieserver.sh start—— 结果报错UnsupportedClassVersionError: org/kie/api/KieServices has been compiled by a more recent version of the Java Runtime别急这不是 Drools 报错是 JDK 在给你亮红灯。Drools 7.48.0.Final 是 Drools 7.x 系列中最后一个明确要求 JDK 11 的稳定 Final 版本后续 7.49 开始逐步向 JDK 17 迁移它彻底放弃了对 JDK 8 的兼容。我见过太多人卡在这一步本地 JDK 8 环境跑着老项目顺手想试下新 Drools结果连kie-api的 class 都加载失败——不是 Drools 不行是你 JVM 太老。这套环境不是给“试试看”的人准备的而是给正在落地规则引擎、需要稳定 KIE Server Workbench 组合、且已规划好 JDK 升级路径的团队用的。它不轻量但够扎实不时髦但少玄学。如果你还在用 Spring Boot 2.3 或 WildFly 26 做底座那 7.48.0.Final 反而是当前最省心的选型——它和这些中间件的依赖冲突最少社区补丁最全。下面我们就从“装什么”开始一砖一瓦垒出能跑通规则编译、部署、执行的完整 Drools 7.48 环境。2. 环境准备与核心组件定位先看清 ZIP 包里到底有什么drools-distribution-7.48.0.Final.zip不是单个可执行 jar而是一套开箱即用但需手动组装的工具集。它不像 Spring Boot 那样一个 jar 启动全部服务而是把 KIE Server、Workbench、示例规则工程、文档、脚本全打包进来交由你按需取用。理解每个子目录的用途是避免后续“找不到配置文件”“启动报 NoClassDefFound”这类低级翻车的第一步。2.1 解压后目录结构解析哪些必须动哪些可以删解压后你会看到如下关键目录路径以$DROOLS_HOME表示目录作用是否必须备注bin/启动/停止脚本kieserver.sh/bat,workbench.sh/bat✅ 必须Linux/macOS 用.shWindows 用.bat脚本内硬编码了JAVA_HOME和JBOSS_HOME路径需提前配置business-central/WorkbenchWeb 控制台WAR 包及嵌入式 WildFly 配置✅ 必须若需图形化管理business-central.war是核心standalone/configuration/standalone.xml是关键配置文件kie-server/KIE Server规则执行服务WAR 包及独立启动配置✅ 必须若需 REST API 调用规则kie-server.war是服务主体standalone/configuration/standalone.xml同样需调参samples/官方示例工程Maven 结构⚠️ 推荐保留helloworld,loan-validation等 demo 是验证环境是否正常的黄金标准别急着删docs/PDF 格式官方文档含 Installation Guide, Developer Guide⚠️ 推荐保留InstallationGuide.pdf第 3 章详细说明了各组件端口、内存参数、安全配置比官网 Wiki 更准lib/公共依赖 JAR如kie-api-7.48.0.Final.jar✅ 必须所有 WAR 包都依赖此目录下的基础类库不可删除或替换提示drools-distribution-7.48.0.Final.zip不包含 JDK、Maven、WildFly 运行时。它假设你已准备好 JDK 11 和 Maven 3.6用于编译 sample并会将 KIE Server / Workbench 部署到你指定的 WildFly或内置轻量版。不要试图用 Tomcat 运行kie-server.war——它强依赖 WildFly 的 WeldCDI、Infinispan缓存、PicketBox安全等模块Tomcat 无法满足。2.2 JDK 11 验证与环境变量固化别让java -version欺骗你Drools 7.48.0.Final 编译目标字节码版本为55.0对应 JDK 11任何低于此版本的 JVM 都会直接抛UnsupportedClassVersionError。但很多人java -version显示11.0.20却仍启动失败——原因往往是JAVA_HOME指向了旧版本而PATH里混进了另一个 JDK 的bin。执行以下命令三重验证你的 JDK 11 是否真正生效# 1. 查看当前 shell 的 JAVA_HOME必须指向 JDK 11 根目录 echo $JAVA_HOME # 2. 查看 java 命令实际路径确认没被 PATH 里的其他 java 覆盖 which java ls -la $(which java) # 3. 强制用 JAVA_HOME 下的 java 执行版本检查绕过 PATH 干扰 $JAVA_HOME/bin/java -version输出必须为类似openjdk version 11.0.20 2023-07-18 OpenJDK Runtime Environment Temurin-11.0.208 (build 11.0.208) OpenJDK 64-Bit Server VM Temurin-11.0.208 (build 11.0.208, mixed mode)注意JAVA_HOME不能指向 JRE 目录如/usr/lib/jvm/java-11-openjdk-amd64/jre必须指向 JDK 根目录如/usr/lib/jvm/java-11-openjdk-amd64。否则kieserver.sh会因找不到tools.jar虽 JDK 11 已移除但脚本逻辑仍校验而静默失败。2.3 Maven 3.6 与本地仓库一致性sample 编译失败的元凶samples/下的 demo 工程如loan-validation是 Maven 项目其pom.xml中drools.version固定为7.48.0.Final且依赖org.kie:kie-maven-plugin:7.48.0.Final。这个插件负责在编译时将.drl规则文件编译为KieModule。如果本地 Maven 仓库默认~/.m2/repository中存在旧版kie-maven-plugin如 7.45.0Maven 可能错误复用导致编译生成的KieModule元数据不兼容 7.48 Server。解决方案强制清理并重装# 删除本地仓库中所有 drools/kie 相关缓存避免版本污染 rm -rf ~/.m2/repository/org/drools rm -rf ~/.m2/repository/org/kie # 清理 Maven 自身插件缓存关键 rm -rf ~/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin rm -rf ~/.m2/repository/org/apache/maven/plugins/maven-surefire-plugin # 验证 Maven 版本必须 3.6.0 mvn -v # 输出应包含Apache Maven 3.6.3 或更高版本常见做法是在samples/loan-validation目录下执行mvn clean install -DskipTests观察日志中是否出现Compiling DRL files using kie-maven-plugin。若卡在Downloading from central: https://repo.maven.apache.org/maven2/org/kie/kie-maven-plugin/7.48.0.Final/kie-maven-plugin-7.48.0.Final.pom说明网络或仓库配置有问题需检查~/.m2/settings.xml中的 mirror 或 proxy 设置注意此处不涉及任何代理工具仅指企业内网 Nexus 配置。3. KIE Server 独立部署从 WAR 包到可调用的 REST 接口KIE Server 是 Drools 的核心执行引擎提供 REST/Java API 让外部系统触发规则计算。drools-distribution-7.48.0.Final.zip提供了两种部署方式嵌入式 WildFly推荐新手和外置 WildFly推荐生产。我们以嵌入式方式为例因为它完全由 ZIP 包内脚本控制路径、端口、内存参数全部固化避免外置环境带来的变量干扰。3.1 启动嵌入式 KIE Server修改standalone.xml是必经之路进入$DROOLS_HOME/kie-server/standalone/configuration/打开standalone.xml。这是 WildFly 的主配置文件KIE Server 的行为全由它定义。你需要修改三处关键节点修改 1绑定地址与端口避免端口冲突!-- 找到 interfaces 节点确保 management 和 public 接口绑定到 0.0.0.0 -- interface namemanagement inet-address value0.0.0.0/ /interface interface namepublic inet-address value0.0.0.0/ /interface !-- 找到 socket-binding-group修改 http 端口默认 8080若被占用可改为 8180 -- socket-binding namehttp port${jboss.http.port:8180}/ socket-binding namehttps port${jboss.https.port:8443}/ socket-binding nameajp port${jboss.ajp.port:8009}/ socket-binding namemanagement-http port${jboss.management.http.port:9990}/修改 2配置 KIE Server 安全域启用 Basic Auth!-- 在 security-realms 节点内添加 KIE Server 专用 realm -- security-realm nameApplicationRealm authentication local default-user$local skip-group-loadingtrue/ properties pathapplication-users.properties relative-tojboss.server.config.dir/ /authentication authorization properties pathapplication-roles.properties relative-tojboss.server.config.dir/ /authorization /security-realm逻辑说明Drools 7.48 默认启用 Basic 认证application-users.properties存放用户名密码明文 Base64application-roles.properties定义用户角色如kie-serverkie-server,rest-all。这是为了防止未授权访问规则服务生产环境绝不可关闭。修改 3设置 JVM 内存与 GC 参数避免 OOM!-- 找到 jvm 节点通常在 server 根节点下添加或修改 -- jvm namedefault heap size1024m max-size2048m/ permgen size256m max-size512m/ jvm-options option value-XX:UseG1GC/ option value-XX:MaxGCPauseMillis200/ option value-Djava.net.preferIPv4Stacktrue/ option value-Djboss.modules.system.pkgsorg.jboss.byteman/ /jvm-options /jvm参数说明heap max-size2048m是底线KIE Server 加载多个 KieContainer 时内存消耗极大UseG1GC是 JDK 11 推荐的垃圾收集器preferIPv4Stack解决 Linux 下 IPv6 DNS 解析超时问题。3.2 启动与日志诊断kieserver.sh脚本的隐藏逻辑执行启动命令前确保$DROOLS_HOME已导出为环境变量export DROOLS_HOME/path/to/drools-distribution-7.48.0.Final $DROOLS_HOME/kie-server/bin/kieserver.sh start该脚本实际执行流程为检查JAVA_HOME是否有效否则退出设置JBOSS_HOME$DROOLS_HOME/kie-server调用$JBOSS_HOME/bin/standalone.sh -c standalone.xml -b 0.0.0.0 -bmanagement 0.0.0.0将日志输出重定向到$JBOSS_HOME/standalone/log/server.log关键日志判断点打开server.log搜索INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 18.0.1.Final (WildFly Core 10.0.3.Final)→ WildFly 启动成功INFO [org.kie.server.remote.rest.KieServerRestImpl] (default task-1) KieServer is up and running→ KIE Server 初始化完成INFO [org.kie.server.services.impl.KieServerImpl] (default task-1) Server default-kieserver started successfully→ 默认容器启动成功注意首次启动会自动创建kie-server用户密码为kieserver1!并写入application-users.properties。该密码可在server.log中搜索Added user找到务必首次启动后立即修改。3.3 验证 REST API 可用性curl 是最可靠的探针KIE Server 启动后用 curl 测试基础健康接口# 1. 检查服务器状态无需认证 curl -X GET http://localhost:8180/kie-server/services/rest/server # 2. 获取可用容器列表需 Basic Auth curl -X GET http://localhost:8180/kie-server/services/rest/server/containers \ -H Accept: application/json \ -u kieserver:kieserver1! # 3. 创建一个空容器测试部署能力 curl -X POST http://localhost:8180/kie-server/services/rest/server/containers/mycontainer \ -H Content-Type: application/json \ -d { container-id : mycontainer, release-id : { group-id : org.acme, artifact-id : test, version : 1.0.0 } } \ -u kieserver:kieserver1!预期响应步骤 1 返回{type:SUCCESS,msg:Kie Server Info}步骤 2 返回{type:SUCCESS,result:{kie-containers:[]}}步骤 3 返回{type:SUCCESS,msg:Container mycontainer successfully created with release id org.acme:test:1.0.0}。若返回 401检查用户名密码若返回 404确认 WAR 包是否正确部署$DROOLS_HOME/kie-server/standalone/deployments/kie-server.war.deployed文件存在。4. Workbench 图形化控制台部署规则开发者的 IDE 替代方案Workbench现称 Business Central是 Drools 的 Web IDE提供规则编辑、版本管理、KIE Server 集成、流程建模等能力。它比纯 REST API 更适合规则分析师和业务人员协作。drools-distribution-7.48.0.Final.zip中的business-central.war是开箱即用的但需注意其与 KIE Server 的双向集成配置。4.1 部署 Workbench 到独立 WildFly 实例避免端口与内存冲突Workbench 和 KIE Server不能共用同一个 WildFly 实例。原因有二一是两者 WAR 包都依赖大量同名库如jbpm-workitems-7.48.0.Final.jar类加载冲突二是 Workbench 内置 H2 数据库与 KIE Server 的 Infinispan 缓存争抢线程资源。因此必须为 Workbench 单独准备一个 WildFly。操作步骤下载 WildFly 26.1.0.Final与 Drools 7.48 兼容性最佳wget https://github.com/wildfly/wildfly/releases/download/26.1.0.Final/wildfly-26.1.0.Final.zip解压到$WILDFLY_WORKBENCH复制$DROOLS_HOME/business-central/business-central.war到$WILDFLY_WORKBENCH/standalone/deployments/修改$WILDFLY_WORKBENCH/standalone/configuration/standalone.xmlsocket-binding namehttp port8080/KIE Server 用 8180Workbench 用 8080jvm heap size2048m max-size4096m/Workbench 内存需求更高4.2 配置 Workbench 连接 KIE Serverstandalone.xml中的kie-server子系统Workbench 需要知道 KIE Server 的地址才能推送规则包。在$WILDFLY_WORKBENCH/standalone/configuration/standalone.xml中找到subsystem xmlnsurn:jboss:domain:ee:4.0节点在其内部添加subsystem xmlnsurn:jboss:domain:kie-server:2.0 configuration property nameorg.kie.server.location valuehttp://localhost:8180/kie-server/services/rest/server/ property nameorg.kie.server.controller valuehttp://localhost:8080/business-central/rest/controller/ property nameorg.kie.server.controller.user valueadmin/ property nameorg.kie.server.controller.pwd valueadmin/ property nameorg.kie.server.id valueworkbench-kieserver/ /configuration /subsystem逻辑说明org.kie.server.location是 KIE Server 的 REST 地址org.kie.server.controller是 Workbench 自身的 Controller 地址用于接收 KIE Server 的心跳admin/admin是 Workbench 的默认管理员账号首次启动后需修改。4.3 启动 Workbench 并完成首次登录初始化数据库与用户启动 Workbench$WILDFLY_WORKBENCH/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0首次启动会自动初始化 H2 数据库并创建默认用户URLhttp://localhost:8080/business-central用户名admin密码admin登录后进入Admin Perspective → Servers点击Add Server填写Server IDmy-kieserverLocationhttp://localhost:8180/kie-server/services/rest/serverUserkieserverPasswordkieserver1!点击 SaveWorkbench 会尝试连接 KIE Server 并拉取容器列表。若显示Connected说明双向集成成功。避坑若页面提示Connection failed检查server.log中是否有Failed to connect to controller。常见原因是 KIE Server 的standalone.xml中未开启 Controller 模式需在subsystem xmlnsurn:jboss:domain:kie-server:2.0下添加controller enabledtrue/。5. 常见问题排查那些让你重启三次仍失败的“经典翻车现场”安装 Drools 7.48.0.Final 最耗时间的环节往往不是配置本身而是某些看似无关的细节引发的连锁故障。以下是我在某高校规则引擎教学平台部署中记录的 5 条血泪经验每一条都对应一个真实报错和可复现的解决路径。5.1 现象kieserver.sh start后进程秒退server.log为空原因kieserver.sh脚本中JBOSS_HOME路径拼接错误或$DROOLS_HOME末尾带/导致路径重复如$DROOLS_HOME/opt/drools/脚本内写JBOSS_HOME$DROOLS_HOME/kie-server最终变成/opt/drools//kie-server。Linux 下双斜杠会被忽略但某些 Shell 会报错退出。解决在kieserver.sh开头添加调试语句echo JBOSS_HOME$JBOSS_HOME确认路径正确或手动执行sh -x $DROOLS_HOME/kie-server/bin/kieserver.sh start查看实际执行命令。5.2 现象Workbench 登录后Projects 页面空白Console 报GET http://localhost:8080/business-central/rest/project 404原因WildFly 26 默认禁用了undertow的servlet子系统中的default-host导致business-central.war的 Servlet 映射失效。解决在$WILDFLY_WORKBENCH/standalone/configuration/standalone.xml中找到subsystem xmlnsurn:jboss:domain:undertow:12.0确保host namedefault-host ...节点存在且location name/ handlerwelcome-content/未被注释。5.3 现象mvn clean install编译samples/loan-validation时报错Could not resolve dependencies for project org.drools:loan-validation:jar:7.48.0.Final: Could not find artifact org.kie:kie-maven-plugin:jar:7.48.0.Final原因Maven 本地仓库中org/kie/kie-maven-plugin/7.48.0.Final/目录下只有kie-maven-plugin-7.48.0.Final.pom缺少jar文件。这是因为kie-maven-plugin是 Maven 插件其jar文件需从maven-metadata.xml中的plugins仓库下载而非central。解决在~/.m2/settings.xml的profiles中添加profile idkie-plugins/id repositories repository idjboss-public-repository-group/id nameJBoss Public Repository Group/name urlhttps://repository.jboss.org/nexus/content/groups/public//url releasesenabledtrue/enabled/releases snapshotsenabledfalse/enabled/snapshots /repository /repositories /profile然后执行mvn clean install -Pkie-plugins。5.4 现象KIE Server 启动后调用POST /containers/{id}创建容器返回500 Internal Server Error日志中出现java.lang.NoClassDefFoundError: org/infinispan/manager/EmbeddedCacheManager原因kie-server.war依赖的infinispan-embedded-10.1.8.Final.jar与 WildFly 26 自带的infinispan-core-12.1.7.Final.jar版本冲突类加载器优先加载了旧版。解决在$DROOLS_HOME/kie-server/standalone/deployments/kie-server.war/WEB-INF/jboss-deployment-structure.xml中添加exclusions排除 WildFly 提供的冲突模块jboss-deployment-structure deployment exclusions module nameorg.infinispan / module nameorg.infinispan.commons / /exclusions /deployment /jboss-deployment-structure5.5 现象Workbench 中新建规则项目保存后提示Repository not foundGit 仓库未初始化原因Workbench 默认使用内置 Gitorg.uberfire.java.nio.fs.jgit.JGitFileSystemProvider但首次启动时未生成~/.business-central/git/目录或该目录权限不足如 root 创建当前用户无写入权。解决停止 Workbench执行mkdir -p ~/.business-central/git chown $USER:$USER ~/.business-central/git再启动。6. 验证环境跑通用loan-validation示例走通“编写-编译-部署-执行”全链路装完所有组件最怕的就是“看起来都绿了但真写条规则就挂”。我习惯用samples/loan-validation这个官方示例做终极验证——它结构清晰单个.drl文件 Java Fact 类不依赖外部 DB且规则逻辑简单根据收入、信用分决定贷款额度能快速暴露环境链路上的任一断点。下面带你从零开始走一遍完整的规则生命周期。6.1 编译并安装示例工程生成可部署的 KJAR进入$DROOLS_HOME/samples/loan-validation目录执行mvn clean install -DskipTests成功后会在target/下生成loan-validation-7.48.0.Final-kjar.jar注意后缀是kjar不是jar。这是 KIE Server 可识别的特殊格式内含META-INF/kmodule.xml和编译后的规则字节码。关键检查点打开target/loan-validation-7.48.0.Final-kjar.jar用jar -tf查看内容必须包含META-INF/kmodule.xml定义 KieBase/KieSessionorg/drools/examples/loanvalidation/LoanApplication.classorg/drools/examples/loanvalidation/LoanApproval.classsrc/main/resources/org/drools/examples/loanvalidation/LoanValidation.drl源规则文件若缺失kmodule.xml说明kie-maven-plugin未生效需回看第 5.3 条排查。6.2 部署 KJAR 到 KIE Server两种方式任选其一方式一通过 REST API推荐自动化友好curl -X PUT http://localhost:8180/kie-server/services/rest/server/containers/loan-validation \ -H Content-Type: application/json \ -d { container-id : loan-validation, release-id : { group-id : org.drools, artifact-id : loan-validation, version : 7.48.0.Final }, resolved-release-id : { group-id : org.drools, artifact-id : loan-validation, version : 7.48.0.Final } } \ -u kieserver:kieserver1!方式二通过 Workbench UI适合调试登录 Workbench → Authoring → Project Authoring点击右上角Project → Import Project选择本地target/loan-validation-7.48.0.Final-kjar.jar导入后点击Deploy按钮选择loan-validation容器点击OK验证部署成功访问http://localhost:8180/kie-server/services/rest/server/containers/loan-validation返回{type:SUCCESS,result:{container-id:loan-validation,...}}即可。6.3 构造 Fact 对象并执行规则用 curl 模拟真实业务请求loan-validation规则逻辑是若income 50000 creditScore 700则approval.setApproved(true)approval.setAmount(10000)否则approval.setApproved(false)构造 JSON 请求体{ lookup: loan-validation, commands: [ { insert: { object: { org.drools.examples.loanvalidation.LoanApplication: { income: 60000, creditScore: 750 } }, out-identifier: application } }, { insert: { object: { org.drools.examples.loanvalidation.LoanApproval: { approved: false, amount: 0 } }, out-identifier: approval } }, { fire-all-rules: {} } ] }发送执行请求curl -X POST http://localhost:8180/kie-server/services/rest/server/containers/loan-validation \ -H Content-Type: application/json \ -d request.json \ -u kieserver:kieserver1!预期响应execution-results:{results:[{value:{org.drools.examples.loanvalidation.LoanApproval:{approved:true,amount:10000}}}]}若approved:false检查income或creditScore是否低于阈值若返回400 Bad Request检查 JSON 格式或out-identifier是否拼写错误。6.4 进阶验证修改规则并热更新不重启服务这才是 Drools 的核心价值。在 Workbench 中进入loan-validation项目 →src/main/resources/org/drools/examples/loanvalidation/LoanValidation.drl将income 50000改为income 40000保存点击Build Deploy注意不是 Deploy是 Build Deploy再次用 curl 发送相同请求传入income:45000, creditScore:750应返回approved:true技术原理Workbench 的 Build Deploy 会触发kie-maven-plugin重新编译.drl生成新版本 KJAR如7.48.0.Final-2并通知 KIE Server 加载新容器。整个过程无需重启 WildFly规则变更秒级生效。从那以后我每次搭建 Drools 环境都强制走一遍loan-validation全链路从mvn install生成 KJAR到 REST 部署再到 curl 执行最后热更新验证。这 4 步像一道过滤网能筛掉 90% 的配置疏漏——JDK 版本不对、Maven 插件失效、KIE Server 容器未注册、Workbench 与 Server 连接中断全在这一串命令里暴露无遗。它不炫技但足够诚实。希望帮到你。本文还有配套的精品资源点击获取 SEO 优化官网定制响应式建站教育培训建站