我们希望从drools 5升级到6,但我们正在尝试首先评估将涉及哪种时间投资。我花了很多时间来梳理网络和文档,但是我无处可以找到关于将drools 5实现更新为drools 6的最低要求步骤的解释。它可能只是一个简单的问题取代图书馆,因为两者之间的差异似乎过于明显。
是否有人了解解释升级过程的文档,以便我们能够评估所需的时间投资并最终使用该文档来执行更新?
答案 0 :(得分:3)
This文件部分解释了一些主要差异。
Drools 5和6之间的主要区别是:
因此您需要:
答案 1 :(得分:0)
不是一个完整的答案,但是......除了您可能提前确定的任何计划工作之外,请做好准备:
答案 2 :(得分:0)
有一个可以使用的知识API Legacy5适配器,因此您可以保持api调用相同。
答案 3 :(得分:0)
在Mika'il提供的链接中,您可以有效地找到一些信息,显示5.x分支和6.x分支之间的主要差异。
例如,Knowledge API已被KIE API取代。因此,不要忘记在定义DRL规则中导入函数的Java类中更改RuleContext类的导入包。在5.x中,RuleContext类来自org.drools.runtime.rule包,而来自org.kie.api.runtime.rule包的6.x.
如果你忘记这样做,在编译你的DRL之前一切都会好起来的(在运行时)。在规则编译时,规则编译器将无法在方法的签名和DRL文件中声明的方法之间进行匹配。编译器错误消息特别难以理解,如: “YourClass类型中的方法警告(RuleContext,Object)不适用于参数(RuleContext,Account)”
乍一看,我们可以认为类Account不会从Object继承。当然,这很荒谬。事实上,问题是第一个参数不是来自Java方法和DRL导入函数的同一个包。
我在找到之前已经失去了很多时间。有时我们看不到最明显的事实。但是来自编译器的更好的信息会帮助我......