我有课
class Person {
public Date dateOfBirth;
public List<Person> children;
}
我想制定一条流口水规则,让我成为最大的孩子。例如:
rule "Oldest Child"
when
$person: Person()
$oldestChild: Person() from $person.children
then
insert($oldestChild)
end
正如所写, $oldestChild 是一个列表,但我真的很想成为一个真正的最大的孩子(单个对象而不是列表)。我玩了一下“accumulate”,但无法让它发挥作用。有任何想法吗?
使用内联自定义代码进行累加会生成最大的子项:
rule "oldest child"
when
Person($pn: name, $pd: dateOfBirth, $children: children)
Person($ocn: name) from accumulate(
$child: Person( $cd: dateOfBirth) from $children,
init( Person minp = null; Date mind = new Date(); ),
action( if( $cd.compareTo( mind ) < 0 ){
minp = $child;
mind = $cd;
} ),
result( minp ) )
then
System.out.println( $pn + "'s oldest child is " + $ocn );
end
如果你需要这个函数来完成严肃的工作,你可以实现你自己的累积函数(用Java)——它是更多的工作,但是是“更干净”的解决方案。请参阅文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)