检查Drools查询中参数字段的值

检查Drools查询中参数字段的值,drools,rules,mvel,Drools,Rules,Mvel,如何在Drools查询中检查参数字段的值 我有一个契约Java类要传递给查询: public class Contract { ... other vars private prodContractNum; public String getProdContractNum() { return prodContractNum; } ... other getters } 我想检查prodContractNum字段的相等性。我试过: query ch

如何在Drools查询中检查参数字段的值

我有一个契约Java类要传递给查询:

public class Contract {
   ... other vars

   private prodContractNum;
   public String getProdContractNum() {
      return prodContractNum;
   }

   ... other getters
}
我想检查
prodContractNum
字段的相等性。我试过:

query checkContractNum(Contract contract)
   contract := Contract(prodContractNum == "D");
end

但这与我的任何合同投入都不匹配。有什么建议吗?

为什么要询问?你为什么不能按照你的规则去做呢?这听起来确实像是一个XY问题,在这个问题上,你在寻求“解决方案”方面的帮助,而不是实际问题。您可以简单地匹配规则左侧的属性:
Contract(prodContractNum==“D”)
。更像是一个“将此圆放入正方形”问题。我正在尝试将数百条规则和条件从另一个规则引擎直接迁移到drools中——直接翻译似乎是最简单的解决方案。在本例中,我希望有一个可以跨多个规则重用的
checkContractNum
查询<代码>合同(prodContractNum==“D”)为没有更具体而道歉-我的程序的一个要求是业务分析师对规则及其条件进行外部配置。这些信息存储在数据库中,该数据库在启动时加载到我的程序中,并使用Drools模板建立知识库。在我的程序中,我将查询视为规则的条件。因此,例如,
规则A
具有条件
B和C
,但随后可以通过DB更改和程序重新启动从外部更改为条件
D和E
。因此,我尝试使用查询——它们更容易配置为模板化的逻辑块。