Java 将对象传递给DROOLS

Java 将对象传递给DROOLS,java,drools,Java,Drools,我不太会流口水。 我正在与Activiti Explorer合作,我需要流口水来做决策。我已经创建了该类的实例对象,并添加了从API获取的数据 LoanApplicant loanApplicant = new LoanApplicant(); loanApplicant.setUserID(obj.getJSONObject("data").getJSONObject("ownership_details").getInt("user_id")); loanApplicant.setAppli

我不太会流口水。 我正在与Activiti Explorer合作,我需要流口水来做决策。我已经创建了该类的实例对象,并添加了从API获取的数据

LoanApplicant loanApplicant = new LoanApplicant();
loanApplicant.setUserID(obj.getJSONObject("data").getJSONObject("ownership_details").getInt("user_id"));
loanApplicant.setApplicantName(obj.getJSONObject("data").getJSONObject("ownership_details").getString("name"));
类似地,我在类对象中设置了几个字段,然后将其设置为Java委托变量arg0到Activiti memory

arg0.setVariable("loanApplication", loanApplicant);
类似地,由于还需要DROOLS决策输出,我创建了一个输出java文件,记录其决策

输出java文件:RulesOutput.java:-

private String testValue = null;
public String getTestValue(){
    return this.getTestValue();
}
public void setTestValue(String testValue){
    this.testValue = testValue;
}
与loanApplicant类似,我已将该类设置为内存:

arg0.setVariable("RulesOutput", new RulesOutput());
现在,我将这些字段从流程BPMN图传递到Drools任务工作步骤

这是我的DROOLS.drl文件:

import com.LOS.*;
rule "FLS_1"
when
    $loanApplication : loanApplication(age >= 20 && age < 60)
    $rulesOutput : RulesOutput (isApproved == false || isApproved == true)
then
    rulesOutput.setAgeScore(100);
我被困在这里快两天了。欢迎提出任何建议

import com.LOS.*;
如果loanApplication和RulesOutput在com.LOS.approc.dao包中,则必须使用

import com.LOS.approc.dao.*; 
虽然个人进口通常是首选。(谈论风格:你应该遵守惯例,使用大写的第一个字母作为类名

$loanApplication : loanApplication(age >= 20 && age < 60)

如果使用
$rulesOutput
作为绑定变量的名称,则必须坚持使用该名称。
$
是变量(Java)名称的一部分,而不是宏扩展运算符,正如您在尝试
${loanApplication}
${Rules}时所说的那样
建议。

当您收到这些错误时,您是否确定DRL代码正是您发布的代码=类
loanApplication
RulesOutput
的包是什么?为什么
$RulesOutput
RulesOutput
之间有区别?当您忽略
$loanApplicat>时会出现什么错误ion
loanApplication
RulesOutput
在包
com.LOS.approc.dao
中。由于我遇到的错误,我包含了完整的
com.LOS.*
包。如果我理解正确,
$loanApplication
RulesOutput
是存储表达式结果的变量在
之后:
。因此,如果我省略了
$loanApplication
,那么我只是删除了变量,因此错误没有变化。我删除了
$loanApplication
,但仍然是一样的。出于某种原因,
${loanApplication}
${Rules}
我已经通过了流程图,但是没有被解析。您可以尝试导入这个包com.LOS.approc.dao.*谢谢。由于某些原因,导入完整的包不起作用
com.LOS.*
必须单独导入。
$loanApplication : loanApplication(age >= 20 && age < 60)
    $rulesOutput : RulesOutput (isApproved == false || isApproved == true)
then
    rulesOutput.setAgeScore(100); ## missing dollar