RuleUnit+Quarkus示例DRL的/loanApplications与/allAmounts含义咨询
问题解答
/loanApplications与/allAmounts的含义及关联关系
这两个是Drools规则单元(Rule Unit)特性下的OOPath表达式,对应你DRL头部声明的unit LoanUnit;对应类的内置数据源属性:
/loanApplications对应LoanUnit类中类型为DataSource<LoanApplication>的属性,专门用来存储所有传入的贷款申请实例,你代码中导入的org.kie.kogito.queries.LoanApplication就是该数据源存储的对象类型/allAmounts对应LoanUnit类中类型为DataSource<AllAmounts>的属性,专门用来存储贷款总额的统计结果,你代码中导入的org.kie.kogito.queries.AllAmounts就是该数据源存储的对象类型
这两个属性都定义在和当前DRL同包路径的LoanUnit.java文件中,你示例代码里then分支的allAmounts.add(...)就是直接调用该类的allAmounts属性方法插入统计结果。
未绑定变量使用/loanApplications的逻辑
OOPath在规则条件、查询语句中的核心作用是匹配数据源中符合约束的对象,是否需要绑定变量完全取决于后续逻辑是否需要使用完整的匹配对象:
- 如果你需要在规则的
then分支、查询返回结果中使用完整的匹配对象,就需要用$变量名: /数据源[约束]的格式绑定变量,比如代码中$l: /loanApplications[ approved ]就是把符合条件的贷款申请绑定到$l变量供后续使用 - 如果你只需要提取对象的部分属性,或者仅做条件判断不需要用到完整对象,就可以不用绑定变量,比如你给出的
FindNotApprovedIdAndAmount查询,只需要提取未通过申请的id和金额字段,不需要完整的LoanApplication对象,所以不用绑定变量,直接在约束里声明$id: id, $amount : amount绑定所需字段即可。
内容的提问来源于stack exchange,提问作者maxloo
相关产品推荐
相关产品推荐

