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:
Правильна ли эта структура 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}