Drools编译器显示规则已定义的错误,从7.8.0.Final

时间:2018-11-21 10:13:03

标签: drools

我们从3.0.6开始一直使用Drools,至今已有7.3.0.Final。

我们有一个Maven模块,其中的kmodule包含不同包中的大约300个不同的kieSessions。

直到7.7.0.Final,我们的rules模块可以正常编译,即,“ mvn clean package”可以生成Drools jar,而不会出现任何问题。 但是,当我将POM中的Drools版本升级到7.8.0.Final时,会收到许多有关已定义规则的错误。

我们确实有很多包含相同规则名称的规则文件,但是它们都位于不同的程序包中,因此位于不同的kieSessions中。直到7.7.0.Final都可以正常工作。

在7.8.0.Final发行说明中找不到任何提示,说明了为什么没有编译器开始抱怨重复的规则名称。

此外,使用最新版本7.14.0.Final会显示相同的错误:

[ERROR] Failed to execute goal org.kie:kie-maven-plugin:7.8.0.Final:build (default-build) on project myproject: Execution default-build of goal org.kie:kie-maven-plugin:7.8.0.Final:build failed: Unable to get KieModule, Errors Existed: Error Messages:
[ERROR] Message [id=1, kieBase=defaultKieBase, level=ERROR, path=mypath/my-rules-file.drl, line=23, column=0
[ERROR]    text=Duplicate rule name: MyRuleName]

此错误消息中看起来很奇怪的是defaultKieBase。

此会话的kmodule定义如下:

<kbase name="my-rules-base"
           packages="my.package">
    <ksession name="my-rules-session" type="stateless"/>
</kbase>

1 个答案:

答案 0 :(得分:1)

好吧,看来是从7.8.0.Final开始,Drools编译器确实考虑了DRL文件中的软件包名称,因此您需要确保使用正确的软件包名称。