Drools遍历对象树

时间:2017-03-14 16:34:13

标签: java drools

如何使用Drools遍历对象树(独立于树的深度)?

我的POJO:

public class Node {

    int ID;
    String name;
    String value;
    List<Node> nodes;
}

当Node中的值低于节点列表中的值之和时,我需要记录情况。每个节点都可以拥有自己的节点列表:

Node1
   - Node1_1
   - Node1_2
        -Node1_2_1
        -Node1_2_2
   .....

条件:

Node1.value < Node1_1.value + Node1_2.value 
and 
Node1_2 < Node1_2_1.value + Node1_2_2.value

1 个答案:

答案 0 :(得分:0)

根据此规则编写规则以监控所有节点不是一个好主意。我对使用规则有两个异议。

首先,该规则将触发WM中的所有Node对象,并导致递归计算子项的总和。这意味着每个级别的每个节点都会导致这种计算 - 不寒而栗!

其次,一旦为节点建立了差异,有什么要求?下一个更高级别的总和是什么:从存储值计算的值或使用计算值的值?

澄清第二点之后:编写一个通过树的Java方法,以便它可以计算值并标记或更正不匹配的节点。