Drools遍历对象树

Drools traversal object tree

如何使用 Drools 遍历对象树(与树的深度无关)?

我的 POJO:

public class Node {

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

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

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

根据这个规则写一个规则来监控所有的节点不是一个好主意。我对使用规则有两个反对意见。

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

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

明确第二点后:写一个Java方法遍历树,这样它就可以计算值并标记或更正不匹配的节点。