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

Drools 6规则项比较

鲜于意
2023-03-14

假设我有一个对象类型MyObject,其中包含成员数据someValue和otherValue,我插入两个逻辑规则,如下所示:

Rule "Checks Some Value"
  when
    $myO : MyObject( someValue == Constants.someValueChecker )
  then
    insertLogical(new SomeValueChecked($myO));
end

Rule "Checks Other Value"
  when
    $myO : MyObject( otherValue == Constants.otherValueChecker )
  then 
    insertLogical(new OtherValueChecked($myO));
end

我的问题是,有没有办法验证这些规则是否已针对同一个MyObject实例触发?另外,对于MyObject的一个特定实例,是否有办法知道这些规则是否已经触发了它?

共有1个答案

谷光誉
2023-03-14

要验证是否已检查同一对象的“some”和“other”值(并假设对MyObject的引用保留在成员MyObject中),请执行以下操作:

rule "some and other value"
when
    SomeValueChecked( $obj: myObject )
    OtherValueChecked( myObject == $obj )
then
  ...
end

以及检查两者是否都已为MyObject的特定实例激发:

rule "some and other checked for green"
when
    $obj: MyObject( color == Colour.GREEN ) // or some other property
    SomeValueChecked( myObject == $obj )
    OtherValueChecked( myObject == $obj )
then
  ...
end

很明显,单独检查“某些”或“其他”需要什么。

 类似资料:
  • 我正在尝试执行下面列出的5条规则- 假设有两个实体——实体1和实体2。实体1包含3个日期类型变量——Date1、Date2、Date3实体2包含一个日期类型变量——Date4 规则1-如果日期1 过了一会儿,我注意到日志在增长,系统内存不足。 再深入一点,我在org上启用了跟踪。drools软件包,发现规则正在循环中,没有停止。 我正在使用Drools Workbench 7.2.0 Final

  • 问题内容: 例如,尝试理解以下结果: 这里发生了什么?在[1]的情况下,它将1与x的每个元素进行比较,并将结果汇​​总到一个数组中。对于[[1]],同样的事情。仅通过对repl进行试验,就很容易弄清楚特定阵列形状会发生什么。但是,双方可以具有任意形状的基本规则是什么? 问题答案: NumPy会在比较之前尝试将两个数组广播为兼容形状。如果广播失败,则当前返回False。将来, 如果广播或元素比较等失

  • 简而言之,我希望在运行时从规则库中创建、编辑和删除规则。我很难弄清楚如何在Drools6+中做到这一点。

  • 主要内容:1、常规规则,2、嵌套规则在 CSS 中包含两种语法规则: 普通规则:由选择器、属性和值构成,在之前的学习中我们主要使用的就是这种规则; @规则:以开头后面跟随一个关键字的形式构成,也被称为“AT规则”,根据使用方法的不同又可以分为“常规规则”与“嵌套规则”两种。 本节我们主要来介绍一下 CSS 中的 @ 规则。 1、常规规则 所谓“常规规则”指的是语法类似下面的规则: @[KEYWORD] (RULE); 1) @cha

  • 我们正在运行2.4版 由于我们有很多与 IgniteClientDisconnectedException 相关的问题,我正在编写一个手动分段解析器(通过在客户端重新连接禁用设置为 true 的情况下禁用客户端重新连接),它将检测这种情况(使用定期运行的简单缓存查询) 我在缓存访问方面遇到了其他问题,如本文所述解决了这些问题 但问题是,每当我尝试使用spring事务注释方法时,它都无法创建一个带有

  • 2. 隐含规则和模式规则 上一节的Makefile写得中规中矩,比较繁琐,是为了讲清楚基本概念,其实Makefile有很多灵活的写法,可以写得更简洁,同时减少出错的可能。本节我们来看看这样一个例子还有哪些改进的余地。 一个目标依赖的所有条件不一定非得写在一条规则中,也可以拆开写,例如: main.o: main.h stack.h maze.h main.o: main.c gcc -c ma