Drools 规则返回值 null不触发?

问题描述

我是流口水的新手。我创建了以下对象:

package com.myspace.applicant;

public class Applicant implements java.io.Serializable {

    static final long serialVersionUID = 1L;

    private java.lang.Integer age;
    private java.lang.Boolean approved;
    private java.lang.Double money;
    private java.lang.String name;

    public Applicant() {
    }

    public java.lang.Integer getAge() {
        return this.age;
    }

    public void setAge(java.lang.Integer age) {
        this.age = age;
    }

    public java.lang.Boolean getApproved() {
        return this.approved;
    }

    public void setApproved(java.lang.Boolean approved) {
        this.approved = approved;
    }

    public java.lang.Double getMoney() {
        return this.money;
    }

    public void setMoney(java.lang.Double money) {
        this.money = money;
    }

    public java.lang.String getName() {
        return this.name;
    }

    public void setName(java.lang.String name) {
        this.name = name;
    }

    public Applicant(java.lang.Integer age,java.lang.Boolean approved,java.lang.Double money,java.lang.String name) {
        this.age = age;
        this.approved = approved;
        this.money = money;
        this.name = name;
    }

}

一个包含规则的 *.drl 文件

package com.myspace.applicant;

import com.myspace.applicant.Applicant;

no-loop

rule "approve applicants"
when
    $a: Applicant(age > 30,money > 1000,approved == false)
then
    modify($a) {
        setApproved(true);
    }
end

在 Postman 中,我尝试使用以下正文调用规则:

{
    "lookup" : null,"commands" : [ {
        "insert" : {
            "objects" : {
                "Applicant": {
                    "age": 28,"approved": false,"money": 10000,"name": "boehlen"
                }
            },"disconnected" : false,"out-identifier": "Applicant","return-object" : true,"entry-point" : "DEFAULT"
        }
    },{
        "fire-all-rules" : {}
    } ]
}

我得到了以下答案:

{
  "type" : "SUCCESS","msg" : "Container Applicant_1.0.0-SNAPSHOT successfully called.","result" : {
    "execution-results" : {
      "results" : [ {
        "value" : null,"key" : "Applicant"
      } ],"facts" : [ {
        "value" : null,"key" : "Applicant"
      } ]
    }
  }
}

问题是,我的值是 null 而不是我期望作为响应的对象。 server.log 是空的,我看不出有什么问题。请你帮帮我。

非常感谢。

解决方法

您的规则仅在申请人年龄大于 30 岁时触发。您的输入值包括 28 岁。

,

我能够解决问题。这是一个错字。我不得不写“结果”而不是“结果”。谢谢了

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...