OptaPlanner - в чем разница между XML-файлами в папках «import» и «unolved»?пример медсестры - PullRequest
0 голосов
/ 08 октября 2018

В файлах данных optaplanner для примера составления списков медсестер я вижу файлы данных xml в двух папках «import» и «unsolved», которые имеют схожие имена, за исключением того, что в папке «unsolved» есть ссылочные теги для многих из xmlтеги.Например, вот как выглядит long01.xml внутри папки «import»:

<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>

Но вот как выглядит xml-файл с таким же именем в папке «unsolved»:

  <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, он, кажется, позволяет вам выбирать из списка файлов, которые находятся в папке «unsolved».Являются ли файлы XML-данных из папки «import» «необработанными» XML-файлами?

Если я нажимаю кнопку «Импорт» и выбираю XML-файл, то я предполагаю, что он открывает файл и создает «нерешенная "версия этого?Это происходит в NurseRosterExporter.java?Если это так, зачем нам это делать и где находится точный код, который добавляет «ссылочные» теги и создает все новые ссылочные теги?

Почему существует два шага для создания XML-файла - у вас есть необработанный XML-файл, затем вам нужно его импортировать, сохранить, затем загрузить в пример - есть ли более эффективныйспособ сделать это?

1 Ответ

0 голосов
/ 08 октября 2018

Неразрешенная папка использует формат XML XStream объектов домена Java.

Папка импорта использует формат XML, как это определено Международным конкурсом медсестер.

Независимо от того, какойпапка, из которой вы читаете, она создает объект домена в Java, и это то, над чем работает OptaPlanner.XML для чтения / записи просто для облегчения примеров.Другие используют файлы JSON, Excel, ... Optaweb-employee-rostering использует базу данных с симпатичным веб-интерфейсом.

...