第1章 KIE コンテナーおよびビジネスアセット用の KIE Server REST API
Red Hat Decision Manager は KIE Server REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使用せずに Red Hat Decision Manager の KIE コンテナーやビジネスアセット (ビジネスルール、プロセス、ソルバーなど) を操作できます。この API のサポートにより、Red Hat Decision Manager のリソースをより効率的に維持でき、Red Hat Decision Manager の統合と開発を最適化できるようになります。
KIE Server REST API を使用すると、以下のアクションが可能になります。
- KIE コンテナーのデプロイまたは破棄
- KIE コンテナー情報の取得および更新
- KIE Server ステータスおよび基本的情報の確認
- ビジネスアセット情報の取得および更新
- ビジネスアセット (ルールやプロセスなど) の実行
KIE Server REST API 要求には以下のコンポーネントが必要です。
- 認証
KIE 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
$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server
Copy to Clipboard Copied! ユーザーロールと Red Hat Decision Manager のインストールオプションの詳細は、Red Hat Decision Manager インストールの計画 を参照してください。
- HTTP ヘッダー
KIE 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 メソッド
KIE Server REST API は、API 要求に以下の HTTP メソッドを必要とします。
-
GET
: 指定したリソースのエンドポイントから指定した情報を取得する -
POST
: リソースまたはリソースインスタンスを更新する -
PUT
: リソースまたはリソースインスタンスを更新もしくは作成する -
DELETE
: リソースまたはリソースインスタンスを削除する
-
- ベース URL
-
KIE Server REST API 要求のベース URL は
http://SERVER:PORT/kie-server/services/rest/
で、たとえばhttp://localhost:8080/kie-server/services/rest/
となります。 - エンドポイント
特定の KIE コンテナーにおける
/server/containers/{containerId}
などの KIE Server REST API のエンドポイントは、KIE Server REST API ベース URL に追記する URI で、Red Hat Decision Manager の対応するリソースやリソースタイプにアクセスするためのものです。/server/containers/{containerId}
エンドポイントの要求 URL 例http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
- 要求パラメーターおよび要求データ
多くの KIE 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" } }
{ "release-id": { "artifact-id": "Project1", "group-id": "com.redhat", "version": "1.1" } }
Copy to Clipboard Copied!
1.1. REST クライアントまたは curl ユーティリティーを使用した KIE Server REST API による要求送信
KIE Server REST API を使用すると、Business Central のユーザーインターフェイスを使用せずに、Red Hat Decision Manager 内の KIE コンテナーとビジネスアセット (ビジネスルール、プロセス、ソルバーなど) と対話できます。KIE Server REST API 要求は、REST クライアントまたは curl ユーティリティーを使用して送信できます。
前提条件
- KIE Server をインストールし、実行している。
-
kie-server
ユーザーロールで KIE Server にアクセスできる。
手順
-
[GET] /server/containers など、要求の送信先に適した
API endpoint
を特定し、KIE Server から KIE コンテナーを取得します。 REST クライアントまたは curl ユーティリティーで、
/server/containers
へのGET
要求に以下のコンポーネントを記入します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
kie-server
ロールを持つ KIE Server ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
-
HTTP method:
GET
に設定します。 -
URL: KIE Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/kie-server/services/rest/server/containers
となります。
curl ユーティリティーの場合:
-
-u
:kie-server
ロールを持つ KIE Server ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
-
-X
:GET
に設定します。 -
URL: KIE 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"
curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/kie-server/services/rest/server/containers"
Copy to Clipboard Copied! -
Authentication:
要求を実行し、KIE 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" } ] } } }
{ "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" } ] } } }
Copy to Clipboard Copied! -
この例では、プロジェクトの
group-id
、artifact-id
、およびversion
(GAV) のデータを応答で返されたデプロイ済み KIE コンテナーのいずれかからコピーするか、書き留めます。 REST クライアントまたは curl ユーティリティーで、
/server/containers/{containerId}
へのPUT
要求を以下のコンポーネントで送信し、コピーしたプロジェクトの GAV データで新規 KIE コンテナーをデプロイします。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
kie-server
ロールを持つ KIE Server ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
Content-Type
:application/json
注記fields=not_null
をContent-Type
に追加すると、null フィールドは REST API レスポンスから除外されます。
-
-
HTTP method:
PUT
に設定します。 -
URL: KIE 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" } }
{ "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" } }
Copy to Clipboard Copied! curl ユーティリティーの場合:
-
-u
:kie-server
ロールを持つ KIE Server ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
Content-Type
:application/json
注記fields=not_null
をContent-Type
に追加すると、null フィールドは REST API レスポンスから除外されます。
-
-
-X
:PUT
に設定します。 -
URL: KIE 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 "{ \"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\" }}"
Copy to Clipboard Copied! 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
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
Copy to Clipboard Copied! -
Authentication:
要求を実行し、KIE 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 } } }
{ "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 } } }
Copy to Clipboard Copied! 要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。