Мы используем Drools v6.3.4 - но протестировали, что такая же проблема возникает и в v7.3.0.Когда мы пишем правило, длина которого составляет 27000 символов или более, мы получаем ошибку «Невозможно проанализировать выражение»
rule "StoreRule"
when
(s: Store.StoreItems(storeitemname in ("STORE0000001","STORE0000002"....really long list)))
then
System.out.println("Discount!");
end
У нас есть обходной путь, который состоит в том, чтобы разделить правило следующим образом -
rule "StoreRule"
when
(s: Store.StoreItems(storeitemname in (<List 1>))) ||
(s: Store.StoreItems(storeitemname in (<List 2>))) ||....and so on
then
System.out.println("Discount!");
end
Какова основная причина ошибки, которую мы получаем с одним длинным списком?Есть ли лучший способ обработать такие правила, кроме обходного пути, указанного выше?
Когда у нас большое правило, мы получаем следующую ошибку.
![enter image description here](https://i.stack.imgur.com/Lf4Ew.jpg)