java - Jboss 流口水抛出错误无法分析 boolean 变量的表达式

标签 java drools

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

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]]

我检查了模型类是否已正确声明变量,并且 .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;
}

最佳答案

我看到lombok正在生成方法,并且 boolean 方法如下所示

public boolean isNew() {
    return isNew;
}

public void setNew(boolean aNew) {
    isNew = aNew;
}

但是当我明确添加 get/set 时,流口水就明白了。

getXXX() & setXXX()

所以不是自动生成的。我明确地为 boolean 值设置了 get 和 set

   public boolean getIsNew() {
        return isNew;
    }

    public void setNew(boolean aNew) {
        isNew = aNew;
    }

关于java - Jboss 流口水抛出错误无法分析 boolean 变量的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430882/

相关文章:

java - 访问被拒绝 ("java.net.SockerPermission" "irc.esper.net" "resolve")

java - 如何使用离线签名和 OCSP 响应创建 PADES

java - 从规则 jess 或 drools(专家系统)返回一个值

java - 无法在 drools 上运行 hello world - KieContainer 未从类路径中选取 dlr 文件

java - 流口水的时间运算符,在时间范围内和另一个 Action 之后发生的 Action

java - 创建可执行的 bash 脚本,而无需用户调用 chmod 命令

java - 有没有办法在不将帐户添加到设备的情况下使用 Google Sign In?

java - 字符串的 Gson 数组到 JsonArray

drools - 使用drools规则引擎时如何表示一个对象为null

java - 流口水规则不触发