Я хочу использовать ключевое слово «in» в функции «eval», в котором я получаю сообщение об ошибке, что «in» не распознается drools. Поэтому у меня есть несколько значений, которые я хочу проверить по атрибуту конкретного факта
when
$person : Person(PIN in ("123","456","789"))
then
//do something
end
// Вот так я хочу использовать его в eval
when
$person : Person()
eval($person.PIN in ("123","456","789"))
then
//do something
end
Но это показывает ошибку времени компиляции.
Есть ли другой способ сделать это.
1010 * Отредактированный *
Итак, у меня есть некоторые условия в Таблице решений, где я хочу использовать eval, потому что другие способы не помогают в моем сценарии, ниже снимок объяснит
SnapShot 1: таблица решений без eval ()
SnapShot 2: таблица решений с eval ()
- Ошибка в первом снимке:
При компиляции электронной таблицы условие переходит ко второму объекту строк, как показано ниже: код интерпретируется следующим образом:
when
personMap : PersonMap ()
basicEligiblePerson : Person( personalAddress.PIN in ($param) ) from
personMap.AddressesList
addresses : Address() from basicEligiblePerson.AddressesList
personalAddress : PersonalAddress() from addresses.PersonalAddress
then
basicEligiblePerson.setEligibility(true);
end
- Ошибка во втором снимке:
При компиляции этой таблицы условие переходит к функции eval (), но ключевое слово «in» не работает в eval ().
when
personMap : PersonMap ()
basicEligiblePerson : Person( personalAddress.PIN in ($param) ) from
personMap.AddressesList
addresses : Address() from basicEligiblePerson.AddressesList
personalAddress : PersonalAddress() from addresses.PersonalAddress
eval( personalAddress.PIN in ($param) )
then
basicEligiblePerson.setEligibility(true);
end
что мне делать?