PackageBuilder.java 在 Drools 6.1.0.final 中不可用

2024-04-14

我是 drools 的新手,目前我们在项目中使用 Drools 5.4.0。 目前我们使用Drools 5.4.0的RuleCompiler.java和PackageBuilder.java类来编译.xls文件并创建ruleSetObject。代码片段如下所示

String drlFromFile = null;
if (Pattern.matches(regexPattern, file.getName())) {
    if (file.getName().contains("csv") || file.getName().contains("CSV")) {
        drlFromFile = RuleCompiler.compileCSV(file);
    } else {
        drlFromFile = RuleCompiler.compileSpreadSheet(file);
    }
    if (drlFromFile == null || drlFromFile.isEmpty()) {
        logger.debug("Unable to Compile Rule Sheet: " + file.getName());
        throw new DroolsParserException("Unable to Compile Rule Sheet: " + file.getName());
    }
    PackageBuilder builder = new PackageBuilder();
    builder.addPackageFromDrl(new StringReader(drlFromFile));
    Package ruleSetObject = builder.getPackage();

    // Registering the compiled drl object in ruleExecutionSetRegistry
    ruleExecutionSetRegistry.registerRuleSetObject(file.getName(), ruleSetObject,
                    getRuleEngineProviderName());
}

现在我们需要升级到Drools 6.1.0.final,但我在那里找不到PackageBuilder.java类。我试图寻找它的替代品,但什么也没得到。

是否引入了任何新类来代替 PackageBuilder.java?有人指导我如何使用该课程吗?


“新”的做事方式是定义一个KieModule。本质上,您创建一个包装 Drools 规则的 Maven 项目,然后将该项目添加为运行时的依赖项。一般来说,这期望您会遵循一定的约定 http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/#d0e461你如何构建你的项目,以便 Drools 可以自己找到你的规则。

但是,您可能(像我一样)发现无需完全重组现有项目即可更轻松地进行迁移。为了实现这一目标,您仍然可以建立一个KieService(新的KnowledgeBase),通过将文件添加到KieFileSystem。这是这样做的一个粗略示例:

KieServices kieServices = KieServices.Factory.get();

KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write(ResourceFactory.newFileResource(resource.getPath()));

KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
if (kieBuilder.getResults().hasMessages(Level.ERROR)) {
    // It didn't build. Do something about it...
}

KieContainer kieContainer = kieServices
        .newKieContainer(kieServices.getRepository().getDefaultReleaseId());

KieSession kieSession = kieContainer.newKieSession();

你已经准备好出发了。如果它有用,我最近的一个演示项目包含对纯 .drl 文件执行此操作的示例 https://github.com/gratiartis/qzr/blob/cf0165b59449b5b6cb08d45fda5148c4dbfff709/qzr-rules/src/main/java/com/sctrcd/qzr/rules/HealthQuizKieConfig.java,据我了解,如果您想将电子表格添加到KieFileSystem而不是 DRL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PackageBuilder.java 在 Drools 6.1.0.final 中不可用 的相关文章

  • 规则引擎Drools使用 第十二篇 Drools 的高级语法之RHS加强

    RHS部分是规则体的重要组成部分 当LHS部分的条件匹配成功后 对应的RHS部分就会触发执行 一般在RHS部分中需要进行业务处理 在RHS部分Drools为我们提供了一个内置对象 名称就是drools 本小节我们来介绍几个drools对象提
  • 规则引擎Drools使用 第一篇 规则引擎认知

    规则引擎有什么用呢 可以在那些实际场景使用呢 思考这样一个问题 申请信用卡 每个人去申请信用卡的时候 都会经过一遍核查 这个核查过程其实就可以当做是根据规则 去校验你的信息是否符合规则 只有符合规则的才可以申请信用卡 还记得以前自己写的那些
  • 规则引擎Drools使用 第十三篇 Drools 编写规则文件的规范

    我们在进行drl类型的规则文件编写时尽量遵循如下规范 所有的规则文件 drl 应统一放在一个规定的文件夹中 如 rules文件夹 书写的每个规则应尽量加上注释 注释要清晰明了 言简意赅 同一类型的对象尽量放在一个规则文件中 如所有Stude
  • 规则引擎Drools使用 第五篇 Drools内置方法

    Drools内置方法 规则文件的RHS部分的主要作用是通过插入 删除或修改工作内存中的Fact数据 来达到控制规则引擎执行的目的 Drools提供了一些方法可以用来操作工作内存中的数据 操作完成后规则引擎会重新进行相关规则的匹配 原来没有匹
  • newKieSession 是线程安全的吗?

    我们在项目中使用了 Drools kieSessions 许多线程可以创建新的 kieSession 有时线程在创建会话时可能会挂起 因此问题是 Firstly kieContainer newKieSession 是线程安全的操作吗 被绞
  • Drools 6 sisu-番石榴与番石榴冲突

    我们最近从 Drools 5 升级到 Drools 6 并遇到了令人不安的冲突问题 We have kie ci导入到项目中 kie ci带来sisu guava sisu guava更改了 google guava 中某些类的可访问性 不
  • 流口水基于时间的限制和“现在”

    我们正在尝试写一个流口水 上面写着 如果事件发生在上周 则执行后果 我们有表示事件发生时间的常规 java 日期对象 但我们不确定如何在流口水的 LHS 中表达我们希望该日期对象在上周发生 重要的是 一周的时间跨度是任意的 它可以随时更改为
  • kie 工作台部署战争不工作(tomcat)

    我已经下载了 kie workbench 并解压kie drools wb distribution wars 6 2 0 Final tomcat7 war 我以前从未使用过 tomcat 但我想使用工作台 但似乎没有一个选项可以让工作台
  • Drools 6.4 KieScanner:如何在 Maven 中创建和添加带有规则的 Jar?

    我是 Drools 和 Maven 的初学者 我面临着使用 KieScanner 加载规则的问题 该项目的目标是能够在永久 KieSession 中动态加载规则 我想知道是否可以使用 KieFileSystem 管理规则 不确定是否可以在不
  • 了解议程组的锁定活动

    我尝试了一个示例来了解锁定活动的工作原理 当我在不使用议程组的情况下触发规则时 一切似乎都很好 但是 当我取消注释下面代码中的议程组并将焦点设置为组 B 组 时 不会触发任何规则 Rule rule Additional Rs 1 tax
  • 流口水查询。它们是如何评估和执行的?

    我正在概念验证应用程序中评估 Drools 6 我要么误解了 Drools 中的查询是如何工作的 要么是我没有正确实现某些功能 有人可以向我解释一下这种行为吗 我有一条规则应该对经过验证的记录起作用 如下所示 rule Patient In
  • 如何在drools中调用Java函数?

    我想从 Utils 类调用 Java 函数 该函数调用 JPA Repository 方法来检索自定义对象 我想从 Drools 决策表中调用这个函数 现在 这个简单的函数给出了空指针异常 我已经为此浪费了几个小时 我在决策表的 导入 部分
  • 在这种情况下我应该使用 Drools 吗?

    我将使用大学的图书馆系统来解释我的用例 学生在图书馆系统中注册并提供个人资料 性别 年龄 院系 以前完成的课程 当前注册的课程 已借阅的书籍等 图书馆系统中的每本书都会根据学生的资料定义一些借阅规则 例如 计算机算法课本只能由当前注册该班级
  • 有没有可以使用 Drools 的 GUI?

    我是流口水的新手 我已经将 Drools 与 jsp 集成了 现在我想知道有没有 Drools 的 GUI 可以运行其应用程序吗 谢谢 Drools Guvnor 是用于管理规则的 Web GUI http docs jboss org d
  • 如何在 Drools 中参数化后时间约束?

    我有一个与以下示例非常相似的规则 rule correlate orders when bo BuyOrderEvent id id ae AckEvent id id this after 0 10s bo then do somethi
  • Scala 中的 Drools Expert 输出对象

    我是 Scala 和 Drools Expert 的新手 需要一些帮助来从 Drools 会话中获取信息 我已经成功设置了一些由 Drools 规则操作的 Scala 类 现在我想创建一个对象来存储一组输出事实 以便在 Drools 外部进
  • 如何使用 JSR94 通过 Drools 加载基于 Excel 的决策表?

    网上有很多关于如何加载 Drools DRL 规则集的示例 但是 我似乎找不到任何有关如何使用 JSR94 API 加载 Excel 格式的决策表的说明或示例 有谁知道如何做到这一点 如果是的话 您能提供一个简单的代码示例吗 下面是我正在使
  • 使用 cron 表达式流口水规则?

    我有一个要求 我只想在工作日触发规则 我有一些规则 如烟雾 温度 运动 您能否建议我如何根据我的要求制定规则 请给我一些示例 除了 cron 之外 还有其他更好的方法来根据时间触发规则吗 您可以在工作日或周末解雇规则 我也遇到过同样的要求
  • PackageBuilder.java 在 Drools 6.1.0.final 中不可用

    我是 drools 的新手 目前我们在项目中使用 Drools 5 4 0 目前我们使用Drools 5 4 0的RuleCompiler java和PackageBuilder java类来编译 xls文件并创建ruleSetObject
  • 持久感知 KieSession 在事务期间不使用悲观锁

    我在用Drools with 春季启动2 3 我已经实现了持久意识KieSession 其中MySQL用于存储会话 我已经成功集成了默认的EntityManagerFactorySpring Boot 与 Drools 的结合 但我的问题是

随机推荐