首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从drools 5迁移到drools 7?

如何从drools 5迁移到drools 7?
EN

Stack Overflow用户
提问于 2022-03-07 20:52:26
回答 1查看 308关注 0票数 0

有人知道从drools 5迁移到drools 7的工具或某种形式的文档吗?在这方面似乎没有一条明确的前进道路。

EN

回答 1

Stack Overflow用户

发布于 2022-03-08 14:39:47

你没有。

我将一个应用程序从Drools 5.0.1升级到Drools 7.22 (最近一次)。当我完成的时候,它实际上是一次重写。即使是5.x到6.x也是一个非常重要的升级。

我遵循的基本步骤是:

  1. 更新规则本身以遵循现代语法。Drools 5要宽松得多,当时它允许的一些事情现在已经不允许了。例如,单行注释不能再以#开头.我关注的其他事情是,当我从对象中提取事物时,要确保它们被正确地输入(Drools 5在那里令人惊讶地允许;我有规则声明所有类型都是完全错误的,而Drools 5只是.)处理。)

当我自己这样做时,我更新了我们的每个DRL以遵循新的语法,然后用我构建的一个简单的Drools 7工具单独检查它们,它只是加载规则(确保它们编译),并向它们抛出数据。我还使用了具有Drools语法/代码hilighting支持的IntelliJ IDEA,并且大部分时间都很擅长识别语法错误;因此,基本上每个修改后的文件的目标都是没有任何红色的下划线,表明有问题。

  1. 编写单元测试。我用单元测试或行为测试(Cucumber)覆盖了所有现有的规则,这样我就可以确定,在升级后,所有的东西仍然像升级前一样工作。这也为我赢得了与管理层相处的时间,因为他们喜欢将“代码覆盖率”作为衡量标准。

  1. 替换了库和部署逻辑。这将非常依赖于您如何在应用程序中设置它,但至少在我的应用程序中,我们已经将所有规则管理代码抽象成一个单独的依赖项,所以理论上我可以在一个地方更新它。

在Drools 5中,您的规则的文件夹组织非常随意;现在它需要匹配您的包结构。(例如,如果在rules/foo/bar中有什么内容,则需要在DRL中将包声明为rules.foo.bar。)还需要更新kmodule xml,以描述所有规则的位置。我建议使用kmodule xml,因为它使加载规则变得愚蠢--没有手动设置文件系统之类的。。

  1. 运行单元测试。如果他们中的任何一个失败了,回到它正在行使的规则,找出它的问题所在。

  1. 宣称胜利。并且100%地测试你的规则。)

这一切只花了我9个月的时间,但我也有大约4万条规则需要(有效地)重写。(我也有规律的工作要做;这不是一个全职的、精力充沛的工作。)

(在开始之前,使用Drools 7来支持一个玩具应用程序是很有用的,这样您就可以了解新的类和语法以及规则是如何加载的。它有很多相似之处,比如KieBase而不是RuleBase,但其中有些是完全不同的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71387118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档