如何在Drools对象的所有加入日期中找到最近的日期?
我的规则是这样的:
declare RecentDate
dates : java.util.Date
end
rule "insert_dates"
when
//reading dates from back end
Employee($date : dateOfJoining, $name : name, salary > 10000)
then
insert(new RecentDate($date))
end
现在,我想根据dateOfJoining查找最近的雇员。任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
做到这一点的一种方法是,给与一名雇员,确保没有其他人有更高的日期:
declare RecentDate
dates : java.util.Date
end
rule "insert_dates"
when
//reading dates from back end
Employee( $date : dateOfJoining, $name : name, salary > 10000)
not Employee (dateOfJoining > $date)
then
insert(new RecentDate($date))
end
以上规则仅适用于在执行Employee
之前在会话中拥有所有fireAllRules()
事实的情况。如果不是这种情况,您可以尝试首先插入一个带有空日期的RecentDate
,然后将每个Employee
与之比较并相应地进行更新:
rule "Init RecentDate"
when
not RecentDate()
then
insert new RecentDate(null);
end
rule "update_dates"
when
Employee( $date : dateOfJoining, $name : name, salary > 10000)
$d: RecentDate ( date == null || date < $date)
then
modify ($d){
setDate($date)
}
end
希望有帮助,