You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drools 4.0.7升级至7.61.0适配Java 11的迁移及代码转换问题

Drools 4.0.7 升级至7.61.0适配方案

迁移参考说明

Drools各版本的迭代变更点可以在官方版本发布说明中查询,你本次遇到的旧API废弃问题是5.x版本之后的架构调整导致的,原RuleBase系列API已被KIE(Knowledge Is Everything)标准化API完全替代,无需额外迁移工具即可完成适配。

旧代码等效替换

新依赖导入

你列出的旧导入类可全部替换为KIE API对应类:

import org.kie.api.KieBase;
import org.kie.api.KieBaseConfiguration;
import org.kie.api.KieServices;
import org.kie.api.conf.EqualityBehaviorOption;
import org.kie.api.definition.KiePackage; // 替代原org.drools.rule.Package
import org.kie.api.definition.type.FactTemplate; // 替代原org.drools.facttemplates.FactTemplate

功能等效代码

原初始化RuleBase的逻辑可改写为如下实现,完全保留原有配置效果:

// 获取KIE服务单例入口
KieServices kieServices = KieServices.Factory.get();
// 初始化KieBase配置
KieBaseConfiguration kieBaseConf = kieServices.newKieBaseConfiguration();
// 等效原setAssertBehaviour(AssertBehaviour.EQUALITY):使用对象equals方法判断事实相等,而非对象身份
kieBaseConf.setOption(EqualityBehaviorOption.EQUALITY);
// 等效原setShadowProxy(false):关闭事实对象的影子代理
kieBaseConf.setProperty("drools.shadowProxy", "false");
// 创建KieBase实例,完全替代原RuleBase的所有功能
KieBase kieBase = kieServices.newKieBase(kieBaseConf);

额外适配注意事项

  • 原有.drl规则文件无需修改即可兼容7.61.0版本,规则包加载可通过KieBase的addKiePackages()方法实现,逻辑与原RuleBase添加Package的方式一致。
  • Java 11环境下需额外引入JAXB相关依赖,避免因Java 11移除原生JAXB模块导致运行报错。

内容的提问来源于stack exchange,提问作者Valsaraj Viswanathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:36:00