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

时间:2019-03-27 15:10:10

标签: drools drools-planner drools-flow

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

1 个答案:

答案 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

希望有帮助,