Используя Drools 3.0.6 (старый, я знаю), какова эффективная оценка для нахождения факта в известном, фиксированном и довольно большом массиве или коллекции (обратная сторона содержит, то есть "содержится в").
Использование серии OR нормальных «равных» результатов приводит к StackOverflowError, поскольку массив / коллекция может содержать несколько тысяч записей, поскольку оценка двоичного оператора Drools является рекурсивной.
У нас есть факт с одним значением и массив значений для сопоставления. Текущий «код» выглядит так:
$f: Fact(name="TheFact", $data)
eval(!($data.equals("1") || $data.equals("2") || $data.equals("3") ... ))
для большого количества фиксированных значений (1,2,3, ...). Я ищу что-то вроде «$ data in (1,2,3, ...)».