流口水规则输入不匹配

时间:2019-08-09 08:09:04

标签: drools rules mismatch

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

  

错误[102]

我在缺少的地方添加了“)”,此后错误表明它在$ 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,级别=错误,路径= ...,行= 51,列= 0
  text = [ERR 102]第51:1行规则中的输入'$ transfers2'不匹配   “ balanceTransfers”]消息[id = 2,kieBase = defaultKieBase,   级别=错误,路径= ...,行= 0,列= 0文本=解析器返回null   包装]

1 个答案:

答案 0 :(得分:1)

accumulate语法错误。它应该是accumulate ( Pattern(), 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

希望有帮助,