Jboss drools 抛出错误无法分析布尔变量的表达式
Jboss drools throwing error Unable to Analyse Expression for boolean variable
我有一个非常简单的测试用例来奖励第一次注册的玩家。当我 运行 我的测试用例出错时。
Message [id=1, kieBase=defaultKieBase, level=ERROR, path=player.drl, line=10, column=0
text=Unable to Analyse Expression isNew == true:
[Error: no such identifier: isNew]
[Near : {... isNew == true ....}]
^
[Line: 10, Column: 8]]
我检查了模型 class 是否正确声明了变量并且引用了 .drl 文件。
Player.drl
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
型号Class
package com.xyz.model.business.objects;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder(toBuilder = true)
public class Player {
private String userId;
private String name;
private int age;
private boolean isNew;
}
您应该为 bean/模型属性实现 getters。由于 new
是 Java 中的保留字,我会用 new_
替换它。因为 属性 类型是 boolean
getter 名称是 isNew_
而不是 getNew_
.
规则
将Player(isNew == true)
替换为Player(new_ == true)
。
型号
替换
private boolean isNew;
和
private boolean new_;
public boolean isNew_() {
return new_;
}
我看到 lombok 正在生成方法,布尔方法如下所示
public boolean isNew() {
return isNew;
}
public void setNew(boolean aNew) {
isNew = aNew;
}
但是当我明确添加 get/set 时,流口水就明白了。
getXXX() & setXXX()
所以不是自动生成的。我明确地为布尔值和 voila
设置了 get & set
public boolean getIsNew() {
return isNew;
}
public void setNew(boolean aNew) {
isNew = aNew;
}
我有一个非常简单的测试用例来奖励第一次注册的玩家。当我 运行 我的测试用例出错时。
Message [id=1, kieBase=defaultKieBase, level=ERROR, path=player.drl, line=10, column=0
text=Unable to Analyse Expression isNew == true:
[Error: no such identifier: isNew]
[Near : {... isNew == true ....}]
^ [Line: 10, Column: 8]]
我检查了模型 class 是否正确声明了变量并且引用了 .drl 文件。
Player.drl
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
型号Class
package com.xyz.model.business.objects;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder(toBuilder = true)
public class Player {
private String userId;
private String name;
private int age;
private boolean isNew;
}
您应该为 bean/模型属性实现 getters。由于 new
是 Java 中的保留字,我会用 new_
替换它。因为 属性 类型是 boolean
getter 名称是 isNew_
而不是 getNew_
.
规则
将Player(isNew == true)
替换为Player(new_ == true)
。
型号
替换
private boolean isNew;
和
private boolean new_;
public boolean isNew_() {
return new_;
}
我看到 lombok 正在生成方法,布尔方法如下所示
public boolean isNew() {
return isNew;
}
public void setNew(boolean aNew) {
isNew = aNew;
}
但是当我明确添加 get/set 时,流口水就明白了。
getXXX() & setXXX()
所以不是自动生成的。我明确地为布尔值和 voila
设置了 get & set public boolean getIsNew() {
return isNew;
}
public void setNew(boolean aNew) {
isNew = aNew;
}