第1章 KIE コンテナーおよびビジネスアセット用の Decision Server REST API
Red Hat Decision Manager は Decision Server REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使わずに Red Hat Decision Manager の KIE コンテナーやビジネスアセット (ビジネスルールやプロセス、ソルバーなど) を操作することができます。この API のサポートにより、Red Hat Decision Manager のリソースをより効率的に維持でき、Red Hat Decision Manager の統合と開発を最適化できるようになります。
Decision Server REST API を使用すると、以下のアクションが可能になります。
- KIE コンテナーのデプロイまたは破棄
- KIE コンテナー情報の取得および更新
- Decision Server ステータスおよび基本的情報の確認
- ビジネスアセット情報の取得および更新
- ビジネスアセット (ルールやプロセスなど) の実行
Decision Server REST API 要求には以下のコンポーネントが必要です。
- 認証
Decision Server REST API は、ユーザーロール
kie-server
に HTTP の Basic 認証またはトークンベースの認証を必要とします。お使いの Red Hat Decision Manager に設定されているユーザーロールを表示するには、~/$SERVER_HOME/standalone/configuration/application-roles.properties
と~/application-users.properties
に移動します。ユーザーに
kie-server
ロールを追加するには、~/$SERVER_HOME/bin
に移動して以下のコマンドを実行します。$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server
ユーザーロールと Red Hat Decision Manager のインストールオプションの詳細は、Red Hat Decision Manager インストールの計画 を参照してください。
- HTTP ヘッダー
Decision Server REST API は、API 要求に以下の HTTP ヘッダーを必要とします。
Accept
: 要求元のクライアントが受け付けるデータ形式:-
application/json
(JSON) -
application/xml
(XML、JAXB または XSTREAM 用)
-
Content-Type
:POST
またはPUT
API 要求データ向けのデータ形式:-
application/json
(JSON) -
application/xml
(XML、JAXB または XSTREAM 用)
-
X-KIE-ContentType
:application/xml
XSTREAM API 要求および応答に必要なヘッダー:-
XSTREAM
-
- HTTP メソッド
Decision Server REST API は、API 要求に以下の HTTP メソッドを必要とします。
-
GET
: 指定したリソースのエンドポイントから指定した情報を取得する -
POST
: リソースまたはリソースインスタンスを更新する -
PUT
: リソースまたはリソースインスタンスを更新もしくは作成する -
DELETE
: リソースまたはリソースインスタンスを削除する
-
- Base URL
-
Decision Server REST API 要求のベース URL は
http://SERVER:PORT/kie-server/services/rest/
で、たとえばhttp://localhost:8080/kie-server/services/rest/
となります。 - エンドポイント
特定の KIE コンテナーにおける
/server/containers/{containerId}
など、Decision Server REST API のエンドポイントは、Decision Server REST API ベース URL に追記する URI で、Red Hat Decision Manager の対応するリソースやリソースタイプにアクセスするためのものです。/server/containers/{containerId}
エンドポイントの要求 URL 例http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
- 要求パラメーターおよび要求データ
多くの Decision Server REST API 要求では、特定リソースを特定またはフィルターリングし、特定のアクションを実行するために、要求 URL パスで特定のパラメーターを必要とします。URL パラメーターは、
?<PARAM>=<VALUE>&<PARAM>=<VALUE>
の形式でエンドポイントに追記します。GET 要求 URL のパラメーター例
http://localhost:8080/kie-server/services/rest/server/containers?groupId=com.redhat&artifactId=Project1&version=1.0&status=STARTED
HTTP
POST
とPUT
の要求は、さらに要求のボディもしくはデータのあるファイルが必要になる場合があります。POST 要求 URL と JSON 要求のボディデータの例
http://localhost:8080/kie-server/services/rest/server/containers/MyContainer/release-id
{ "release-id": { "artifact-id": "Project1", "group-id": "com.redhat", "version": "1.1" } }
1.1. REST クライアントまたは curl ユーティリティーを使用した Decision Server REST API による要求送信
Decision Server REST API を使用すると、Business Central ユーザーインターフェイスを使わずに Red Hat Decision Manager の KIE コンテナーやビジネスアセット (ビジネスルールやプロセス、ソルバーなど) を操作することができます。Decision Server REST API 要求は、REST クライアントまたは curl ユーティリティーを使って送信できます。
前提条件
- Decision Server をインストールし、実行している。
-
kie-server
ユーザーロールで Decision Server にアクセスできる。
手順
-
要求の送信先となる関連する API endpoint を特定します。Decision Server から KIE コンテナーを取得する
[GET] /server/containers
などです。 REST クライアントまたは curl ユーティリティーで、
/server/containers
へのGET
要求に以下のコンポーネントを記入します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
-
HTTP method:
GET
に設定します。 -
URL: Decision Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/server/containers
となります。
curl ユーティリティーの場合:
-
-u
:kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
-
-X
:GET
に設定します。 -
URL: Decision Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/server/containers
となります。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/kie-server/services/rest/server/containers"
-
Authentication:
要求を実行し、Decision Server の応答を確認します。
サーバー応答の例 (JSON):
{ "type": "SUCCESS", "msg": "List of created containers", "result": { "kie-containers": { "kie-container": [ { "container-id": "itorders_1.0.0-SNAPSHOT", "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "resolved-release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "status": "STARTED", "scanner": { "status": "DISPOSED", "poll-interval": null }, "config-items": [], "container-alias": "itorders" } ] } } }
-
この例では、プロジェクトの
group-id
、artifact-id
、およびversion
(GAV) のデータを応答で返されたデプロイ済み KIE コンテナーのいずれかからコピーするか、書き留めます。 REST クライアントまたは curl ユーティリティーで、
/server/containers/{containerId}
へのPUT
要求を以下のコンポーネントで送信し、コピーしたプロジェクトの GAV データで新規 KIE コンテナーをデプロイします。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
Content-Type
:application/json
-
-
HTTP method:
PUT
に設定します。 -
URL: Decision Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
となります。 - 要求のボディ: 新規 KIE コンテナー用の設定アイテムのある JSON 要求のボディを追加します。
{ "config-items": [ { "itemName": "RuntimeStrategy", "itemValue": "SINGLETON", "itemType": "java.lang.String" }, { "itemName": "MergeMode", "itemValue": "MERGE_COLLECTIONS", "itemType": "java.lang.String" }, { "itemName": "KBase", "itemValue": "", "itemType": "java.lang.String" }, { "itemName": "KSession", "itemValue": "", "itemType": "java.lang.String" } ], "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "scanner": { "poll-interval": "5000", "status": "STARTED" } }
curl ユーティリティーの場合:
-
-u
:kie-server
ロールを持つ Decision Server ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
Content-Type
:application/json
-
-
-X
:PUT
に設定します。 -
URL: Decision Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
となります。 -
-d
: 新規 KIE コンテナー用の設定アイテムのある JSON 要求のボディまたはファイル (@file.json
) を追加します。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer" -d "{ \"config-items\": [ { \"itemName\": \"RuntimeStrategy\", \"itemValue\": \"SINGLETON\", \"itemType\": \"java.lang.String\" }, { \"itemName\": \"MergeMode\", \"itemValue\": \"MERGE_COLLECTIONS\", \"itemType\": \"java.lang.String\" }, { \"itemName\": \"KBase\", \"itemValue\": \"\", \"itemType\": \"java.lang.String\" }, { \"itemName\": \"KSession\", \"itemValue\": \"\", \"itemType\": \"java.lang.String\" } ], \"release-id\": { \"group-id\": \"itorders\", \"artifact-id\": \"itorders\", \"version\": \"1.0.0-SNAPSHOT\" }, \"scanner\": { \"poll-interval\": \"5000\", \"status\": \"STARTED\" }}"
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer" -d @my-container-configs.json
-
Authentication:
要求を実行し、Decision Server の応答を確認します。
サーバー応答の例 (JSON):
{ "type": "SUCCESS", "msg": "Container MyContainer successfully deployed with module itorders:itorders:1.0.0-SNAPSHOT.", "result": { "kie-container": { "container-id": "MyContainer", "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "resolved-release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "status": "STARTED", "scanner": { "status": "STARTED", "poll-interval": 5000 }, "config-items": [], "messages": [ { "severity": "INFO", "timestamp": { "java.util.Date": 1540584717937 }, "content": [ "Container MyContainer successfully created with module itorders:itorders:1.0.0-SNAPSHOT." ] } ], "container-alias": null } } }
要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。