【问题标题】:Drools rule returns value null (not firing?)Drools 规则返回值 null(不触发?)
【发布时间】:2020-12-21 19:30:29
【问题描述】:

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

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 是空的,我看不出有什么问题。请你帮帮我。

非常感谢。

【问题讨论】:

    标签: drools rules kie


    【解决方案1】:

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

    【讨论】:

    • 非常感谢您的回答。我将值更改为 31。仍然是相同的结果,=> null。所以,什么都没有改变。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 2016-07-21
      • 2015-08-10
      • 2016-06-23
      • 2019-10-08
      相关资源
      最近更新 更多