Java Jboss drools抛出错误无法分析布尔变量的表达式

Java Jboss drools抛出错误无法分析布尔变量的表达式,java,drools,Java,Drools,我有一个非常简单的测试用例来奖励玩家,如果他第一次注册的话。当我运行我的测试用例时,得到一个错误 消息[id=1,kieBase=defaultKieBase,level=ERROR,path=player.drl,line=10,column=0 text=无法分析表达式isNew==true: [错误:没有这样的标识符:isNew] [近:{…isNew==true….}] ^ [第10行第8列]] 我检查了模型类是否正确声明了变量,并且该变量引用了.drl文件 Player.drl 模型

我有一个非常简单的测试用例来奖励玩家,如果他第一次注册的话。当我运行我的测试用例时,得到一个错误

消息[id=1,kieBase=defaultKieBase,level=ERROR,path=player.drl,line=10,column=0
text=无法分析表达式isNew==true:
[错误:没有这样的标识符:isNew]
[近:{…isNew==true….}]
^ [第10行第8列]]

我检查了模型类是否正确声明了变量,并且该变量引用了.drl文件

Player.drl

模型类

包com.xyz.model.business.objects;
进口龙目造船厂;
进口龙目吸气剂;
进口龙目织机;
@吸气剂
@塞特
@生成器(toBuilder=true)
公共类玩家{
私有字符串用户标识;
私有字符串名称;
私人互联网;
私有布尔值是新的;
}

您应该为bean/model属性实现。由于
new
在Java中是保留字,所以我将用
new\ucode>替换它。因为属性类型是
boolean
getter名称是
isNew\u
而不是
getNew\u

规则

Player(isNew==true)
替换为
Player(new==true)

型号

替换

私有布尔值是新的;

private boolean new;
公共布尔值是新的{
返回新的文件;
}

您应该为bean/model属性实现。由于
new
在Java中是保留字,所以我将用
new\ucode>替换它。因为属性类型是
boolean
getter名称是
isNew\u
而不是
getNew\u

规则

Player(isNew==true)
替换为
Player(new==true)

型号

替换

私有布尔值是新的;

private boolean new;
公共布尔值是新的{
返回新的文件;
}

我看到lombok正在生成方法,布尔方法如下所示

public boolean isNew(){
返回是新的;
}
public void setNew(布尔值重新设置){
新的=新的;
}
但当我明确添加get/set时,drools就明白了

getXXX()和setXXX()

所以不是自动生成的。我将get&set显式地用于布尔和voila

public boolean getIsNew(){
返回是新的;
}
public void setNew(布尔值重新设置){
新的=新的;
}

我看到lombok正在生成方法,布尔方法如下所示

public boolean isNew(){
返回是新的;
}
public void setNew(布尔值重新设置){
新的=新的;
}
但当我明确添加get/set时,drools就明白了

getXXX()和setXXX()

所以不是自动生成的。我将get&set显式地用于布尔和voila

public boolean getIsNew(){
返回是新的;
}
public void setNew(布尔值重新设置){
新的=新的;
}

这是否回答了您的问题@RLD给出的线程没有回答我的问题。正如您所看到的,这是布尔属性的getter/setter的情况。这是否回答了您的问题@RLD给出的线程没有回答我的问题。正如您所看到的,这是布尔属性的getter/setter示例。是的!!!因为“new”是保留的,所以isNew是getter。我认为这是相互矛盾的。所以改成了_new:-)耶!!!因为“new”是保留的,所以isNew是getter。我认为这是相互矛盾的。因此将其更改为_new:-)
import com.xyz.model.business.objects.Player;
import com.xyz.rules.domain.Points;
import java.util.*;

global com.xyz.rules.domain.Points points;
dialect  "mvel"

rule "Reward Point if User registered"
    when
        playerInstance:Player(isNew == true);
    then
        points.setPoints(1000);
end