Java 从drools 5(5.5.0.Final)升级到drools 6的过程

Java 从drools 5(5.5.0.Final)升级到drools 6的过程,java,upgrade,drools,Java,Upgrade,Drools,我们想从drools 5升级到6,但正在尝试首先评估这将涉及到什么样的时间投资。我花了很多时间梳理网络和文档,但是我找不到关于将drools 5实现更新为drools 6的最低要求步骤的解释。更换图书馆不可能是一件简单的事情,因为两者之间的差异似乎太明显了 是否有人知道有足够的文档说明了升级过程,以便我们能够评估所需的时间投资,并最终使用文档执行更新?文档部分解释了一些主要差异 Drools 5和6之间的主要区别是: PHREAK–新模式匹配算法(不保证向后兼容) 知识API被KIE API取

我们想从drools 5升级到6,但正在尝试首先评估这将涉及到什么样的时间投资。我花了很多时间梳理网络和文档,但是我找不到关于将drools 5实现更新为drools 6的最低要求步骤的解释。更换图书馆不可能是一件简单的事情,因为两者之间的差异似乎太明显了

是否有人知道有足够的文档说明了升级过程,以便我们能够评估所需的时间投资,并最终使用文档执行更新?

文档部分解释了一些主要差异

Drools 5和6之间的主要区别是:

  • PHREAK–新模式匹配算法(不保证向后兼容)
  • 知识API被KIE API取代
  • 与CDI集成
  • 符合Maven约定的项目
因此,您需要:

  • 重新构造项目,使其遵循Maven约定,并在kmodule.xml文件中有一个资源文件夹
  • 在kmodule.xml中指定Drool资源
  • 更改API调用以使用KIE API
  • 从理论上讲,即使使用新的PHREAK算法,您的规则也应该像以前一样运行,但我曾经问Mark Proctor它是否保证与Rete向后兼容,他说不

  • 不是一个完整的答案,但是。。。在您可能提前确定的任何计划工作的基础上,做好以下准备:

    • 旧的实现留在代码中可能是为了兼容性 (引起混乱)
    • 6.0.1和6.1.0之间的主要差异
    • 有些规则可能会被打破(特别是当您的系统中集成了bpmn时) (项目)

    可以使用Knowledge API Legacy5适配器,使API调用保持不变

    在Mika'il提供的链接中,您可以有效地找到一些显示5.x分支和6.x分支之间主要差异的信息

    例如,知识API已经被KIE API所取代。因此,不要忘记在定义DRL规则中导入函数的Java类中更改RuleContext类的导入包。在5.x中,RuleContext类来自org.drools.runtime.rule包,在6.x中来自org.kie.api.runtime.rule包

    如果您忘记了这样做,那么在编译DRL(在运行时)之前,一切似乎都很好。在规则编译时,规则编译器将无法在方法的签名和DRL文件中声明的方法之间进行匹配。编译器错误消息特别难以理解,例如: YourClass类型中的方法警告(RuleContext,Object)不适用于参数(RuleContext,Account)

    乍一看,我们可能认为类帐户不是从对象继承的。当然,这是荒谬的。事实上,问题在于第一个参数不是来自Java方法和DRL导入函数中的同一个包


    在找到之前我已经浪费了很多时间。有时我们看不到最明显的事实。但是如果编译器给我一条更好的消息,我会有所帮助……

    你能参考一下你所知道的关于这一点的任何文档吗?她可能指的是:文档链接不再可用。。。它返回404,但答案可能对文档中的详细信息有很好的总结