2011-10-14 29 views
0

如何在阻塞時獲得流口水中的特殊值。drools rule從地圖中獲得價值

我期待這樣的事情,但它不工作:

我已插入的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 

回答

0

通常,插入更多類型的對象比哈希映射更好。您能解釋一下您正在處理的信息嗎?爲什麼選擇插入hashmap而不是typed object

我敢肯定,你可以這樣做:

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

我沒有測試它,但你應該看看在那個方向,如果你不能插入更多的類型化的事實。 乾杯

3

對於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