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

Drools规则输入不匹配求助:ERR 102错误排查

解决Drools规则中的ERR 102输入不匹配问题

嘿,我一眼就瞅出问题所在了——你的规则代码里有好几处未闭合的括号,把Drools的语法解析器搞晕了,才会抛出ERR 102这种输入不匹配的错误。咱们来逐个修正:

原代码里的语法坑

  1. 第一行accumulate调用没收尾:$transfers1: Number() from accumulate( CloudRoute(bus == $bus1, count(1)) —— 这里少了俩右括号:一个是CloudRoute()的闭合括号,另一个是accumulate()的闭合括号。
  2. 第51行的accumulate同样有问题:CloudRoute(bus == $bus2, count(1) —— 不仅CloudRoute()没闭合,accumulate()也没写完结尾的括号。

这些遗漏的括号直接打乱了解析器对规则结构的判断,让它错误地把$transfers2当成了无效输入。

修正后的完整规则代码

rule "balanceTransfers"
when
    $bus1 : CloudBus();
    $bus2 : CloudBus(id > $bus1.id);
    $transfers1: Number() from accumulate( 
        CloudRoute(bus == $bus1), 
        count(1)
    );
    $transfers2: Number() from accumulate( //<-第51行
        CloudRoute(bus == $bus2), 
        count(1)
    );
then
    scoreHolder.addSoftConstraintMatch(kcontext, -Math.abs($transfers1 - $transfers2));
end

修正细节说明

  • 每个accumulate函数的正确格式是:accumulate( 匹配的事实, 聚合函数 ),所以得给CloudRoute()和accumulate()都补上闭合括号。
  • 规则的每个条件语句结尾别忘了加;,这能帮解析器清晰区分不同的条件元素,避免混淆。

把代码改成这样之后,Drools就能正常解析你的规则了,ERR 102的错误也会消失~

内容的提问来源于stack exchange,提问作者Dionysis.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:41:46