如果玩家第一次注册,我有一个非常简单的测试用例来奖励玩家。当我运行测试用例时出现错误。
消息[id = 1,kieBase = defaultKieBase,级别=错误,路径= player.drl,行= 10,列= 0
text =无法分析表达式isNew == true:
[错误:没有这样的标识符:isNew]
[附近:{... isNew == true ....}]
^
[第10行,第8列]]
我检查了模型类是否正确声明了变量,并将其引用到.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
型号类别
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
,所以获取的名称是isNew_
而不是getNew_
。
规则
将Player(isNew == true)
替换为Player(new_ == true)
。
模型
更换
private boolean isNew;
与
private boolean new_;
public boolean isNew_() {
return new_;
}