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

Drools规则中的多重布尔条件?

松铭
2023-03-14

我创建了一个规则,其“when”条件如下:-

when
    $map: Map(this["key1"].equals("value1")) and Map(this["key2"].equals("value2"))  
then
...

上述条件运行良好。现在我如何在一个规则中添加多个布尔条件?为(如)。上面的规则可以概括为:a和b,所以如果我想创建一个规则:(a和b)或c,那么它的实际drl语法是什么。我对drools是新手,所以请帮助我了解规则(a和b)或C的语法。

我确实创建了一个语法

when
    $map: Reindexing((Map(this["key1"].equals("value1")) and Map(this["key2"].equals("value2"))) or  Map(this["key3"].equals("value3"))) 
then

错误消息:Message[id=1,level=Error,path=mapiterationrules.drl,Line=13,column=0 text=[err101]行13:21在规则“first rule”中的input'('处没有可行的替代方法]

谢谢

共有1个答案

吴正祥
2023-03-14

找出了上面规则的语法。谢谢laune和toni的帮助。

下面是语法

when
    $map: Map( this["data1"].equals("dataOutput1") ) || Map( this["data2"].equals("dataOutput2") && this["data3"].equals("dataOutput3") )

在同一个括号内时,不需要再次键入类名。

 类似资料:
  • 我对口水和探索完全陌生。到目前为止,我一直在使用一个规则和withing,我们使用if条件,就像Java一样。 2.我会使用函数,我知道的是用java编写函数并导入它们。 3.是否有可能在Drools中创建函数,并像在Java中一样使用? 我并没有以它应该使用的方式使用Drools,但到目前为止,规则还没有我们现在使用的规则那么复杂。任何帮助对我都是有用的。

  • 我是流口水的新手,熟悉使用扩展关键字来继承规则。问题是有没有办法继承多个规则?这类似于在java类上使用多个接口。这是一个我希望它如何工作的示例,但我在规则3上遇到错误:

  • 环境:Drools版本-5.1.1,dicult=mvel 注意:该类属于第三方库,因此我不能更改“IsValid”字段的名称

  • 我的问题是: 在Drools规则中,有没有一种方法可以拦截“成功”事件?为了更好地解释。。。有一种方法可以在规则的所有条件都为真时调用侦听器? 注意:我不想设置一个全局对象(在会话上)来管理规则的“然后”子句中的这个条件。 我正在寻找一个已经在Drools上实现的解决方案 规则示例

  • 我有一个学生班,它有相关部门的列表。 我正在尝试用Drools编写规则。规则就像-如果一个学生属于某些部门,那么就采取行动。我无法找出正确的方法来做这件事。我在下面写的一个不起作用。我知道如果它的字符串列表有效。有没有办法在自定义对象上做包含。 终止 调用规则的代码 我正在使用Drools 6.2版本。

  • 为什么与有不同的 ? 我正在使用Drools DSL,我必须实现一个规则: 我有这些DSL定义: 要求是以肯定的方式编写可重用的DSL语句,并具有否定它们的能力。