我正在从事像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