Drools决策表中的空检查

时间:2015-03-19 16:00:25

标签: java drools

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

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

写一个对应于每个字段的空检查的条件

太痛苦了

先谢谢。

1 个答案:

答案 0 :(得分:0)

对象的存在是访问其属性的基本先决条件。因此,Drools并不比普通的Java代码更糟糕。任何适用于Java代码的技术也适用于Drools。

在Java中解决这个问题的一个简单方法是在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,只要它们存在,但是当使用电子表格符号时,规则显然也很简单。