当前位置: 首页 > 知识库问答 >
问题:

Drools规则返回值null(未触发?)

赵立果
2023-03-14

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

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;
    }

}

和a*。包含规则的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"
      } ]
    }
  }
}

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

非常感谢你。

共有2个答案

翟缪文
2023-03-14

我能解决这个问题。这是一个拼写错误。我不得不写“结果”,而不是“结果”。谢谢a

谯阳伯
2023-03-14

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

 类似资料:
  • 我是口水新手,我成功地创建了一个使用创建的规则的工作应用程序。我有一个简单的类,其中包含两个变量和。 我的规则实施为 如果用户为类型或语言插入一些奇怪的值,我有一个返回错误的特定规则。但最重要的是,我想知道是否可以返回插入规则中的所有可能变量的列表:例如和。

  • 我尝试将Drools 7.4.1集成到tomcat中的webapp中。 当我调用以下语句以获取KieService时,我得到。 当从测试方法调用相同的方法时,这是正常的。 有人能帮忙吗?

  • 假设我有一个议程组“daily”,它有两组drools规则集A有规则“default-1”,“default-2”,“default-3”,集B有规则“custom-1”,“custom-2”,“custom-3” 当议程组“daily”变得集中,并且当前事实与自定义模式匹配时,我只希望“custom-1”和/或“custom-2”和/或“custom-3”触发;否则,只有“Default-1”和

  • 这两个在Drools中有什么区别??意味着我们可以根据 从加载的规则库和触发规则创建WorkingMemory,如下所示: vs公司 使用会话(有状态的。无状态)触发规则,如图所示

  • 我对口水很陌生,从基础开始。这是一个设置; > 有一些规则文件 不同文件中的规则属于不同的议程组 所有规则都基于同一事实 在我的单元测试中,我获得了一个特定的“议程组”,设置焦点(

  • 我有一个多用途的传感器,每个传感器发送计步器数据。我有一个基于macAddress的规则文件,触发规则: My User只有一个字段,Steps事件有以下字段: 现在,当我为每个macAddress插入一个事件时,如果在过去一小时内使用该macAddress的用户的步骤数少于50,则规则将触发。因此,如果满足此条件,则该规则将为每个macAddress触发。但我希望规则只能为插入的步骤事件的mac