Drools卡住射击始终是相同的规则

时间:2016-04-23 12:02:55

标签: drools

出于某种原因,drools卡在一个循环中,总是使用相同的参数($ c和$ d)触发相同的规则。

rule removing_invalid_dungeons
    when
    $c : Cave()
    $d : Dungeon(valid, x < $c.minCoordinateHorizontal || x > $c.maxCoordinateHorizontal || y<$c.minCoordinateVertical || y>$c.maxCoordinateVertical)
then
    Agent.logger.info("Rule fired ["+drools.getRule().getName()+"] - {}",$d.toString());
    modify($d) {setValid(false)};
    modify($c){removeDungeon($d)};
    retract($d);    
end;    

我放了一个断点,我可以看到它在第一次触发后,即使有效的== false也会继续射击!更糟糕的是,$ d已被收回。

如果我删除了修改($ c),它只能触发一次。

rule removing_invalid_dungeons
when
    $c : Cave()
    $d : Dungeon(valid, x < $c.minCoordinateHorizontal || x > $c.maxCoordinateHorizontal || y<$c.minCoordinateVertical || y>$c.maxCoordinateVertical)
then
    Agent.logger.info("Rule fired ["+drools.getRule().getName()+"] - {}",$d.toString());
    modify($d) {setValid(false)};
    $c.removeDungeon($d);
    retract($d);    
end;    

我已调试并且$ c.removeDungeon($ d)正常工作(它只是从列表中删除$ d)。

为什么呢?任何线索?

0 个答案:

没有答案