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,前提是它们存在,但规则显然很简单,在使用电子表格符号时也是如此。
在 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,前提是它们存在,但规则显然很简单,在使用电子表格符号时也是如此。