Я использую drools (веб-интерфейс kie-wb), и у меня есть процесс bpm, который принимает loanApplication и возвращает loanApplication с обновленными данными (это цель). Но когда я пытаюсь это сделать, меня возвращают.
"Unable to create response: [LoanApplicationReviewer.LoanApplicationReview:21 - Age Knockout:1] -- [LoanApplicationReviewer.LoanApplicationReview:21 - Age Knockout:1] -- null"
Моя модель данных:
public class LoanApplication implements java.io.Serializable {
static final long serialVersionUID = 1L;
private java.lang.Integer id;
private java.lang.Integer age;
private boolean accepted = true;
private java.util.List<java.lang.String> knockoutReasons = new java.util.ArrayList<java.lang.String>();
public LoanApplication() {
}
public java.lang.Integer getId() {
return this.id;
}
public void setId(java.lang.Integer id) {
this.id = id;
}
public java.lang.Integer getAge() {
return this.age;
}
public void setAge(java.lang.Integer age) {
this.age = age;
}
public boolean isAccepted() {
return this.accepted;
}
public void setAccepted(boolean accepted) {
this.accepted = accepted;
}
public java.util.List<java.lang.String> getKnockoutReasons() {
return this.knockoutReasons;
}
public void setKnockoutReasons(
java.util.List<java.lang.String> knockoutReasons) {
this.knockoutReasons = knockoutReasons;
}
public void addKnockoutReason(String knockoutReason) {
if (this.knockoutReasons == null) {
this.knockoutReasons = new java.util.ArrayList<java.lang.String>();
}
this.knockoutReasons.add(knockoutReason);
}
public String toString() {
return "loanApplicationResponse::[accepted=" + this.accepted
+ ",knockoutReasons="
+ this.knockoutReasons.toString() + "]";
}
public LoanApplication(java.lang.Integer id, java.lang.Integer age,
boolean accepted, java.util.List
knockoutReasons) {
this.id = id;
this.age = age;
this.accepted = accepted;
this.knockoutReasons = knockoutReasons;
}
}
и мое правило:
package com.xyz.loanapplicationreviewer;
import com.xyz.loanapplicationreviewer.LoanApplication;
import org.kie.api.runtime.process.WorkflowProcessInstance;
rule 'age less than 30 do not accept'
ruleflow-group 'ageKnockoutGroup'
dialect "mvel"
when
$process : WorkflowProcessInstance();
$loanApp : LoanApplication() from (LoanApplication)$process.getVariable("loanApplication");
eval ($loanApp.getAge() < 30);
then
$loanApp.setAccepted(false);
$loanApp.addKnockoutReason("age under 30");
((WorkflowProcessInstance)kcontext.getKnowledgeRuntime().getProcessInstance($process.getId())).setVariable("loanApplication", $loanApp);
System.out.println("Age less than 30 knockout");
end
Я добавил сценарий ввода на шаге бизнес-правила, чтобы заполнить экземпляр процесса следующим образом:
kcontext.getKnowledgeRuntime().insert(kcontext.getProcessInstance());
Я также заполнил то, что, как я ожидаю, будет моим назначением данных. Похоже, он получает данные, потому что, когда я создаю новый экземпляр и запускаю его из формы, в которой есть данные и выполняет правило, просто из интерфейса остальных, используя swagger, я получаю вышеуказанную ошибку.