Невозможно проанализировать ошибку выражения для больших правил - PullRequest
0 голосов
/ 17 мая 2018

Мы используем 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...