【发布时间】:2017-06-20 08:24:43
【问题描述】:
我是新手,已经定义了两个规则:
package com.mgaudin.sandbox.drools.rules;
import com.mgaudin.sandbox.drools.models.Lead;
rule "rule1"
when
l: Object()
then
System.out.println(l.getClass().getCanonicalName());
end
和
package com.mgaudin.sandbox.drools.rules;
import com.mgaudin.sandbox.drools.models.Lead;
rule "rule2"
when
Lead()
then
System.out.println("It's a match !");
end
当我插入一个新的 com.mgaudin.sandbox.drools.models.Lead 事实上,输出如下:
com.mgaudin.sandbox.drools.models.Lead
因此我们可以推断:
- 规则编译正确
- 规则被执行
- 第一条规则与“com.mgaudin.sandbox.drools.models.Lead”类型的事实匹配
那么为什么规则“rule2”不匹配?
谢谢!
【问题讨论】:
-
这是否意味着您似乎有两个 .DRL 文件?都编译成一个 KieBase 吗?如何?你验证过里面有两条规则吗?
-
两者都编译到同一个 KieBase 中(第一条规则只是为了证明我的 drools 运行正常并显示事实类名称)。我尝试使用 KieFileSystem / KieBuilder 或 KnowledgeBuilder 编译我的规则。两者都编译得很好,但产生了相同的结果。此外,为了确保使用了我的 DRL 文件,我尝试使用 eval(true) 修改相同的文件,输出“It's a match!”。
-
如果您的故事中没有隐藏的障碍,那么我会说这是一个错误。做一个完整的例子(最低 Java,DRL),说明 Drools 版本并提出一个 JIRA。 - 如果你编辑你的问题,添加所有这些代码和信息,我会调查它。
标签: drools kie spring-boot-devtools