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

Drools规则-针对布尔字段编写规则,名称以“is”开头

潘弘扬
2023-03-14

环境:Drools版本-5.1.1,dicult=mvel

<Drl file>
import deshaw.compliance.regsys.dep.domain.SpecialObject;
dialect "mvel"
rule "Test boolean stuff"
no-loop
  when
    $obj: SpecialObject(isValid == true)  // -->Problematic guy
    //$obj: SpecialObject(solid == true)  // -->This works fine
then
   System.out.println("[SplObject]:Class=" + $obj.class + ";;;obj=" + $obj);
end

<domain object>
public class SpecialObject {

private boolean isValid;
private boolean solid;

public boolean isValid() {
    return isValid;
}

public void setValid(boolean isValid) {
    this.isValid = isValid;
}

public boolean isSolid() {
    return solid;
}

public void setSolid(boolean solid) {
    this.solid = solid;
}

}

注意:该类属于第三方库,因此我不能更改“IsValid”字段的名称

共有1个答案

晏正豪
2023-03-14

试试看

when
  $obj : SpecialObject( valid == true )
then
   ...

由于属性的访问器是isvalid,因此应该将其引用为MVEL中的valid。另一种选择是使用带括号的完整方法名。

字段的名称本身是不相关的,尽管如果作者遵守命名标准会更好。

 类似资料:
  • 我们正在使用JBoss Drools来外部化我们正在构建的某些服务中一些特别容易更改的业务逻辑。 在我们的开发人员可以创建和维护这些规则的地方,这些规则运行得很好,我们有很好的集成水平和集成工作流。 我们希望将其应用扩展到一种需要非常高级别定制的新服务。本质上,“专家用户”需要能够设置两种不同类型的规则: > “标准”规则-这些几乎是隐含的规则,我们知道这些规则是常见的需求,我们可以构建UI来设置

  • 我创建了一个规则,其“when”条件如下:- 上述条件运行良好。现在我如何在一个规则中添加多个布尔条件?为(如)。上面的规则可以概括为:a和b,所以如果我想创建一个规则:(a和b)或c,那么它的实际drl语法是什么。我对drools是新手,所以请帮助我了解规则(a和b)或C的语法。 我确实创建了一个语法 错误消息:Message[id=1,level=Error,path=mapiteration

  • 我的步骤事件有以下字段:

  • 任何关于这个或者如何使用drools api修改drools规则的想法都将是有用的。 注意:我不想为修改规则做字符串替换。

  • 名称映射规则 跟名称相关的函数包含在 xorm.io/xorm/names 下。名称映射规则主要负责结构体名称到表名和结构体 field 到表字段的名称映射。由 names.Mapper 接口的实现者来管理,xorm 内置了三种 Mapper 实现:names.SnakeMapper , names.SameMapper和names.GonicMapper。 SnakeMapper 支持struc

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