Карты и строки в правилах Drools - PullRequest
5 голосов
/ 15 ноября 2010

У меня есть следующее правило Drools, которому я отправляю карту, заполненную элементом, но когда она выполняется, у меня есть элемент. Почему я получаю значение NULL, когда оно должно быть «Y» для значения? Когда я помещаю точку останова в метод ACDebug.debug () и проверяю карту после того, как $ map.put () был выполнен, это выглядит хорошо, у него есть «Y» для значения, но после того, как мои правила выполнены, у меня есть ноль? У кого-нибудь была подобная проблема?

import java.util.Map;
import java.util.HashMap;
import edu.abc.ACDebug;

rule "POSTPROCESSOR 8"
    ruleflow-group "supress-processor"
    when
        $map:Map(keySet contains "STANDARD_ADDRESS:STREET_NAME")
    then
        ACDebug.debug($map, "Map before PUT: ");
        $map.put("/locationList/sourceAddress/fullStreet",new String("Y"));
        ACDebug.debug($map, "Map after PUT: ");
        $map.remove("STANDARD_ADDRESS:STREET_NAME");
end

1 Ответ

7 голосов
/ 16 ноября 2010

После того, как вы внесли изменения в карту, вам нужно сделать обновление. Это позволяет рабочей памяти узнать, что вы изменили карту.

Добавьте следующую строку:

update( $map );
...