第13章 Red Hat Business Optimizer REST API の設定
Decision Server は、以下の Red Hat Business Optimizer REST API をサポートします。これらの API は、JMS および Java クライアント API から利用することもできます。
前提条件
Red Hat Decision Manager がインストールされ、kie-server ロールに HTTP 基本認証が設定されている。サーバーエンドポイントのベース URL が識別されている (例: http://SERVER:PORT/CONTEXT/services/rest/server/)。
-
特定のマーシャリングフォーマットが必要な場合は、以下のように、HTTP ヘッダー
Content-Typeと、任意でX-KIE-ContentTypeを HTTP リクエストに追加します。
Content-Type: application/xml X-KIE-ContentType: xstream
Content-Type: application/xml
X-KIE-ContentType: xstream
X-KIE-ContentType の値には、xstream、xml、json を設定することができます。
以下の例に示すリクエストおよび応答は、KIE コンテナーが Decision Central の従業員勤務表サンプルを使用してビルドされる前提です (/services/rest/server/containers/employee-rostering に PUT リクエストを呼び出すと、以下の応答が返されます)。
13.1. [GET] /containers リンクのコピーリンクがクリップボードにコピーされました!
作成されたコンテナーの一覧を返します。
例13.1 サーバー応答の例 (XStream)
13.2. [PUT] /containers/{containerId}/solvers/{solverId} リンクのコピーリンクがクリップボードにコピーされました!
コンテナー {containerId} に、指定の {solverId} で新しいソルバーを作成します。リクエストボディーはマーシャリングされた SolverInstance エンティティーになり、ソルバーの設定ファイルを指定する必要があります。
リクエストとそれに対応する応答の例を以下に示します。
例13.2 サーバーリクエストの例 (XStream)
<solver-instance> <solver-config-file>employeerostering/employeerostering/EmployeeRosteringSolverConfig.solver.xml</solver-config-file> </solver-instance>
<solver-instance>
<solver-config-file>employeerostering/employeerostering/EmployeeRosteringSolverConfig.solver.xml</solver-config-file>
</solver-instance>
例13.3 サーバー応答の例 (XStream)
13.3. [GET] /containers/{containerId}/solvers リンクのコピーリンクがクリップボードにコピーされました!
コンテナーで作成したソルバーの一覧を返します。
例13.4 サーバー応答の例 (XStream)
13.4. [GET] /containers/{containerId}/solvers/{solverId} リンクのコピーリンクがクリップボードにコピーされました!
コンテナー {containerId} のソルバー {solverId} に関する現在の状態を返します。
例13.5 サーバー応答の例 (XStream)
13.5. [POST] /containers/{containerId}/solvers/{solverId}/state/solving リンクのコピーリンクがクリップボードにコピーされました!
コンテナー {containerId} のソルバー {solverId} がまだ実行中でなければ、そのソルバーを起動します。リクエストボディーは最適化する PlanningSolution をマーシャリングしたものです。
以下は、2 台のコンピューターと 6 つのプロセスに関する OptaCloud の問題を解決する例です。ソルバーは同期せずに実行されます。最善解を取得するために、bestsolution URL にリクエストを送信します。
例13.6 サーバーリクエストの例 (XStream)
13.6. [POST] /containers/{containerId}/solvers/{solverId}/state/terminating-early リンクのコピーリンクがクリップボードにコピーされました!
ソルバーが実行中の場合は、ソルバーに早期の終了をリクエストします。ソルバーは削除されないため、引き続き最善解を取得することができます。
13.7. [GET] /containers/{containerId}/solvers/{solverId}/bestsolution リンクのコピーリンクがクリップボードにコピーされました!
リクエストの作成時に見つかった最善解を返します。ソルバーがまだ終了していない (つまり status フィールドは SOLVING のまま) 場合は、その時点での最善解を返しますが、後のコールでより良い解が返される可能性もあります。
例13.7 サーバー応答の例 (XStream)
13.8. [POST] /containers/{containerId}/solvers/{solverId}/problemfactchanges リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムプランニング機能。1 つまたは複数の ProblemFactChanges を送信して、現在ソルバーが最適化中のデータセットを更新します。
13.9. [GET] /containers/{containerId}/solvers/{solverId}/problemfactchanges/processed リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムプランニング機能。ソルバーが送信されているすべての ProblemFactChanges を処理したら、true を返します。そうでない場合は、false を返します。
13.10. [DELETE] /containers/{containerId}/solvers/{solverId} リンクのコピーリンクがクリップボードにコピーされました!
コンテナー {containerId} のソルバー {solverId} を破棄します。ソルバーがまだ終了していない場合は、終了してから破棄を行います。