Drools 决策表中的空检查

Null Checks in Drools Decision Tables

在 drools 中使用决策 tables 时,是否有任何更简单的方法来处理参数的 Null 检查?我想做的是将 java 中的某些业务规则迁移到流口水,因此数据被抽象为多层对象。因此,除非我对它们进行空检查,否则我无法继续。欢迎提出任何建议。 我要移至决策 table 的业务规则的形式为:

> When   new A().getB().getC().getData() > 0  then 
> System.out.println("Result found");

每个字段的null检查对应的条件写起来太痛苦了

提前致谢。

对象的存在是访问其属性的基本先决条件。因此,Drools 并不比您的 运行-of-the-mill Java 代码差多少。在 Java 代码中有效的任何技术也适用于 Drools。

解决 Java 中这个问题的一个简单方法是在 class A 中引入一种方法:boolean isBCDataPositive().

使用 Drools,您还可以编写在对象不存在时不会继续评估的规则,例如

rule "is b.c.data positive"
when
    A( $b: B )
    B( this == $b, $c: c )
    C( this == $c, data > 0 )
then ... end

这需要插入包含的对象 A.b,A.b.c,前提是它们存在,但规则显然很简单,在使用电子表格符号时也是如此。