Drools规则从对象列表中找出最大值

时间:2013-03-07 06:37:49

标签: java drools

我知道编写Drools规则以便从对象列表中找到最大值是多么容易

e.g. MyBase(listOfObjects : myObjects)
     accumulate (MyObject($value : value, $value != null) from listOfObjects; $maxValue : max($value))

我的问题是,你如何写一个Drools规则来从一个对象列表中找到最大值'对象列表?

e.g. MyBase(listOfObjects : myObjects)
     accumulate (MyObject(anotherListOfObjects : mySmallerObjects) from listOfObjects
                 ,MySmallerObject($value : value, $value != null) from anotherListOfObjects; $maxValue : max($value))

上述方法无效。

基本上,我有一个对象MyBase,它有List<MyObjects> myObjects。在myObjects内,我希望找到List<MySmallerObject> mySmallerObjects的最大值(在myObjects之内,而不只是在mySmallerObjects内)

我相信它在Drools中是可行的,我只需要正确的语法。

我正在使用Drools 5.5版,谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,我先collect全部MySmallerObjects,然后累积collect操作的结果。 collect允许嵌套的from元素。请参阅 4.8.3.7.3一章。 Drools专家用户指南http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e5351中的条件元素收集