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