[jboss-svn-commits] JBL Code SVN: r33034 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main: java/org/drools/planner/examples/nurserostering/domain/solver and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 24 07:57:27 EDT 2010
Author: ge0ffrey
Date: 2010-05-24 07:57:26 -0400 (Mon, 24 May 2010)
New Revision: 33034
Added:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/RosterInfo.java
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/solver/EmployeeConsecutiveAssignmentEnd.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
nurse rostering: free days
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-05-24 11:17:31 UTC (rev 33033)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-05-24 11:57:26 UTC (rev 33034)
@@ -188,6 +188,8 @@
public Collection<? extends Object> getFacts() {
List<Object> facts = new ArrayList<Object>();
+ // TODO add RosterInfo as a property on NurseRoster
+ facts.add(new RosterInfo(shiftDateList.get(0), shiftDateList.get(shiftDateList.size() - 1)));
facts.addAll(skillList);
facts.addAll(shiftTypeList);
facts.addAll(shiftTypeSkillRequirementList);
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/RosterInfo.java (from rev 32994, 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/RosterInfo.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/RosterInfo.java 2010-05-24 11:57:26 UTC (rev 33034)
@@ -0,0 +1,58 @@
+package org.drools.planner.examples.nurserostering.domain;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("RosterInfo")
+public class RosterInfo extends AbstractPersistable implements Comparable<RosterInfo> {
+
+ private ShiftDate firstShiftDate;
+ private ShiftDate lastShiftDate;
+
+ public RosterInfo(ShiftDate firstShiftDate, ShiftDate lastShiftDate) {
+ this.firstShiftDate = firstShiftDate;
+ this.lastShiftDate = lastShiftDate;
+ }
+
+ public ShiftDate getFirstShiftDate() {
+ return firstShiftDate;
+ }
+
+ public void setFirstShiftDate(ShiftDate firstShiftDate) {
+ this.firstShiftDate = firstShiftDate;
+ }
+
+ public ShiftDate getLastShiftDate() {
+ return lastShiftDate;
+ }
+
+ public void setLastShiftDate(ShiftDate lastShiftDate) {
+ this.lastShiftDate = lastShiftDate;
+ }
+
+ public int compareTo(RosterInfo other) {
+ return new CompareToBuilder()
+ .append(firstShiftDate, other.firstShiftDate)
+ .append(lastShiftDate, other.lastShiftDate)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return firstShiftDate + " - " + lastShiftDate;
+ }
+
+ public int getFirstShiftDateDayIndex() {
+ return firstShiftDate.getDayIndex();
+ }
+
+ public int getLastShiftDateDayIndex() {
+ return lastShiftDate.getDayIndex();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/solver/EmployeeConsecutiveAssignmentEnd.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/solver/EmployeeConsecutiveAssignmentEnd.java 2010-05-24 11:17:31 UTC (rev 33033)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/solver/EmployeeConsecutiveAssignmentEnd.java 2010-05-24 11:57:26 UTC (rev 33034)
@@ -65,13 +65,13 @@
.toComparison();
}
- public int getShiftDateDayIndex() {
- return shiftDate.getDayIndex();
- }
-
@Override
public String toString() {
return employee + " ... - " + shiftDate;
}
+ public int getShiftDateDayIndex() {
+ return shiftDate.getDayIndex();
+ }
+
}
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-24 11:17:31 UTC (rev 33033)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-05-24 11:57:26 UTC (rev 33034)
@@ -10,6 +10,7 @@
import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Pattern;
+import org.drools.planner.examples.nurserostering.domain.RosterInfo;
import org.drools.planner.examples.nurserostering.domain.Shift;
import org.drools.planner.examples.nurserostering.domain.ShiftDate;
import org.drools.planner.examples.nurserostering.domain.ShiftType;
@@ -219,7 +220,7 @@
EmployeeConsecutiveAssignmentStart(
employee == $employee,
- shiftDateDayIndex >= $firstDayIndex,
+ shiftDateDayIndex > $firstDayIndex,
$lastShiftDate : shiftDate,
$lastDayIndex : shiftDateDayIndex
)
@@ -227,11 +228,50 @@
// There are no working days between the first and last day
not EmployeeConsecutiveAssignmentStart(
employee == $employee,
- shiftDateDayIndex >= $firstDayIndex && < $lastDayIndex
+ shiftDateDayIndex > $firstDayIndex && < $lastDayIndex
)
then
+ // TODO $firstShiftDate + 1 and $lastShiftDate - 1
insertLogical(new EmployeeFreeDaySequence($employee, $firstShiftDate, $lastShiftDate));
end
+//rule "insertFirstEmployeeFreeDaySequence"
+// salience 1 // Do these rules first (optional, for performance)
+// when
+// EmployeeConsecutiveAssignmentStart(
+// $employee : employee,
+// $lastShiftDate : shiftDate,
+// $lastDayIndex : shiftDateDayIndex
+// )
+//
+// // There are no working days before the first day
+// not EmployeeConsecutiveAssignmentEnd(
+// employee == $employee,
+// shiftDateDayIndex < $lastDayIndex
+// )
+// RosterInfo(firstShiftDateDayIndex < $lastDayIndex, $firstShiftDate : firstShiftDate)
+// then
+// // TODO $lastShiftDate - 1
+// insertLogical(new EmployeeFreeDaySequence($employee, $firstShiftDate, $lastShiftDate));
+//end
+//rule "insertLastEmployeeFreeDaySequence"
+// salience 1 // Do these rules first (optional, for performance)
+// when
+// EmployeeConsecutiveAssignmentEnd(
+// $employee : employee,
+// $firstShiftDate : shiftDate,
+// $firstDayIndex : shiftDateDayIndex
+// )
+//
+// // There are no working days after the last day
+// not EmployeeConsecutiveAssignmentStart(
+// employee == $employee,
+// shiftDateDayIndex > $firstDayIndex
+// )
+// RosterInfo(lastShiftDateDayIndex > $firstDayIndex, $lastShiftDate : lastShiftDate)
+// then
+// // TODO $firstShiftDate + 1
+// insertLogical(new EmployeeFreeDaySequence($employee, $firstShiftDate, $lastShiftDate));
+//end
// Minimum number of consecutive free days
rule "minimumConsecutiveFreeDays"
More information about the jboss-svn-commits
mailing list