无法分析大规则的表达式错误

时间:2018-05-17 17:42:19

标签: java drools drools-kie-server

我们正在使用Drools v6.3.4 - 但是测试了同样的问题也发生在v7.3.0中。 当我们编写规则长度为27000个字符或更长的规则时,我们得到“无法分析表达式”#34;错误

$V1
  symbol number
1      a      1
2      b      2
3      c      3

$V2
  symbol number
1      a      1
3      c      3
2      b      2

$V3
  symbol number
2      b      2
1      a      1
3      c      3

$V4
  symbol number
2      b      2
3      c      3
1      a      1

$V5
  symbol number
3      c      3
1      a      1
2      b      2

$V6
  symbol number
3      c      3
2      b      2
1      a      1

我们有一个解决方法,就是将规则拆分为这样 -

rule "StoreRule"

    when
        (s: Store.StoreItems(storeitemname in ("STORE0000001","STORE0000002"....really long list)))
    then
        System.out.println("Discount!");
end

单个长列表出现错误的根本原因是什么?除了上面指定的解决方法之外,还有更好的方法来处理这些规则吗?

当我们有大规则时,我们会收到以下错误。

enter image description here

1 个答案:

答案 0 :(得分:-1)

确保一个商店商品名称不能成为其他商店商品名称的一部分

rule "StoreRule"

    when
        (s: Store.StoreItems("STORE0000001|STORE0000002|really long list" contains storeitemname))
    then
        System.out.println("Discount!");
end