Optaplanner REST API решает проблему

Мы используем Optaplanner 7.0.0 Final Workshop и KIE Server с примером optacloud на Wildfly 10.0.0.

До сих пор мы развернули контейнер на удаленном сервере выполнения и создали решатель для этого контейнера, используя RESTful API.

Сведения о решателе, предоставленные сервером KIE:

<org.kie.server.api.model.instance.SolverInstanceList>
    <solvers>
        <solver-instance>
            <container-id>test</container-id>
            <solver-id>testsolver</solver-id>
            <solver-config-file>optacloud/optacloud/cloudSolverConfig.solver.xml</solver-config-file>
            <status>NOT_SOLVING</status>
            <score />
         </solver-instance>
    </solvers>
</org.kie.server.api.model.instance.SolverInstanceList>

Мы получаем ответ 405 "Метод не разрешен" от wildfly со следующим URL:

http://xxx.xxx.xxx.xxx:8080/kie-server-7.0.0.Final-ee7/services/rest/server/containers/test/solvers/testsolver/

Правильна ли эта структура URL или мы что-то упустили?

мы публикуем следующие данные:

<solver-instance>
  <status>SOLVING</status>
  <planning-problem class="optacloud.optacloud.CloudSolution">
    <computerList>
      <optacloud.optacloud.Computer>
        <cpuPower>10</cpuPower>
        <memory>4</memory>
        <networkBandwidth>100</networkBandwidth>
        <cost>1000</cost>
      </optacloud.optacloud.Computer>
      <optacloud.optacloud.Computer>
        <cpuPower>20</cpuPower>
        <memory>8</memory>
        <networkBandwidth>100</networkBandwidth>
        <cost>3000</cost>
      </optacloud.optacloud.Computer>
    </computerList>
    <processList>
      <optacloud.optacloud.Process>
        <requiredCpuPower>1</requiredCpuPower>
        <requiredMemory>7</requiredMemory>
        <requiredNetworkBandwidth>1</requiredNetworkBandwidth>
      </optacloud.optacloud.Process>
    </processList>
  </planning-problem>
</solver-instance>

со следующими заголовками:

Content-Type: application/xml
X-KIE-ContentType: xstream

1 ответ

Решение

API сервера KIE изменился в 7 сериях и <solver-instance> обертка больше не требуется в полезной нагрузке отправки решения.

Вам необходимо отправить ПОЧТУ http://${kie-server}/services/rest/server/containers/${container_id}/solvers/${solver_id}/state/solving где полезная нагрузка - просто объект задачи планирования (решения): <planning-problem class="optacloud.optacloud.CloudSolution">...</planning-problem>,

Пожалуйста, посмотрите краткий старт https://github.com/kiegroup/kie-docs/blob/master/docs/optaplanner-wb-es-docs/src/main/asciidoc/Workbench/Quickstart/Quickstart-section.adoc#submit-solution содержащее пример подачи задачи планирования по-новому.

Новый обзор API:

Зарегистрируйте решатель: PUT http://${kie-server}/services/rest/server/ Containers/${container_id}/solvers/${solver_id}

Отправить решение: POST http://${kie-server}/services/rest/server/ Containers/${container_id}/solvers/${solver_id}/state/ solution

Получите лучшее решение: ПОЛУЧИТЕ http://${kie-server}/services/rest/server/ Containers/${container_id}/solvers/${solver_id} / bestsolution

Завершить работу решателя: POST http://${kie-server}/services/rest/server/container / $ {container_id} / solvers / $ {solver_id} / state / terminating-early

Удалите решатель: УДАЛИТЬ http://${kie-server}/services/rest/server/ Containers/${container_id}/solvers/${solver_id}

Другие вопросы по тегам