Drools 为什么';t规则1规则2的后果影响行为?

Drools 为什么';t规则1规则2的后果影响行为?,drools,Drools,作为一种练习,我正在研究桥牌游戏中的竞价规则。这些规则彼此独立工作(通过使用规则中的drools.halt()强制执行),但是当我试图通过删除halt()调用来扩展示例时,我得到了我意想不到的行为。在下面的示例中,我注释掉了第一条规则中的halt(),并将size()条件添加到第二条规则中以替换它,试图阻止第二条规则触发。我不认为第二条规则会被触发,因为第一条规则的结果为拍卖的收藏品增加了一个出价,因此随后在第二条规则中,计数不应为零。我曾尝试在第一条规则中显式地添加“update”或“modi

作为一种练习,我正在研究桥牌游戏中的竞价规则。这些规则彼此独立工作(通过使用规则中的drools.halt()强制执行),但是当我试图通过删除halt()调用来扩展示例时,我得到了我意想不到的行为。在下面的示例中,我注释掉了第一条规则中的halt(),并将size()条件添加到第二条规则中以替换它,试图阻止第二条规则触发。我不认为第二条规则会被触发,因为第一条规则的结果为拍卖的收藏品增加了一个出价,因此随后在第二条规则中,计数不应为零。我曾尝试在第一条规则中显式地添加“update”或“modify”指令,但没有任何区别

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

当您更改对象时,需要告诉引擎您已对其进行了更新。因此,尝试添加更新($action);在第一条规则的末尾