[jboss-svn-commits] JBL Code SVN: r33108 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main: java/org/drools/planner/examples/nurserostering/domain/contract and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 27 04:52:29 EDT 2010
Author: ge0ffrey
Date: 2010-05-27 04:52:28 -0400 (Thu, 27 May 2010)
New Revision: 33108
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/WeekendDefinition.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
identical shift types
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java 2010-05-27 07:40:41 UTC (rev 33107)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java 2010-05-27 08:52:28 UTC (rev 33108)
@@ -50,4 +50,8 @@
return code + "(" + name + ")";
}
+ public int getWeekendLength() {
+ return getContract().getWeekendLength();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/WeekendDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/WeekendDefinition.java 2010-05-27 07:40:41 UTC (rev 33107)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/WeekendDefinition.java 2010-05-27 08:52:28 UTC (rev 33108)
@@ -70,4 +70,8 @@
return dayOfWeekSet.contains(dayOfWeek);
}
+ public int getWeekendLength() {
+ return dayOfWeekSet.size();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java 2010-05-27 07:40:41 UTC (rev 33107)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java 2010-05-27 08:52:28 UTC (rev 33108)
@@ -62,4 +62,8 @@
return code;
}
+ public int getWeekendLength() {
+ return weekendDefinition.getWeekendLength();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-05-27 07:40:41 UTC (rev 33107)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-05-27 08:52:28 UTC (rev 33108)
@@ -27,13 +27,13 @@
import org.drools.planner.examples.nurserostering.domain.request.ShiftOffRequest;
import org.drools.planner.examples.nurserostering.domain.request.ShiftOnRequest;
import org.drools.planner.examples.nurserostering.domain.solver.EmployeeAssignmentTotal;
-import org.drools.planner.examples.nurserostering.domain.solver.EmployeeWeekendSequence;
-import org.drools.planner.examples.nurserostering.domain.solver.EmployeeWorkSequence;
-import org.drools.planner.examples.nurserostering.domain.solver.EmployeeFreeDaySequence;
import org.drools.planner.examples.nurserostering.domain.solver.EmployeeConsecutiveAssignmentEnd;
import org.drools.planner.examples.nurserostering.domain.solver.EmployeeConsecutiveAssignmentStart;
import org.drools.planner.examples.nurserostering.domain.solver.EmployeeConsecutiveWeekendAssignmentEnd;
import org.drools.planner.examples.nurserostering.domain.solver.EmployeeConsecutiveWeekendAssignmentStart;
+import org.drools.planner.examples.nurserostering.domain.solver.EmployeeFreeDaySequence;
+import org.drools.planner.examples.nurserostering.domain.solver.EmployeeWeekendSequence;
+import org.drools.planner.examples.nurserostering.domain.solver.EmployeeWorkSequence;
// @author Geoffrey De Smet
@@ -79,12 +79,12 @@
MinMaxContractLine(contractLineType == ContractLineType.TOTAL_ASSIGNMENTS, enabled == true,
$contract : contract)
$employee : Employee(contract == $contract)
- $totalAssignmentSize : Number() from accumulate(
+ $assignmentTotal : Number() from accumulate(
$assignment : Assignment(employee == $employee),
count($assignment)
)
then
- insertLogical(new EmployeeAssignmentTotal($employee, $totalAssignmentSize.intValue()));
+ insertLogical(new EmployeeAssignmentTotal($employee, $assignmentTotal.intValue()));
end
// Minimum number of assignments
@@ -420,7 +420,26 @@
end
// Identical shiftTypes during a weekend
-// TODO
+rule "identicalShiftTypesDuringWeekend"
+ when
+ $contractLine : BooleanContractLine(contractLineType == ContractLineType.IDENTICAL_SHIFT_TYPES_DURING_WEEKEND,
+ enabled == true, $contract : contract)
+ $employee : Employee(contract == $contract, $weekendLength : weekendLength)
+ ShiftDate(dayOfWeek == DayOfWeek.SUNDAY, $sundayIndex : dayIndex)
+ $shiftType : ShiftType()
+ $weekendAssignmentTotal : Number(intValue > 0 && < $weekendLength) from accumulate(
+ $assignment : Assignment(
+ weekend == true,
+ weekendSundayIndex == $sundayIndex,
+ employee == $employee,
+ shiftType == $shiftType),
+ count($assignment)
+ )
+ then
+ insertLogical(new IntConstraintOccurrence("identicalShiftTypesDuringWeekend", ConstraintType.NEGATIVE_SOFT,
+ ($weekendLength - $weekendAssignmentTotal.intValue()) * $contractLine.getWeight(),
+ $employee, $sundayIndex, $shiftType));
+end
// Two free days after a night shift
// TODO
More information about the jboss-svn-commits
mailing list