[jboss-svn-commits] JBL Code SVN: r32901 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test: java/org/drools/planner/examples/nurserostering and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun May 16 15:15:48 EDT 2010


Author: ge0ffrey
Date: 2010-05-16 15:15:48 -0400 (Sun, 16 May 2010)
New Revision: 32901

Added:
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml
Log:
testcase to prove bug in insertLogical

Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java (from rev 32899, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nqueens/NQueensSmokeTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java	2010-05-16 19:15:48 UTC (rev 32901)
@@ -0,0 +1,103 @@
+package org.drools.planner.examples.nurserostering.solver;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import junit.framework.TestCase;
+import org.apache.commons.io.IOUtils;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.planner.config.XmlSolverConfigurer;
+import org.drools.planner.core.Solver;
+import org.drools.planner.core.localsearch.LocalSearchSolverScope;
+import org.drools.planner.core.score.DefaultSimpleScore;
+import org.drools.planner.core.score.Score;
+import org.drools.planner.core.score.calculator.DefaultHardAndSoftConstraintScoreCalculator;
+import org.drools.planner.core.solution.Solution;
+import org.drools.planner.examples.common.persistence.SolutionDao;
+import org.drools.planner.examples.nqueens.persistence.NQueensDaoImpl;
+import org.drools.planner.examples.nurserostering.domain.Employee;
+import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
+import org.drools.planner.examples.nurserostering.domain.NurseRoster;
+import org.drools.planner.examples.nurserostering.persistence.NurseRosteringDaoImpl;
+import org.drools.planner.examples.nurserostering.solver.move.NurseRosterMoveHelper;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class NurseRosteringScoreRulesTest extends TestCase {
+
+
+    public void testMoveAndUndoMove() {
+        LocalSearchSolverScope localSearchSolverScope = new LocalSearchSolverScope();
+        localSearchSolverScope.setRuleBase(buildRuleBase());
+        localSearchSolverScope.setWorkingScoreCalculator(new DefaultHardAndSoftConstraintScoreCalculator());
+        NurseRoster nurseRoster = (NurseRoster) new NurseRosteringDaoImpl().readSolution(getClass().getResourceAsStream(
+                "/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml"));
+        localSearchSolverScope.setWorkingSolution(nurseRoster);
+        WorkingMemory workingMemory = localSearchSolverScope.getWorkingMemory();
+
+        Score firstScore = localSearchSolverScope.calculateScoreFromWorkingMemory();
+        // do EmployeeAssignmentSwitchMove
+        Employee leftEmployee = findEmployeeById(nurseRoster, 0L);
+        EmployeeAssignment leftEmployeeAssignment = findEmployeeAssignmentById(nurseRoster, 200204001L);
+        assertEquals(leftEmployee, leftEmployeeAssignment.getEmployee());
+        Employee rightEmployee = findEmployeeById(nurseRoster, 12L);
+        EmployeeAssignment rightEmployeeAssignment = findEmployeeAssignmentById(nurseRoster, 200204002L);
+        assertEquals(rightEmployee, rightEmployeeAssignment.getEmployee());
+        NurseRosterMoveHelper.moveEmployee(workingMemory, leftEmployeeAssignment, rightEmployee);
+        NurseRosterMoveHelper.moveEmployee(workingMemory, rightEmployeeAssignment, leftEmployee);
+        localSearchSolverScope.calculateScoreFromWorkingMemory();
+        // undo EmployeeAssignmentSwitchMove;
+        NurseRosterMoveHelper.moveEmployee(workingMemory, rightEmployeeAssignment, rightEmployee);
+        NurseRosterMoveHelper.moveEmployee(workingMemory, leftEmployeeAssignment, leftEmployee);
+        Score secondScore = localSearchSolverScope.calculateScoreFromWorkingMemory();
+        assertEquals(firstScore, secondScore);
+    }
+
+    private RuleBase buildRuleBase() {
+        PackageBuilder packageBuilder = new PackageBuilder();
+        InputStream scoreDrlIn = getClass().getResourceAsStream("/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl");
+        try {
+            packageBuilder.addPackageFromDrl(new InputStreamReader(scoreDrlIn, "utf-8"));
+        } catch (DroolsParserException e) {
+            throw new IllegalArgumentException("scoreDrl could not be loaded.", e);
+        } catch (IOException e) {
+            throw new IllegalArgumentException("scoreDrl could not be loaded.", e);
+        } finally {
+            IOUtils.closeQuietly(scoreDrlIn);
+        }
+        RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
+        RuleBase ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
+        if (packageBuilder.hasErrors()) {
+            throw new IllegalStateException("There are errors in the scoreDrl:"
+                    + packageBuilder.getErrors().toString());
+        }
+        ruleBase.addPackage(packageBuilder.getPackage());
+        return ruleBase;
+    }
+
+    private Employee findEmployeeById(NurseRoster nurseRoster, long id) {
+        for (Employee employee : nurseRoster.getEmployeeList()) {
+            if (employee.getId() == id) {
+                return employee;
+            }
+        }
+        throw new IllegalArgumentException("Invalid id (" + id + ")");
+    }
+
+    private EmployeeAssignment findEmployeeAssignmentById(NurseRoster nurseRoster, long id) {
+        for (EmployeeAssignment employeeAssignment : nurseRoster.getEmployeeAssignmentList()) {
+            if (employeeAssignment.getId() == id) {
+                return employeeAssignment;
+            }
+        }
+        throw new IllegalArgumentException("Invalid id (" + id + ")");
+    }
+
+}

Added: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml	2010-05-16 19:15:48 UTC (rev 32901)
@@ -0,0 +1,891 @@
+<NurseRoster id="1">
+  <id>0</id>
+  <code>long01</code>
+  <skillList id="2">
+    <Skill id="4001">
+      <id>0</id>
+      <code>Nurse</code>
+    </Skill>
+    <Skill id="4002">
+      <id>1</id>
+      <code>HeadNurse</code>
+    </Skill>
+  </skillList>
+  <shiftTypeList id="5">
+    <ShiftType id="3001">
+      <id>0</id>
+      <code>E</code>
+      <index>0</index>
+      <startTimeString>06:30:00</startTimeString>
+      <endTimeString>14:30:00</endTimeString>
+      <description>Early shift type</description>
+    </ShiftType>
+    <ShiftType id="3002">
+      <id>1</id>
+      <code>L</code>
+      <index>1</index>
+      <startTimeString>14:30:00</startTimeString>
+      <endTimeString>22:30:00</endTimeString>
+      <description>Late shift type</description>
+    </ShiftType>
+    <ShiftType id="3003">
+      <id>2</id>
+      <code>D</code>
+      <index>2</index>
+      <startTimeString>08:30:00</startTimeString>
+      <endTimeString>16:30:00</endTimeString>
+      <description>Day shift type</description>
+    </ShiftType>
+    <ShiftType id="3004">
+      <id>3</id>
+      <code>N</code>
+      <index>3</index>
+      <startTimeString>22:30:00</startTimeString>
+      <endTimeString>06:30:00</endTimeString>
+      <description>Night shift</description>
+    </ShiftType>
+    <ShiftType id="3005">
+      <id>4</id>
+      <code>DH</code>
+      <index>4</index>
+      <startTimeString>08:30:00</startTimeString>
+      <endTimeString>16:30:00</endTimeString>
+      <description>Head nurse day shift type</description>
+    </ShiftType>
+  </shiftTypeList>
+  <shiftTypeSkillRequirementList id="11">
+    <ShiftTypeSkillRequirement id="12">
+      <id>0</id>
+      <shiftType reference="3001"/>
+      <skill reference="4001"/>
+    </ShiftTypeSkillRequirement>
+    <ShiftTypeSkillRequirement id="13">
+      <id>1</id>
+      <shiftType reference="3002"/>
+      <skill reference="4001"/>
+    </ShiftTypeSkillRequirement>
+    <ShiftTypeSkillRequirement id="14">
+      <id>2</id>
+      <shiftType reference="3003"/>
+      <skill reference="4001"/>
+    </ShiftTypeSkillRequirement>
+    <ShiftTypeSkillRequirement id="15">
+      <id>3</id>
+      <shiftType reference="3004"/>
+      <skill reference="4001"/>
+    </ShiftTypeSkillRequirement>
+    <ShiftTypeSkillRequirement id="16">
+      <id>4</id>
+      <shiftType reference="3005"/>
+      <skill reference="4002"/>
+    </ShiftTypeSkillRequirement>
+  </shiftTypeSkillRequirementList>
+  <patternList id="17">
+    <Pattern id="18">
+      <id>0</id>
+      <code>0</code>
+      <weight>1</weight>
+    </Pattern>
+    <Pattern id="19">
+      <id>1</id>
+      <code>1</code>
+      <weight>1</weight>
+    </Pattern>
+    <Pattern id="20">
+      <id>2</id>
+      <code>2</code>
+      <weight>1</weight>
+    </Pattern>
+  </patternList>
+  <contractList id="21">
+    <Contract id="22">
+      <id>0</id>
+      <code>0</code>
+      <description>fulltime</description>
+      <contractLineList id="23">
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="24">
+          <id>0</id>
+          <contract reference="22"/>
+          <contractLineType>SINGLE_ASSIGNMENT_PER_DAY</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="25">
+          <id>1</id>
+          <contract reference="22"/>
+          <contractLineType>TOTAL_ASSIGNMENTS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>6</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>16</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="26">
+          <id>2</id>
+          <contract reference="22"/>
+          <contractLineType>CONSECUTIVE_WORKING_DAYS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>1</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>3</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="27">
+          <id>3</id>
+          <contract reference="22"/>
+          <contractLineType>CONSECUTIVE_FREE_DAYS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>1</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>5</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="28">
+          <id>4</id>
+          <contract reference="22"/>
+          <contractLineType>COMPLETE_WEEKENDS</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="29">
+          <id>5</id>
+          <contract reference="22"/>
+          <contractLineType>IDENTICAL_SHIFT_TYPES_DURING_WEEKEND</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+      </contractLineList>
+    </Contract>
+    <Contract id="30">
+      <id>1</id>
+      <code>1</code>
+      <description>75_time</description>
+      <contractLineList id="31">
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="32">
+          <id>6</id>
+          <contract reference="30"/>
+          <contractLineType>SINGLE_ASSIGNMENT_PER_DAY</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="33">
+          <id>7</id>
+          <contract reference="30"/>
+          <contractLineType>TOTAL_ASSIGNMENTS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>6</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>12</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="34">
+          <id>8</id>
+          <contract reference="30"/>
+          <contractLineType>CONSECUTIVE_WORKING_DAYS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>1</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>3</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine id="35">
+          <id>9</id>
+          <contract reference="30"/>
+          <contractLineType>CONSECUTIVE_FREE_DAYS</contractLineType>
+          <minimumEnabled>true</minimumEnabled>
+          <minimumValue>1</minimumValue>
+          <minimumWeight>1</minimumWeight>
+          <maximumEnabled>true</maximumEnabled>
+          <maximumValue>7</maximumValue>
+          <maximumWeight>1</maximumWeight>
+        </org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="36">
+          <id>10</id>
+          <contract reference="30"/>
+          <contractLineType>COMPLETE_WEEKENDS</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+        <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine id="37">
+          <id>11</id>
+          <contract reference="30"/>
+          <contractLineType>IDENTICAL_SHIFT_TYPES_DURING_WEEKEND</contractLineType>
+          <enabled>false</enabled>
+          <weight>1</weight>
+        </org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine>
+      </contractLineList>
+    </Contract>
+  </contractList>
+  <contractLineList id="38">
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="24"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="25"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="26"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="27"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="28"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="29"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="32"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="33"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="34"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.MinMaxContractLine reference="35"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="36"/>
+    <org.drools.planner.examples.nurserostering.domain.contract.BooleanContractLine reference="37"/>
+  </contractLineList>
+  <employeeList id="39">
+    <Employee id="1000">
+      <id>0</id>
+      <code>0</code>
+      <name>Headnurse 0</name>
+      <contract reference="22"/>
+    </Employee>
+    <Employee id="1010">
+      <id>10</id>
+      <code>10</code>
+      <name>Nurse 10</name>
+      <contract reference="22"/>
+    </Employee>
+    <Employee id="1011">
+      <id>11</id>
+      <code>11</code>
+      <name>Nurse 11</name>
+      <contract reference="22"/>
+    </Employee>
+    <Employee id="1012">
+      <id>12</id>
+      <code>12</code>
+      <name>Nurse 12</name>
+      <contract reference="22"/>
+    </Employee>
+    <Employee id="1020">
+      <id>20</id>
+      <code>20</code>
+      <name>Part time nurse 20</name>
+      <contract reference="30"/>
+    </Employee>
+  </employeeList>
+  <skillProficiencyList id="45">
+    <SkillProficiency id="46">
+      <id>0</id>
+      <employee reference="1000"/>
+      <skill reference="4001"/>
+    </SkillProficiency>
+    <SkillProficiency id="47">
+      <id>1</id>
+      <employee reference="1000"/>
+      <skill reference="4002"/>
+    </SkillProficiency>
+    <SkillProficiency id="48">
+      <id>2</id>
+      <employee reference="1010"/>
+      <skill reference="4001"/>
+    </SkillProficiency>
+    <SkillProficiency id="49">
+      <id>3</id>
+      <employee reference="1011"/>
+      <skill reference="4001"/>
+    </SkillProficiency>
+    <SkillProficiency id="50">
+      <id>4</id>
+      <employee reference="1012"/>
+      <skill reference="4001"/>
+    </SkillProficiency>
+    <SkillProficiency id="51">
+      <id>5</id>
+      <employee reference="1020"/>
+      <skill reference="4001"/>
+    </SkillProficiency>
+  </skillProficiencyList>
+  <shiftDateList id="52">
+    <ShiftDate id="2001">
+      <id>0</id>
+      <dayIndex>0</dayIndex>
+      <dateString>2010-01-01</dateString>
+      <dayOfWeek>FRIDAY</dayOfWeek>
+      <shiftList id="54">
+        <Shift id="55">
+          <id>0</id>
+          <shiftDate reference="2001"/>
+          <shiftType reference="3001"/>
+          <index>0</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="56">
+          <id>1</id>
+          <shiftDate reference="2001"/>
+          <shiftType reference="3002"/>
+          <index>1</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="57">
+          <id>2</id>
+          <shiftDate reference="2001"/>
+          <shiftType reference="3003"/>
+          <index>2</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="58">
+          <id>3</id>
+          <shiftDate reference="2001"/>
+          <shiftType reference="3004"/>
+          <index>3</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="59">
+          <id>4</id>
+          <shiftDate reference="2001"/>
+          <shiftType reference="3005"/>
+          <index>4</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2002">
+      <id>1</id>
+      <dayIndex>1</dayIndex>
+      <dateString>2010-01-02</dateString>
+      <dayOfWeek>SATURDAY</dayOfWeek>
+      <shiftList id="61">
+        <Shift id="200201">
+          <id>5</id>
+          <shiftDate reference="2002"/>
+          <shiftType reference="3001"/>
+          <index>5</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="200202">
+          <id>6</id>
+          <shiftDate reference="2002"/>
+          <shiftType reference="3002"/>
+          <index>6</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="200203">
+          <id>7</id>
+          <shiftDate reference="2002"/>
+          <shiftType reference="3003"/>
+          <index>7</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="200204">
+          <id>8</id>
+          <shiftDate reference="2002"/>
+          <shiftType reference="3004"/>
+          <index>8</index>
+          <requiredEmployeeSize>2</requiredEmployeeSize>
+        </Shift>
+        <Shift id="200205">
+          <id>9</id>
+          <shiftDate reference="2002"/>
+          <shiftType reference="3005"/>
+          <index>9</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2003">
+      <id>2</id>
+      <dayIndex>2</dayIndex>
+      <dateString>2010-01-03</dateString>
+      <dayOfWeek>SUNDAY</dayOfWeek>
+      <shiftList id="68">
+        <Shift id="69">
+          <id>10</id>
+          <shiftDate reference="2003"/>
+          <shiftType reference="3001"/>
+          <index>10</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="70">
+          <id>11</id>
+          <shiftDate reference="2003"/>
+          <shiftType reference="3002"/>
+          <index>11</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="71">
+          <id>12</id>
+          <shiftDate reference="2003"/>
+          <shiftType reference="3003"/>
+          <index>12</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="72">
+          <id>13</id>
+          <shiftDate reference="2003"/>
+          <shiftType reference="3004"/>
+          <index>13</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="73">
+          <id>14</id>
+          <shiftDate reference="2003"/>
+          <shiftType reference="3005"/>
+          <index>14</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2004">
+      <id>3</id>
+      <dayIndex>3</dayIndex>
+      <dateString>2010-01-04</dateString>
+      <dayOfWeek>MONDAY</dayOfWeek>
+      <shiftList id="75">
+        <Shift id="76">
+          <id>15</id>
+          <shiftDate reference="2004"/>
+          <shiftType reference="3001"/>
+          <index>15</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="77">
+          <id>16</id>
+          <shiftDate reference="2004"/>
+          <shiftType reference="3002"/>
+          <index>16</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="78">
+          <id>17</id>
+          <shiftDate reference="2004"/>
+          <shiftType reference="3003"/>
+          <index>17</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="79">
+          <id>18</id>
+          <shiftDate reference="2004"/>
+          <shiftType reference="3004"/>
+          <index>18</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="80">
+          <id>19</id>
+          <shiftDate reference="2004"/>
+          <shiftType reference="3005"/>
+          <index>19</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2005">
+      <id>4</id>
+      <dayIndex>4</dayIndex>
+      <dateString>2010-01-05</dateString>
+      <dayOfWeek>TUESDAY</dayOfWeek>
+      <shiftList id="82">
+        <Shift id="83">
+          <id>20</id>
+          <shiftDate reference="2005"/>
+          <shiftType reference="3001"/>
+          <index>20</index>
+          <requiredEmployeeSize>3</requiredEmployeeSize>
+        </Shift>
+        <Shift id="84">
+          <id>21</id>
+          <shiftDate reference="2005"/>
+          <shiftType reference="3002"/>
+          <index>21</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="85">
+          <id>22</id>
+          <shiftDate reference="2005"/>
+          <shiftType reference="3003"/>
+          <index>22</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="86">
+          <id>23</id>
+          <shiftDate reference="2005"/>
+          <shiftType reference="3004"/>
+          <index>23</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="87">
+          <id>24</id>
+          <shiftDate reference="2005"/>
+          <shiftType reference="3005"/>
+          <index>24</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2006">
+      <id>5</id>
+      <dayIndex>5</dayIndex>
+      <dateString>2010-01-06</dateString>
+      <dayOfWeek>WEDNESDAY</dayOfWeek>
+      <shiftList id="89">
+        <Shift id="90">
+          <id>25</id>
+          <shiftDate reference="2006"/>
+          <shiftType reference="3001"/>
+          <index>25</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="91">
+          <id>26</id>
+          <shiftDate reference="2006"/>
+          <shiftType reference="3002"/>
+          <index>26</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="92">
+          <id>27</id>
+          <shiftDate reference="2006"/>
+          <shiftType reference="3003"/>
+          <index>27</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="93">
+          <id>28</id>
+          <shiftDate reference="2006"/>
+          <shiftType reference="3004"/>
+          <index>28</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="94">
+          <id>29</id>
+          <shiftDate reference="2006"/>
+          <shiftType reference="3005"/>
+          <index>29</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2007">
+      <id>6</id>
+      <dayIndex>6</dayIndex>
+      <dateString>2010-01-07</dateString>
+      <dayOfWeek>THURSDAY</dayOfWeek>
+      <shiftList id="96">
+        <Shift id="97">
+          <id>30</id>
+          <shiftDate reference="2007"/>
+          <shiftType reference="3001"/>
+          <index>30</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="98">
+          <id>31</id>
+          <shiftDate reference="2007"/>
+          <shiftType reference="3002"/>
+          <index>31</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="99">
+          <id>32</id>
+          <shiftDate reference="2007"/>
+          <shiftType reference="3003"/>
+          <index>32</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="100">
+          <id>33</id>
+          <shiftDate reference="2007"/>
+          <shiftType reference="3004"/>
+          <index>33</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="101">
+          <id>34</id>
+          <shiftDate reference="2007"/>
+          <shiftType reference="3005"/>
+          <index>34</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2008">
+      <id>7</id>
+      <dayIndex>7</dayIndex>
+      <dateString>2010-01-08</dateString>
+      <dayOfWeek>FRIDAY</dayOfWeek>
+      <shiftList id="103">
+        <Shift id="104">
+          <id>35</id>
+          <shiftDate reference="2008"/>
+          <shiftType reference="3001"/>
+          <index>35</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="105">
+          <id>36</id>
+          <shiftDate reference="2008"/>
+          <shiftType reference="3002"/>
+          <index>36</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="106">
+          <id>37</id>
+          <shiftDate reference="2008"/>
+          <shiftType reference="3003"/>
+          <index>37</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="107">
+          <id>38</id>
+          <shiftDate reference="2008"/>
+          <shiftType reference="3004"/>
+          <index>38</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="108">
+          <id>39</id>
+          <shiftDate reference="2008"/>
+          <shiftType reference="3005"/>
+          <index>39</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2009">
+      <id>8</id>
+      <dayIndex>8</dayIndex>
+      <dateString>2010-01-09</dateString>
+      <dayOfWeek>SATURDAY</dayOfWeek>
+      <shiftList id="110">
+        <Shift id="111">
+          <id>40</id>
+          <shiftDate reference="2009"/>
+          <shiftType reference="3001"/>
+          <index>40</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="112">
+          <id>41</id>
+          <shiftDate reference="2009"/>
+          <shiftType reference="3002"/>
+          <index>41</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="113">
+          <id>42</id>
+          <shiftDate reference="2009"/>
+          <shiftType reference="3003"/>
+          <index>42</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="114">
+          <id>43</id>
+          <shiftDate reference="2009"/>
+          <shiftType reference="3004"/>
+          <index>43</index>
+          <requiredEmployeeSize>2</requiredEmployeeSize>
+        </Shift>
+        <Shift id="115">
+          <id>44</id>
+          <shiftDate reference="2009"/>
+          <shiftType reference="3005"/>
+          <index>44</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+    <ShiftDate id="2010">
+      <id>9</id>
+      <dayIndex>9</dayIndex>
+      <dateString>2010-01-10</dateString>
+      <dayOfWeek>SUNDAY</dayOfWeek>
+      <shiftList id="117">
+        <Shift id="118">
+          <id>45</id>
+          <shiftDate reference="2010"/>
+          <shiftType reference="3001"/>
+          <index>45</index>
+          <requiredEmployeeSize>1</requiredEmployeeSize>
+        </Shift>
+        <Shift id="119">
+          <id>46</id>
+          <shiftDate reference="2010"/>
+          <shiftType reference="3002"/>
+          <index>46</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="120">
+          <id>47</id>
+          <shiftDate reference="2010"/>
+          <shiftType reference="3003"/>
+          <index>47</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="121">
+          <id>48</id>
+          <shiftDate reference="2010"/>
+          <shiftType reference="3004"/>
+          <index>48</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+        <Shift id="122">
+          <id>49</id>
+          <shiftDate reference="2010"/>
+          <shiftType reference="3005"/>
+          <index>49</index>
+          <requiredEmployeeSize>0</requiredEmployeeSize>
+        </Shift>
+      </shiftList>
+    </ShiftDate>
+  </shiftDateList>
+  <shiftList id="123">
+    <Shift reference="55"/>
+    <Shift reference="56"/>
+    <Shift reference="57"/>
+    <Shift reference="58"/>
+    <Shift reference="59"/>
+    <Shift reference="200201"/>
+    <Shift reference="200202"/>
+    <Shift reference="200203"/>
+    <Shift reference="200204"/>
+    <Shift reference="200205"/>
+    <Shift reference="69"/>
+    <Shift reference="70"/>
+    <Shift reference="71"/>
+    <Shift reference="72"/>
+    <Shift reference="73"/>
+    <Shift reference="76"/>
+    <Shift reference="77"/>
+    <Shift reference="78"/>
+    <Shift reference="79"/>
+    <Shift reference="80"/>
+    <Shift reference="83"/>
+    <Shift reference="84"/>
+    <Shift reference="85"/>
+    <Shift reference="86"/>
+    <Shift reference="87"/>
+    <Shift reference="90"/>
+    <Shift reference="91"/>
+    <Shift reference="92"/>
+    <Shift reference="93"/>
+    <Shift reference="94"/>
+    <Shift reference="97"/>
+    <Shift reference="98"/>
+    <Shift reference="99"/>
+    <Shift reference="100"/>
+    <Shift reference="101"/>
+    <Shift reference="104"/>
+    <Shift reference="105"/>
+    <Shift reference="106"/>
+    <Shift reference="107"/>
+    <Shift reference="108"/>
+    <Shift reference="111"/>
+    <Shift reference="112"/>
+    <Shift reference="113"/>
+    <Shift reference="114"/>
+    <Shift reference="115"/>
+    <Shift reference="118"/>
+    <Shift reference="119"/>
+    <Shift reference="120"/>
+    <Shift reference="121"/>
+    <Shift reference="122"/>
+  </shiftList>
+  <dayOffRequestList id="124"/>
+  <dayOnRequestList class="java.util.Collections$EmptyList" id="125"/>
+  <shiftOffRequestList id="126"/>
+  <shiftOnRequestList class="java.util.Collections$EmptyList" reference="125"/>
+  <employeeAssignmentList id="127">
+    <EmployeeAssignment id="128">
+      <id>0</id>
+      <shift reference="55"/>
+      <employee reference="1010"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="129">
+      <id>1</id>
+      <shift reference="58"/>
+      <employee reference="1011"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="200201001">
+      <id>200201001</id>
+      <shift reference="200201"/>
+      <employee reference="1020"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="200204001">
+      <id>200204001</id>
+      <shift reference="200204"/>
+      <employee reference="1000"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="200204002">
+      <id>200204002</id>
+      <shift reference="200204"/>
+      <employee reference="1012"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="133">
+      <id>5</id>
+      <shift reference="69"/>
+      <employee reference="1000"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="134">
+      <id>6</id>
+      <shift reference="76"/>
+      <employee reference="1000"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="135">
+      <id>7</id>
+      <shift reference="83"/>
+      <employee reference="1011"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="136">
+      <id>8</id>
+      <shift reference="83"/>
+      <employee reference="1020"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="137">
+      <id>9</id>
+      <shift reference="83"/>
+      <employee reference="1000"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="138">
+      <id>10</id>
+      <shift reference="90"/>
+      <employee reference="1012"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="139">
+      <id>11</id>
+      <shift reference="97"/>
+      <employee reference="1010"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="140">
+      <id>12</id>
+      <shift reference="101"/>
+      <employee reference="1012"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="141">
+      <id>13</id>
+      <shift reference="104"/>
+      <employee reference="1010"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="142">
+      <id>14</id>
+      <shift reference="107"/>
+      <employee reference="1012"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="143">
+      <id>15</id>
+      <shift reference="111"/>
+      <employee reference="1010"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="144">
+      <id>16</id>
+      <shift reference="114"/>
+      <employee reference="1000"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="145">
+      <id>17</id>
+      <shift reference="114"/>
+      <employee reference="1020"/>
+    </EmployeeAssignment>
+    <EmployeeAssignment id="146">
+      <id>18</id>
+      <shift reference="118"/>
+      <employee reference="1011"/>
+    </EmployeeAssignment>
+  </employeeAssignmentList>
+  <score class="org.drools.planner.core.score.DefaultHardAndSoftScore" id="147">
+    <hardScore>0</hardScore>
+    <softScore>0</softScore>
+  </score>
+</NurseRoster>



More information about the jboss-svn-commits mailing list