我知道编写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版,谢谢!
答案 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中的条件元素收集。