当前位置: 首页 > 知识库问答 >
问题:

Drools 6:无循环和显著性

封锐藻
2023-03-14

我使用的是Drools 6,当我在drl中混合了无环和显著性时,我有一种奇怪的行为。

rule "creation OfferTranslation 1"
    salience 1
    no-loop
    dialect "mvel"
    when 
        not OfferTranslation( source =="Offer1" )
then
    insert(new OfferTranslation("Offer1","Offer1_31415"));
end

rule "creation OfferTranslation 2"
    salience 2
    no-loop
    dialect "mvel"
    when 
        not OfferTranslation( source =="Offer2" )
then
    insert(new OfferTranslation("Offer2","Offer2_00dsdf")); 
end


rule "creation OfferTranslation 3"
    salience 3
    dialect "mvel"
    when 
        not OfferTranslation( source =="Offer3" )
then
    insert(new OfferTranslation("Offer3","Offer3_00dsf")); 
end


rule "creation OfferTranslation 4"
    salience 4
    dialect "mvel"
    when 
        not OfferTranslation( source =="Offer4" )
then
    insert(new OfferTranslation("Offer4","Offer4_0032")); 
end

我预计规则将按以下顺序触发:-规则“creation offertransation 4”-规则“creation offertransation 3”-规则“creation offertransation 2”-规则“creation offertransation 1”

然而,当我解雇他们时,我得到了以下顺序:-规则“创造翻译1”-规则“创造翻译2”-规则“创造翻译4”-规则“创造翻译3”

看起来“无循环”属性禁用了显著性,并且“无循环”规则具有优先级。当我尝试无环时,我得到了良好的秩序。如何将无环和显著性结合使用,或者我的错误是什么?

PS:我知道在我的例子中没有循环是无用的,我写它是为了有比我的实际规则更简单的例子。

共有1个答案

庄高谊
2023-03-14

没有bug。我们相信使用错误顺序触发的规则,因为我们在drools侦听器中使用了记录器来捕获matchCreated事件。规则中的一个简单日志显示该规则已按正确的顺序启动。

Seb公司

 类似资料:
  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 我正在用我的java书复习数据结构,我需要重新创建一个循环链表。我对这个无限循环的链表有问题,弄不清楚为什么。我可以将值插入到列表中,但是打印和删除这些值似乎会无限循环最初插入的值。我如何更改我的List类以避免无限循环? CircularList.Class 链接类

  • 此方法重复读取命令并执行它们,直到游戏结束。完成的变量为true时,表示玩家/用户点击了退出并想要结束游戏——从而退出循环并执行到方法结束。 但我观察到循环有一种奇怪的行为。它循环得非常好(省略以下行时显示stopWatch.getTime()的连续计数: 但是当我把它们放回去时,它会停止显示秒表的连续递增时间,因为它会朝着时间限制增加(在这一点上,它应该停止)。即使玩家没有输入任何命令或输入。

  • 基本上,findNode()搜索其数据等于作为参数插入的字符串的节点,但当我调用outputList()方法(该方法返回屏幕上当前节点的字符串表示)时,它将继续无限循环。 outputList方法是: 如有任何帮助,我们将不胜感激。提前道谢。

  • 问题内容: 我想在熊猫数据框上生成一个总和。我有类似的东西: 我想得到: 因此,每个单元格应该是其自身与所有先前单元格的总和,我应该如何在不使用循环的情况下做到这一点。 问题答案: 正如@JonClements提到的,您可以使用DataFrame方法执行此操作:

  • 我正在尝试构建实时聊天消息。在客户端(React),每当有新用户进入聊天时,套接字的事件usuarios-conectados都会被触发(此套接字事件为我提供了当时连接的所有用户的数组)。 然后,我尝试在useState中设置该用户数组,但正因为如此,组件进入循环并不断重新渲染自己。 这似乎是问题所在,因为每当我调用useSocket,控制台时。日志(用户)不断打印连接的用户