第5章 Decision Server 用の Decision Manager コントローラー REST API テンプレートおよびインスタンス
Red Hat Decision Manager は Decision Manager コントローラー REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使わずに Decision Server の テンプレート (設定) や Decision Server インスタンス (リモートサーバー)、関連する KIE コンテナー (デプロイメントユニット) を操作することができます。この API のサポートにより、Red Hat Decision Manager サーバーとリソースをより効率的に維持でき、Red Hat Decision Manager の統合と開発を最適化できるようになります。
Decision Manager コントローラー REST API を使用すると、以下のアクションを実行できます。
- Decision Server テンプレート、インスタンス、および関連する KIE コンテナーについての情報の取得
- Decision Server テンプレートおよびインスタンスに関連付けられ KIE コンテナーの更新、起動、停止
- Decision Server テンプレートの作成、更新、削除
- Decision Server インスタンスの作成、更新、削除
Decision Manager コントローラー REST API への要求には、以下のコンポーネントが必要です。
- 認証
Decision Manager コントローラー REST API は、コントローラーのタイプによって、以下のユーザーロールに HTTP の Basic 認証またはトークンベースの認証を必要とします。
-
Business Central をインストールしており、ビルトインの Decision Manager コントローラーを使用する場合は、
rest-all
のユーザーロール。 -
ヘッドレス Decision Manager コントローラーを Business Central とは別にインストールしている場合は、
kie-server
のユーザーロール。
お使いの Red Hat Decision Manager に設定されているユーザーロールを表示するには、
~/$SERVER_HOME/standalone/configuration/application-roles.properties
と~/application-users.properties
に移動します。ユーザーに
kie-server
ロールかrest-all
ロール、もしくはそれら両方を追加するには、~/$SERVER_HOME/bin
に移動し、ロールを指定して以下のコマンドを実行します。$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server,rest-all
Decision Manager コントローラーのアクセスで
kie-server
またはrest-all
ユーザーを設定するには、~/$SERVER_HOME/standalone/configuration/standalone-full.xml
を開き、(該当する場合は)org.kie.server
プロパティーのコメントを解除して、コントローラーユーザーログイン認証情報とコントローラーの位置を (必要に応じて) 追加します。<property name="org.kie.server.location" value="http://localhost:8080/kie-server/services/rest/server"/> <property name="org.kie.server.controller" value="http://localhost:8080/decision-central/rest/controller"/> <property name="org.kie.server.controller.user" value="baAdmin"/> <property name="org.kie.server.controller.pwd" value="password@1"/> <property name="org.kie.server.id" value="default-kieserver"/>
ユーザーロールと Red Hat Decision Manager のインストールオプションの詳細は、Red Hat Decision Manager インストールの計画 を参照してください。
-
Business Central をインストールしており、ビルトインの Decision Manager コントローラーを使用する場合は、
- HTTP ヘッダー
Decision Manager コントローラー REST API は、API 要求に以下の HTTP ヘッダーを必要とします。
Accept
: 要求元のクライアントが受け付けるデータ形式:-
application/json
(JSON) -
application/xml
(XML、JAXB 用)
-
Content-Type
:POST
またはPUT
API 要求データ向けのデータ形式:-
application/json
(JSON) -
application/xml
(XML、JAXB 用)
-
- HTTP メソッド
Decision Manager コントローラー REST API は、API 要求に以下の HTTP メソッドをサポートしています。
-
GET
: 指定したリソースのエンドポイントから指定した情報を取得する -
POST
: リソースまたはリソースインスタンスを更新する -
PUT
: リソースまたはリソースインスタンスを作成する -
DELETE
: リソースまたはリソースインスタンスを削除する
-
- ベース URL
-
Decision Manager コントローラー REST API 要求のベース URL は
http://SERVER:PORT/CONTROLLER/rest/
で、Business Central のビルトイン Decision Manager コントローラーを使用している場合はhttp://localhost:8080/decision-central/rest/
のようになります。 - エンドポイント
指定した Decision Server テンプレートにおける
/controller/management/servers/{serverTemplateId}
などの Decision Manager コントローラー REST API のエンドポイントは、Decision Manager コントローラー REST API のベース URL に追記する URI で、Red Hat Decision Manager の対応するサーバーリソースやサーバーリソースのタイプにアクセスするためのものです。/spaces/{serverTemplateId}
エンドポイントの要求 URL 例http://localhost:8080/decision-central/rest/controller/management/servers/default-kieserver
- 要求パラメーターおよび要求データ
Decision Manager コントローラー REST API 要求のなかには、特定リソースを特定またはフィルターリングし、特定のアクションを実行するために、要求 URL パスで特定のパラメーターを必要とします。URL パラメーターは、
?<PARAM>=<VALUE>&<PARAM>=<VALUE>
の形式でエンドポイントに追記します。DELETE 要求 URL のパラメーター例
http://localhost:8080/decision-central/rest/controller/server/new-kieserver-instance?location=http://localhost:8080/kie-server/services/rest/server
HTTP
POST
とPUT
の要求は、さらに要求のボディもしくはデータのあるファイルが必要になる場合があります。PUT 要求 URL と JSON 要求のボディデータの例
http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver
{ "server-id": "new-kieserver", "server-name": "new-kieserver", "container-specs": [], "server-config": {}, "capabilities": [ "RULE", "PROCESS", "PLANNING" ] }
5.1. REST クライアントまたは curl ユーティリティーを使用した Decision Manager コントローラー REST API による要求送信
Decision Manager コントローラーは REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使わずに Decision Server の テンプレート (設定) や Decision Server インスタンス (リモートサーバー)、関連する KIE コンテナー (デプロイメントユニット) を操作することができます。Decision Manager コントローラー REST API 要求は、REST クライアントや curl ユーティリティーを使用して送信することができます。
前提条件
- Decision Server をインストールし、実行している。
- Decision Manager コントローラーもしくはヘッドレス Decision Manager コントローラーがインストールされ、実行している。
-
Business Central をインストールしている場合は Decision Manager コントローラーにアクセスする
rest-all
ユーザーロールがある。もしくは、Business Central とは別にインストールされたヘッドレス Decision Manager コントローラーにアクセスするkie-server
ユーザーロールがある。
手順
-
要求の送信先となる関連する API エンドポイント を特定します。Decision Manager コントローラーから Decision Server テンプレートを取得する
[GET] /controller/management/servers
などです。 REST クライアントまたは curl ユーティリティーで、
controller/management/servers
へのGET
要求に以下のコンポーネントを記入します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
rest-all
ロールのある Decision Manager コントローラーユーザーまたはkie-server
ロールを持つヘッドレス Decision Manager コントローラーユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
-
HTTP method:
GET
に設定します。 -
URL: Decision Manager コントローラー REST API ベース URL とエンドポイントを入力します (例:
http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver
)。
curl ユーティリティーの場合:
-
-u
:rest-all
ロールのある Decision Manager コントローラーユーザーまたはkie-server
ロールを持つヘッドレス Decision Manager コントローラーユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
-
-X
:GET
に設定します。 -
URL: Decision Manager コントローラー REST API ベース URL とエンドポイントを入力します (例:
http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver
)。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/decision-central/rest/controller/management/servers"
-
Authentication:
要求を実行し、Decision Manager コントローラーの応答を確認します。
サーバー応答の例 (JSON):
{ "server-template": [ { "server-id": "default-kieserver", "server-name": "default-kieserver", "container-specs": [ { "container-id": "employeerostering_1.0.0-SNAPSHOT", "container-name": "employeerostering", "server-template-key": { "server-id": "default-kieserver", "server-name": "default-kieserver" }, "release-id": { "group-id": "employeerostering", "artifact-id": "employeerostering", "version": "1.0.0-SNAPSHOT" }, "configuration": { "RULE": { "org.kie.server.controller.api.model.spec.RuleConfig": { "pollInterval": null, "scannerStatus": "STOPPED" } }, "PROCESS": { "org.kie.server.controller.api.model.spec.ProcessConfig": { "runtimeStrategy": "SINGLETON", "kbase": "", "ksession": "", "mergeMode": "MERGE_COLLECTIONS" } } }, "status": "STARTED" }, { "container-id": "mortgage-process_1.0.0-SNAPSHOT", "container-name": "mortgage-process", "server-template-key": { "server-id": "default-kieserver", "server-name": "default-kieserver" }, "release-id": { "group-id": "mortgage-process", "artifact-id": "mortgage-process", "version": "1.0.0-SNAPSHOT" }, "configuration": { "RULE": { "org.kie.server.controller.api.model.spec.RuleConfig": { "pollInterval": null, "scannerStatus": "STOPPED" } }, "PROCESS": { "org.kie.server.controller.api.model.spec.ProcessConfig": { "runtimeStrategy": "PER_PROCESS_INSTANCE", "kbase": "", "ksession": "", "mergeMode": "MERGE_COLLECTIONS" } } }, "status": "STARTED" } ], "server-config": {}, "server-instances": [ { "server-instance-id": "default-kieserver-instance@localhost:8080", "server-name": "default-kieserver-instance@localhost:8080", "server-template-id": "default-kieserver", "server-url": "http://localhost:8080/kie-server/services/rest/server" } ], "capabilities": [ "RULE", "PROCESS", "PLANNING" ] } ] }
REST クライアントまたは curl ユーティリティーで、
/controller/management/servers/{serverTemplateId}
へのPUT
要求を以下のコンポーネントで送信し、新規の Decision Server テンプレートを作成します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
rest-all
ロールのある Decision Manager コントローラーユーザーまたはkie-server
ロールを持つヘッドレス Decision Manager コントローラーユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
Content-Type
:application/json
-
-
HTTP method:
PUT
に設定します。 -
URL: Decision Manager コントローラー REST API ベース URL とエンドポイントを入力します (例:
http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver
)。 - 要求の本文: 新規 Decision Server テンプレート用の設定がある JSON 要求の本文を追加します。
{ "server-id": "new-kieserver", "server-name": "new-kieserver", "container-specs": [], "server-config": {}, "capabilities": [ "RULE", "PROCESS", "PLANNING" ] }
curl ユーティリティーの場合:
-
-u
:rest-all
ロールのある Decision Manager コントローラーユーザーまたはkie-server
ロールを持つヘッドレス Decision Manager コントローラーユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
Content-Type
:application/json
-
-
-X
:PUT
に設定します。 -
URL: Decision Manager コントローラー REST API ベース URL とエンドポイントを入力します (例:
http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver
)。 -
-d
: 新規 Decision Server テンプレート用の設定がある JSON 要求の本文またはファイル (@file.json
) を追加します。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver" -d "{ \"server-id\": \"new-kieserver\", \"server-name\": \"new-kieserver\", \"container-specs\": [], \"server-config\": {}, \"capabilities\": [ \"RULE\", \"PROCESS\", \"PLANNING\" ]}"
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/decision-central/rest/controller/management/servers/new-kieserver" -d @my-server-template-configs.json
-
Authentication:
要求を実行し、Decision Manager コントローラーの応答が正常であることを確認します。
要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。