5

element で満たされた map を送信する次の Drools ルールがありますが、実行されると element があります。値が「Y」であるはずなのに、なぜ null になるのですか? ACDebug.debug() メソッドにブレークポイントを配置し、$map.put() が実行された後にマップを検査すると、値が "Y" になっていますが、ルールが実行された後は null になりますか? 誰かが同様の問題を抱えていますか?

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
4

1 に答える 1

7

マップに変更を加えた後、更新を行う必要があります。これにより、マップが変更されたことを作業メモリに知らせます。

次の行を追加します。

update( $map );
于 2010-11-16T11:02:34.937 に答える