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


  消息[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_;
}

08-07 06:14