Правило слюни получить значение с карты - PullRequest
0 голосов
/ 14 октября 2011

Как получить значение perticular в слюнях при блоке.

Я ищу что-то подобное, но оно не работает:

Я вставил Hashmap в рабочую память и пытаюсь получить его в когда

$expiry_date:HashMap(get("CREDIT_CARD_EXPIRATION_DATE"));
eval(ageInDays($expiry_date)>10) ;

Я получаю ошибку ниже

[42,37]: [ERR 101] Line 42:37 no viable alternative at input '"CREDIT_CARD_EXPIRATION_DATE"' in rule "Rule1" in pattern HashMap

Ответы [ 2 ]

4 голосов
/ 17 октября 2011

Для карт / списков / массивов вы можете использовать синтаксис [] для доступа к элементам.Кроме того, если вы используете Drools 5.3+, уловки теперь в основном не имеют значения.

rule X
when
    HashMap( ageInDays(this["CREDIT_CARD_EXPIRATION_DATE"]) > 10 )
then
    ...
end

С Drools 5.1 / 5.2 вы можете сделать:

rule X
when
    HashMap( eval( ageInDays(this["CREDIT_CARD_EXPIRATION_DATE"]) > 10 ) )
then
    ...
end
0 голосов
/ 15 октября 2011

Обычно лучше вставлять больше типизированных объектов, чем просто хэш-карту.Можете ли вы объяснить информацию, которую вы пытаетесь обработать, и почему вы решили вставить hashmap вместо typed object?

Я почти уверен, что вы можете сделать что-то вроде:

HashMap($expire: keys["CREDIT_CARD_EXPIRATION_DATE"] )
eval(ageInDays($expire) > 10)

Я не проверял это, но вы должны посмотреть в этом направлении, если вы не можете вставить больше напечатанных фактов.Приветствия

...