【问题标题】:Mismatched input in rule of drools流口水规则中的输入不匹配
【发布时间】:2019-08-09 08:09:04
【问题描述】:

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

错误[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, level=ERROR, path=..., line=51, column=0
text=[ERR 102] 第 51:1 行不匹配的输入“$transfers2”在规则中 "balanceTransfers"] 消息 [id=2, kieBase=defaultKieBase, level=ERROR, path=..., line=0, column=0 text=Parser 返回了 null 包]

【问题讨论】:

    标签: drools rules mismatch


    【解决方案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
    

    希望对你有帮助,

    【讨论】:

      【解决方案2】:

      当我帮助一所大学解决这个错误时,之前的规则中缺少end。

      【讨论】:

        猜你喜欢
        • 2011-12-06
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多