You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RuleUnit+Quarkus示例DRL文件中$l与$a变量的用法有何差异

变量属性说明

$l和$a都属于规则作用域下的局部变量,不是实例变量,仅在所属规则的对应作用范围内生效,无法跨规则共享,出了作用域就会自动失效。


二者的核心差异

1. 绑定逻辑与存储内容不同

  • $l是单实例匹配绑定:
    它直接从/loanApplications数据源中筛选符合条件的单个LoanApplication实例,存储的是该实例的引用。每匹配到1条符合条件的记录,规则就触发1次,$l每次都对应当前匹配到的那一条申请数据,所以可以在then块中直接通过modify($l)修改实例的审批状态。
  • $a是聚合遍历的临时绑定:
    它仅在accumulate聚合函数内部生效,遍历/loanApplications下所有记录时,会把当前轮次的LoanApplication实例临时赋值给$a,仅用于提取amount字段参与求和计算,存储的是遍历过程中临时的单实例引用,出了accumulate块就无法访问,也不会在then块中被调用。

2. 触发逻辑不同

  • 绑定$l的NotAdultApplication规则触发次数等于符合「申请人年龄小于20」条件的贷款申请数量,每一条符合条件的申请都会触发一次规则执行。
  • 用到$a的AllAmounts规则仅会触发1次:等所有贷款申请遍历完成、求和算出总金额之后,才会执行一次then块的逻辑。

内容的提问来源于stack exchange,提问作者maxloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 16:09:03