Optaplanner:如何更改mederostering演示中的示例XML?

时间:2018-02-22 11:43:36

标签: optaplanner

我被Optaplanner中的Nurserostering示例所困扰。我想改变输入的XML来玩(例如将护士的数量从30增加到100),我发现手动编辑它非常复杂,所以我认为必须有某种'生成器',或者也许我应该制作自己的'XML生成器'。

例如,我看到示例中的每个节点都有一个唯一的id,所以如果我想增加护士的数量,那就不像复制最后一个Employee节点并将其粘贴70次那样简单;我应该检查内部的每个id并相应地增加它。

<Employee id="358">
  <id>6</id>
  <code>6</code>
  <name>6</name>
  <contract reference="36"/>
  <dayOffRequestMap id="359">
    <entry>
      <ShiftDate reference="183"/>
      <DayOffRequest id="360">
        <id>18</id>
        <employee reference="358"/>
        <shiftDate reference="183"/>
        <weight>1</weight>
      </DayOffRequest>
      ...

因此,我想问,是否有任何方法可以生成这个(或其他)XML?

2 个答案:

答案 0 :(得分:1)

我能想到的最好的方法是编写一个小的java应用程序,您可以在其中加载原始数据集,然后添加您想要的任意数量的员工(当然使用Java代码)。至少这是我在需要更大的数据集时或在玩模型数据时所做的事情(因为数据集也需要更新)。

哦,我差点忘了,有时候我会用xml viewer帮我做一些手工复制和粘贴工作(因为行数千行所以对它有很大帮助。)

答案 1 :(得分:1)

您查看了错误的XML文件!而不是例如 data / nurserostering / unsolved / medium01.xml ,带 data / nurserostering / import / medium01.xml

<Employees>
  <Employee ID="0">
    <ContractID>0</ContractID>
    <Name>0</Name>
    <Skills>
      <Skill>Nurse</Skill>
    </Skills><
  </Employee>
[...]

<DayOffRequests>
  <DayOff weight="1">
    <EmployeeID>0</EmployeeID>
    <Date>2010-01-21</Date>
  </DayOff>
[...]

然后可以在OptaPlanner中轻松编辑和导入此文件。