第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またはPUTAPI 要求データ向けのデータ形式:-
application/json(JSON) -
application/xml(XML、JAXB または XSTREAM 用)
-
X-KIE-ContentType:application/xmlXSTREAM 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=STARTEDHTTP
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 } } }要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。