如何在阻止时获得drools中的特定值。
我正在寻找类似的东西,但它不起作用:
我已将Hashmap插入工作内存并尝试在When
中检索它$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
答案 0 :(得分:4)
对于maps / lists / arrays,您可以使用[]语法访问元素。此外,如果你使用的是Drools 5.3+,那么evals现在基本上无关紧要了。
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
答案 1 :(得分:0)
通常最好插入更多类型的对象,而不仅仅是哈希映射。您能解释一下您尝试处理的信息吗?为什么选择插入hashmap
而不是typed object
?
我很确定你可以这样做:
HashMap($expire: keys["CREDIT_CARD_EXPIRATION_DATE"] )
eval(ageInDays($expire) > 10)
我没有测试它,但如果你不能插入更多类型的事实,你应该朝那个方向看。 干杯