在护士排班示例的optaplanner数据文件中,我看到两个文件夹“ import”和“ unsolved”中的xml数据文件具有相似的名称,但“ unsolved”文件夹中的文件具有许多xml的参考标记标签。例如,“导入”文件夹中的long01.xml如下所示:
<ShiftTypes>
<Shift ID="E">
<StartTime>06:30:00</StartTime>
<EndTime>14:30:00</EndTime>
<Description>Early shift type</Description>
<Skills>
<Skill>Nurse</Skill>
</Skills>
</Shift>
<Shift ID="L">
<StartTime>14:30:00</StartTime>
<EndTime>22:30:00</EndTime>
<Description>Late shift type</Description>
<Skills>
<Skill>Nurse</Skill>
</Skills>
</Shift>
<Shift ID="D">
<StartTime>08:30:00</StartTime>
<EndTime>16:30:00</EndTime>
<Description>Day shift type</Description>
<Skills>
<Skill>Nurse</Skill>
</Skills>
</Shift>
<Shift ID="N">
<StartTime>22:30:00</StartTime>
<EndTime>06:30:00</EndTime>
<Description>Night shift</Description>
<Skills>
<Skill>Nurse</Skill>
</Skills>
</Shift>
<Shift ID="DH">
<StartTime>08:30:00</StartTime>
<EndTime>16:30:00</EndTime>
<Description>Head nurse day shift type</Description>
<Skills>
<Skill>HeadNurse</Skill>
</Skills>
</Shift>
</ShiftTypes>
但这是“ unsolved”文件夹中具有相同名称的xml文件的样子:
<firstShiftDate id="3">
<id>0</id>
<dayIndex>0</dayIndex>
<date>2010-01-01</date>
<shiftList id="4">
<Shift id="5">
<id>0</id>
<shiftDate reference="3"/>
<shiftType id="6">
<id>0</id>
<code>E</code>
<index>0</index>
<startTimeString>06:30:00</startTimeString>
<endTimeString>14:30:00</endTimeString>
<night>false</night>
<description>Early shift type</description>
<shiftLength>2</shiftLength>
</shiftType>
<index>0</index>
<requiredEmployeeSize>8</requiredEmployeeSize>
</Shift>
<Shift id="7">
<id>1</id>
<shiftDate reference="3"/>
<shiftType id="8">
<id>1</id>
<code>L</code>
<index>1</index>
<startTimeString>14:30:00</startTimeString>
<endTimeString>22:30:00</endTimeString>
<night>false</night>
<description>Late shift type</description>
<shiftLength>2</shiftLength>
</shiftType>
<index>1</index>
<requiredEmployeeSize>8</requiredEmployeeSize>
</Shift>
<Shift id="9">
<id>2</id>
<shiftDate reference="3"/>
<shiftType id="10">
<id>2</id>
<code>D</code>
<index>2</index>
<startTimeString>08:30:00</startTimeString>
<endTimeString>16:30:00</endTimeString>
<night>false</night>
<description>Day shift type</description>
<shiftLength>2</shiftLength>
</shiftType>
<index>2</index>
<requiredEmployeeSize>5</requiredEmployeeSize>
</Shift>
<Shift id="11">
<id>3</id>
<shiftDate reference="3"/>
<shiftType id="12">
<id>3</id>
<code>N</code>
<index>3</index>
<startTimeString>22:30:00</startTimeString>
<endTimeString>06:30:00</endTimeString>
<night>true</night>
<description>Night shift</description>
<shiftLength>2</shiftLength>
</shiftType>
<index>3</index>
<requiredEmployeeSize>6</requiredEmployeeSize>
</Shift>
<Shift id="13">
<id>4</id>
<shiftDate reference="3"/>
<shiftType id="14">
<id>4</id>
<code>DH</code>
<index>4</index>
<startTimeString>08:30:00</startTimeString>
<endTimeString>16:30:00</endTimeString>
<night>false</night>
<description>Head nurse day shift type</description>
<shiftLength>2</shiftLength>
</shiftType>
<index>4</index>
<requiredEmployeeSize>2</requiredEmployeeSize>
</Shift>
</shiftList>
</firstShiftDate>
<lastShiftDate id="15">
<id>27</id>
<dayIndex>27</dayIndex>
<date>2010-01-28</date>
<shiftList id="16">
<Shift id="17">
<id>135</id>
<shiftDate reference="15"/>
<shiftType reference="6"/>
<index>135</index>
<requiredEmployeeSize>8</requiredEmployeeSize>
</Shift>
<Shift id="18">
<id>136</id>
<shiftDate reference="15"/>
<shiftType reference="8"/>
<index>136</index>
<requiredEmployeeSize>8</requiredEmployeeSize>
</Shift>
<Shift id="19">
<id>137</id>
<shiftDate reference="15"/>
<shiftType reference="10"/>
<index>137</index>
<requiredEmployeeSize>5</requiredEmployeeSize>
</Shift>
<Shift id="20">
<id>138</id>
<shiftDate reference="15"/>
<shiftType reference="12"/>
<index>138</index>
<requiredEmployeeSize>6</requiredEmployeeSize>
</Shift>
<Shift id="21">
<id>139</id>
<shiftDate reference="15"/>
<shiftType reference="14"/>
<index>139</index>
<requiredEmployeeSize>2</requiredEmployeeSize>
</Shift>
</shiftList>
</lastShiftDate>
<planningWindowStart reference="3"/>
运行optaplanner示例时,它似乎允许您从“未解决”文件夹中的文件列表中进行选择。 “导入”文件夹中的xml数据文件是“原始” xml文件吗?
如果我单击“导入”按钮并选择一个xml文件,那么我认为它会打开文件并为其创建“未解决”版本?这是否发生在NurseRosterExporter.java中?如果是这样,为什么我们需要这样做?添加“参考”标签并创建所有新参考标签的确切代码在哪里?
为什么创建XML文件似乎有两个步骤-您拥有原始xml文件,然后需要将其导入,保存,然后将其加载到示例中-有没有更有效的方法这个吗?
答案 0 :(得分:0)
未解决的文件夹正在使用Java域对象的XStream XML格式。
导入文件夹使用国际护士名册竞赛定义的XML格式。
无论您从哪个文件夹中读取文件,它都会在Java中创建域对象,而这正是OptaPlanner的工作方式。 XML读/写只是为了方便示例。其他人使用JSON,Excel文件,... Optaweb-employee-rostering使用带有漂亮Web ui的数据库。