我正在尝试运行规则集,但显示:
错误[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 包装]
答案 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
希望有帮助,