Один из способов сделать это состоит в том, чтобы, учитывая сотрудника, убедиться, что нет другого человека с более высокой датой:
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
Надеюсь, это поможет,