Java Jboss drools抛出错误无法分析布尔变量的表达式
我有一个非常简单的测试用例来奖励玩家,如果他第一次注册的话。当我运行我的测试用例时,得到一个错误 消息[id=1,kieBase=defaultKieBase,level=ERROR,path=player.drl,line=10,column=0Java 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 模型
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