Java 将对象传递给DROOLS
我不太会流口水。 我正在与Activiti Explorer合作,我需要流口水来做决策。我已经创建了该类的实例对象,并添加了从API获取的数据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
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