#drools #rules #kie
#drools #Правила #kie
Вопрос:
Я новичок в drools. Я создал следующий объект:
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 пуст, и я не вижу, что не так. Пожалуйста, не могли бы вы мне помочь.
Большое вам спасибо.
Ответ №1:
Ваше правило срабатывает только в том случае, если возраст заявителя превышает 30 лет. Ваше входное значение включает возраст 28 лет.
Комментарии:
1. Большое вам спасибо за ваш ответ. Я изменил значение на 31. Все тот же результат, => null . Итак, ничего не изменилось.
Ответ №2:
Я смог решить проблему. Это была опечатка. Вместо «результатов» мне пришлось написать «результат». Спасибо