第21章 KIE コンテナーおよびビジネスアセット用の KIE Server REST API
Red Hat Process Automation Manager は KIE Server REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使用せずに Red Hat Process Automation Manager の KIE コンテナーやビジネスアセット (ビジネスルール、プロセス、ソルバーなど) を操作することができます。この API のサポートにより、Red Hat Process Automation Manager のリソースをより効率的に維持でき、Red Hat Process Automation Manager の統合と開発を最適化できるようになります。
KIE Server REST API を使用すると、以下のアクションが可能になります。
- KIE コンテナーのデプロイまたは破棄
- KIE コンテナー情報の取得および更新
- KIE Server ステータスおよび基本的情報の確認
- ビジネスアセット情報の取得および更新
- ビジネスアセット (ルールやプロセスなど) の実行
KIE Server REST API 要求には以下のコンポーネントが必要です。
- 認証
KIE Server REST API は、ユーザーロール
kie-serverに HTTP の Basic 認証またはトークンベースの認証を必要とします。お使いの Red Hat Process Automation Manager に設定されているユーザーロールを表示するには、~/$SERVER_HOME/standalone/configuration/application-roles.propertiesと~/application-users.propertiesに移動します。ユーザーに
kie-serverロールを追加するには、~/$SERVER_HOME/binに移動して以下のコマンドを実行します。./bin/jboss-cli.sh --commands="embed-server --std-out=echo,/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity(identity=<USERNAME>),/subsystem=elytron/filesystem-realm=ApplicationRealm:set-password(identity=<USERNAME>, clear={password='<PASSWORD>'}),/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity-attribute(identity=<USERNAME>, name=role, value=['kie-server'])"$ ./bin/jboss-cli.sh --commands="embed-server --std-out=echo,/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity(identity=<USERNAME>),/subsystem=elytron/filesystem-realm=ApplicationRealm:set-password(identity=<USERNAME>, clear={password='<PASSWORD>'}),/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity-attribute(identity=<USERNAME>, name=role, value=['kie-server'])"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーロールと Red Hat Process Automation Manager のインストールオプションの詳細は、Red Hat Process Automation Manager インストールの計画 を参照してください。
- HTTP ヘッダー
KIE 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 メソッド
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 Process Automation 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=STARTEDHTTP
POSTとPUTの要求は、さらに要求のボディもしくはデータのあるファイルが必要になる場合があります。POST 要求 URL と JSON 要求のボディデータの例
http://localhost:8080/kie-server/services/rest/server/containers/MyContainer/release-idCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.1. REST クライアントまたは curl ユーティリティーを使用した KIE Server REST API による要求送信 リンクのコピーリンクがクリップボードにコピーされました!
KIE Server REST API を使用すると、Business Central ユーザーインターフェイスを使わずに Red Hat Process Automation 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! Toggle word wrap Toggle overflow -
Authentication:
要求を実行し、KIE Server の応答を確認します。
サーバー応答の例 (JSON):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
この例では、プロジェクトの
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 要求のボディを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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! Toggle word wrap Toggle overflow 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.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Authentication:
要求を実行し、KIE Server の応答を確認します。
サーバー応答の例 (JSON):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。
プロセスインスタンスの REST API 要求複雑なデータオブジェクトをプロセスインスタンスのエンドポイント (
/server/containers/{containerId}/processes/{processId}/instances) に送信する REST API 要求の場合は、要求ボディーに、完全修飾クラス名 (com.myspace.Personなど) または単純なクラス名 (Personなど) を含めるようにしてください。Red Hat Process Automation Manager で、正しいビジネスオブジェクトに要求ボディーをマッピングするには、クラス名が必要です。要求からクラス名を除外すると、KIE Server では、想定するタイプにオブジェクトがアンマーシャルされません。プロセスインスタンスの要求ボディー (正)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロセスインスタンスの要求ボディー (誤)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow