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

Drools Expert中规则逻辑的组合

邹普松
2023-03-14
rule A
 // definition
end

rule B
 // definition
end

共有1个答案

井誉
2023-03-14

两个规则A和B是A或B的逻辑等价(不是xor)。

您不能引用另一个规则,但可以定义查询并在同一LHS条件中调用两个(或更多)查询。

然而,您的逻辑的总体模式可能会使一种完全不同的方法更加可取,在这种方法中,不同规则的匹配通过作为派生事实的插入而变得有形,即所谓的真值维护。

rule A when ... then
  insertLogical( new Fired( "A" ) );
end
rule B when ... then
  insertLogical( new Fired( "B" ) );
end
rule AorB when
  Fired( rule == "A" || rule == "B" ) // other patterns for other combinations, e.g. &&
then
   ...
end
 类似资料:
  • 在intellij中是否有一种方法可以编辑checkstyle规则?在Eclipse checkstyle插件中,您可以编辑IDE中的特定规则,它们是IntelliJ的类似插件吗?我尝试下载idea-checkstyle和QA-Plug插件,但这些似乎不能直接编辑checkstyle xml文件。

  • 给定一个数组,是否可以从起始索引开始选择一组整数,这样该组就与给定的目标相加?但是,附加的限制是必须选择所有的6。 groupSum6(0,[5,6,2],8)true groupSum6(0,[5,6,2],9)false groupSum6(0,[5,6,2],7)false 只是想弄清楚我错在哪里。声明nums[start]==6的特殊情况是不是错误的方法?

  • 在JUnit 4.10及更低版本中,可以将规则注释为@规则和@ClassRur。这意味着规则会在类之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRur调用),然后廉价地重置它(通过@Rur调用)。 从JUnit 4.11开始,@规则字段必须是非静态的,@ClassRule字段必须是静态的,因此上述操作不再可行。 有明确的变通方法(例如,明确地

  • 主要内容:实例与非门实例 组合逻辑 UDP 中,状态表规定了不同的输入组合和相对应的输出值,没有指定的任意组合输出值为 x。 一个简单的与非门 UDP 可以表示如下: primitive nand_my (out , a , b ) ;     output       out ;     input        a , b ;     table     //a         b       :    

  • p.attr = value 这个表达式,python解释器将从整体上,将它理解成一个赋值,触发set;而不会这样做,p.attr触发get,get代码执行完后,p.attr = value再触发set. 我们测试一下 好,我们来点其他的代码,观察一下python解释器 初始化,看看发生什么 我试图解释一下,添加一点注释 这句话 self.__setattr__(attr, value) pyth

  • 根据4.12发行说明,可以使用@Rule和@ClassRule对测试类的静态成员进行注释: 同时使用@Rule和@ClassRule注释的静态成员现在被认为是有效的。这意味着可以使用单个规则在类之前/之后(例如设置/拆除外部资源)和测试之间(例如重置外部资源)执行操作, 我想使用此功能在文件中所有测试开始时初始化资源,在每个测试之间对资源进行一些清理,并在所有测试完成后将其丢弃。此资源当前由扩展E