流口水条件不匹配

Drool Condition doesn't match

我目前正在写一个关于 Drools 的示例,我正在尝试检查基于小于等于运算符的特定条件。

我的 drools .drl 文件是:

//created on: May 7, 2015
package inlife.rules.controller

//list any import classes here.
import inlife.rules.model.StudentRuleBean;

//declare any global variables here

rule "Check if Student age is below limit"

    when
        //conditions
        o: StudentRuleBean (studentName == "Peter" && age < 5 && age > 18)
    then
        //actions
        o.setStudentEligible("false");

end

rule "Check for Range"

when
        //conditions
        o: StudentRuleBean (studentName == "Peter" && age > 5 && age <= 18)
    then
        //actions
        o.setStudentEligible("true");

end

现在在上面的 .drl 文件中,我正在尝试检查学生姓名是否为 Peter,其年龄是否大于 5 岁且小于 18 岁,是否有资格上学,否则他不是..

但是我的条件没有得到满足。我想我的流口水文件有问题。

下面是我的Java豆Class

public class StudentRuleBean {

    private String studentName;
    private double age;
    private String studentEligible;

    public String getStudentName() {
        return studentName;
    }
    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
    public double getAge() {
        return age;
    }
    public void setAge(double age) {
        this.age = age;
    }
    public String getStudentEligible() {
        return studentEligible;
    }
    public void setStudentEligible(String studentEligible) {
        this.studentEligible = studentEligible;
    }

}

严重卡住..需要这方面的帮助。

期待您的回答。提前致谢。

据我所知,谓词中的所有项目都是逻辑与。 然后您不需要为每个条件键入 &&。 用逗号分隔它们。

        o: StudentRuleBean (studentName == "Peter" , age < 5 && age > 18)

文档说:

尽管 && 和 , 运算符具有相同的语义,但它们的解析优先级不同:&& 运算符在 || 之前操作员。 && 和 ||运算符在 , 运算符之前。请参阅下面的运算符优先级列表。

逗号运算符应该优先用于顶级约束,因为它使约束更易于阅读,并且引擎通常能够更好地优化它们。

复制粘贴自 https://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch05.html#d0e3962(5.8.3.3.4。逗号分隔 AND)

您使用的是哪个版本的 Drools?会不会是这个问题https://issues.jboss.org/browse/JBRULES-3584?