21.2. Swagger インターフェイスを使用した KIE Server REST API による要求送信
KIE Server REST API は Swagger Web インターフェイスをサポートします。スタンドアロンの REST クライアントや curl ユーティリティーの代わりのこれを使用すると、Business Central ユーザーインターフェイスを使わずに Red Hat Process Automation Manager の KIE コンテナーやビジネスアセット (ビジネスルールやプロセス、ソルバーなど) を操作することができます。
デフォルトでは、org.kie.swagger.server.ext.disabled=false
システムプロパティーが指定されており、KIE Server の Swagger Web インターフェイスが有効になっています。KIE Server で Swagger Web インターフェイスを無効にするには、このシステムプロパティーを true
に設定してください。
前提条件
- KIE Server をインストールし、実行している。
-
kie-server
ユーザーロールで KIE Server にアクセスできる。
手順
-
Web ブラウザーで
http://SERVER:PORT/kie-server/docs
を開きます。たとえば、http://localhost:8080/kie-server/docs
となります。kie-server
ロールを持つ KIE Server ユーザーのユーザー名とパスワードでログインします。 -
Swagger ページで、要求の送信先となる関連 API エンドポイントを選択します。たとえば、KIE Server and KIE containers
[GET] /server/containers で KIE コンテナーを KIE Server から取得します。 - Try it out をクリックして、結果のフィルターリングに使用する任意のパラメーターを提供します。
- Response content type ドロップダウンメニューで、サーバー応答のフォーマットを選択します (例: JSON フォーマットでは application/json)。
Execute をクリックし、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" } ] } } }
-
この例では、プロジェクトの
group-id
、artifact-id
、およびversion
(GAV) のデータを応答で返されたデプロイ済み KIE コンテナーのいずれかからコピーするか、書き留めます。 -
Swagger ページで KIE Server and KIE containers
[PUT] /server/containers/{containerId} エンドポイントに移動し、コピーしたプロジェクト GAV データで新規 KIE コンテナーをデプロイするための別の要求を送信します。ご自分のユースケースに合わせて、要求詳細を調整します。 Try it out をクリックして、以下の要求のコンポーネントを入力します。
-
containerId: 新規 KIE コンテナーの ID を入力します (例:
MyContainer
)。 - body: Parameter content type を希望の要求のボディ形式 (JSON の場合は application/json など) に設定し、要求のボディに新規 KIE コンテナーの設定アイテムを追加します。
{ "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" } }
-
containerId: 新規 KIE コンテナーの ID を入力します (例:
- Response content type ドロップダウンメニューで、サーバー応答のフォーマットを選択します (例: JSON フォーマットでは application/json)。
Execute をクリックし、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 } } }
要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。
プロセスインスタンスの REST API 要求複雑なデータオブジェクトをプロセスインスタンスのエンドポイント (
/server/containers/{containerId}/processes/{processId}/instances
) に送信する REST API 要求の場合は、要求ボディーに、完全修飾クラス名 (com.myspace.Person
など) または単純なクラス名 (Person
など) を含めるようにしてください。Red Hat Process Automation Manager で、正しいビジネスオブジェクトに要求ボディーをマッピングするには、クラス名が必要です。要求からクラス名を除外すると、KIE Server では、想定するタイプにオブジェクトがアンマーシャルされません。プロセスインスタンスの要求ボディー (正)
{ "id": 4, "lease": { "com.myspace.restcall.LeaseModel": { "annualRent": 109608, "isAutoApproved": false } } }
プロセスインスタンスの要求ボディー (誤)
{ "id": 4, "lease": { "annualRent": 109608, "isAutoApproved": false } }