从 Drools 对象的所有日期中查找最近的日期

Finding the most recent date in from all dates in Drools object

如何在 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 查找最近的员工。任何帮助表示赞赏。谢谢。

一种方法是,给定一名员工,确保没有其他人有更高的日期:

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

以上规则仅适用于在执行 fireAllRules() 之前在会话中拥有所有 Employee 事实的情况。如果不是这种情况,您可以尝试先插入一个带有空日期的 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

希望对您有所帮助,