我正在從事像nurseroster這樣的項目,我需要一個建議。問題是:每個員工每天可以工作在不止一個航班上,而且這些航班有不同的開始時間和結束時間。每個員工都被分配到飛行中的飛行協助。 考慮到第一班航班的開始時間和最後一班航班的結束時間,是否有規則能夠計算總工作時間?例如:flightAssignment1 employee1在8:00結束於10:00,flightAssigment2 employee1從12:00結束於15:00。員工1的總工作時間是8:00 - 15:00(7小時)。NurseRoster的總工作時間,如項目
我想這一個,但它返回一個無法解析對象類型 'CheckinRoster.getEmployeeTotalHours'錯誤:
rule "insertEmployeeAssignmentTotal"
salience 1 // Do these rules first (optional, for performance)
when
$employee : Employee()
$assignmentTotal : CheckinRoster.getEmployeeTotalHours($employee)
then
insertLogical(new EmployeeAssignmentTotal($employee, $assignmentTotal.intValue()));
end
OK我改變了這樣的規則:
rule "test"
when
$employee : Employee()
accumulate(
FlightAssignment(employee == $employee, $start : minWorkedHour, $end : maxWorkedHour),
$max : max($end),
$min : min($start)
)
then
System.out.println($employee.getLabel() + " MIN: " + $min.intValue() + " --- MAX: " + $max.intValue());
scoreHolder.addSoftConstraintMatch(kcontext, -($max.intValue() - $min.intValue()));
end
獲得如下兩個好結果:
Employee 1 MIN: 7 --- MAX: 21
Employee 2 MIN: 6 --- MAX: 21
個而且像這樣的,我與在整數變換一些錯誤或其他東西壞的結果
Employee 3 MIN: 2147483647 --- MAX: -2147483648
的minWorkedHour和maxWorkedHour是在類FlightAssignemnt整數,蓄能器似乎是雙人或浮動。有什麼問題?
使用累積函數,請參閱其他optaplanner示例 –
使用max和min獲取最大時間和最短時間? – Giancarlo