drools规则中的输入不匹配

drools规则中的输入不匹配,drools,rules,mismatch,Drools,Rules,Mismatch,我正在尝试运行我的规则集,但它显示: 错误[102] 我添加了它缺失的地方,之后错误表示它位于[添加的in$transfer1块] rule "balanceTransfers" when $bus1 : CloudBus(); $bus2 : CloudBus(id > $bus1.id); $transfers1: Number() from accumulate( CloudRoute(bus == $bus1, count(1))

我正在尝试运行我的规则集,但它显示:

错误[102]

我添加了它缺失的地方,之后错误表示它位于[添加的in$transfer1块]

rule "balanceTransfers"
when
    $bus1 : CloudBus();
    $bus2 : CloudBus(id > $bus1.id);
    $transfers1: Number() from accumulate( 
        CloudRoute(bus == $bus1, count(1))
    $transfers2: Number() from accumulate( //<-line 51
        CloudRoute(bus == $bus2, count(1)
then
    scoreHolder.addSoftConstraintMatch(kcontext, -Math.abs($transfers1 - 
      $transfers2));
end
线程thread-114 java.lang.IllegalStateException中的异常: 分数DRL中存在错误:错误消息:消息[id=1, kieBase=defaultKieBase,level=ERROR,path=…,line=51,column=0 text=[ERR 102]第51行:规则中输入“$transfers2”不匹配 balanceTransfers]消息[id=2,kieBase=defaultKieBase, 级别=错误,路径=…,行=0,列=0文本=分析器返回空值 包装]

累积语法是错误的。它应该是累积模式,fc。您没有关闭模式的括号:

rule "balanceTransfers"
when
    $bus1 : CloudBus();
    $bus2 : CloudBus(id > $bus1.id);
    $transfers1: Number() from accumulate( 
        CloudRoute(bus == $bus1), 
        count(1)
    )
    $transfers2: Number() from accumulate(
        CloudRoute(bus == $bus2), 
        count(1)
    )
then
    scoreHolder.addSoftConstraintMatch(kcontext, -Math.abs($transfers1 - 
      $transfers2));
end
希望有帮助