为什么不规则1规则2的后果效应行为?

时间:2013-03-29 14:43:37

标签: drools

作为一种教导自己流口水的练习,我正在研究桥牌游戏中的竞标规则。规则彼此独立工作(通过在规则中使用drools.halt()强制执行)但是当我尝试通过删除halt()调用来扩展示例时,我得到了我没想到的行为。在下面的示例中,我将在第一个规则中注释掉halt(),并将size()条件添加到第二个规则以替换它,尝试阻止第二个规则触发。我不希望第二条规则被解雇,因为第一条规则的后果为拍卖的集合添加了一个出价,因此在规则2中,计数不应该为零。我已尝试在第一条规则中明确添加“更新”或“修改”指令,但这没有任何区别。

rule "rule1"
salience 100
    when
        $auction : Auction( $currentBidder : currentBidder != null )
        $hand : Hand( owner.equals($currentBidder), getTotalPoints(getLongestSuit()) >= 13 )
    then
        $auction.bid($currentBidder, new Bid(1, $hand.getLongestSuit()));
        //drools.halt();
end

rule "rule2"
salience 1
    when
        $auction : Auction( $currentBidder : currentBidder != null, getPlayerBids().size() == 0 )
        Hand(owner.equals($currentBidder))
    then
        $auction.bid($currentBidder, new Pass());
        drools.halt();
end

1 个答案:

答案 0 :(得分:0)

更改对象时,需要告诉引擎更新它。所以尝试添加更新($ action);在第一条规则的最后。