第12章 Decision Server 用 REST API
REST API を使用して Decision Server と通信することができます。
-
リクエストを送信するためのベース URL は、上で定義したエンドポイントです (例:
http://SERVER:PORT/kie-server/services/rest/server/)。 -
すべてのリクエストには、
kie-serverロールに対する HTTP 基本認証またはトークンベースの認証が必要です。
以下のメソッドでは、3 種類のリクエストフォーマット (JSON、JAXB、および XSTREAM) がサポートされます。以下の HTTP ヘッダーを指定する必要があります。
Accept:application/jsonまたはapplication/xmlに設定します。Accept ヘッダーで複数の受け入れ可能コンテンツタイプを指定する場合は、優先修飾子 (HTML 1.1 規格 で定義される qvalue) を含める必要があります。これを含めないと、予期せぬ挙動を示す場合があります。複数の受け入れ可能コンテンツタイプを指定した、適切なヘッダーフォーマットの例を以下に示します。
Accept: application/xml; q=0.5, application/json; q=0.9-
X-KIE-ContentType: XSTREAM マーシャラーを使用する際に必要です。この場合、ヘッダーをXSTREAMに設定します。値にJSONおよびJAXBを指定することができますが、必須ではありません。Content-typeをapplication/xmlに設定すると、デフォルトでは値にJAXBが使用されます。 -
Content-type:application/jsonまたはapplication/xmlに設定します。このヘッダーは、お使いのペイロードのフォーマットに対応します。 --data: お使いのペイロードです。ペイロードがファイルにある場合は、名前の始めに@記号を付けます。以下に例を示します。--data @commandsRequest.json
リクエストと応答が共に同じフォーマットになるように、アプリケーションのリクエストには必ず Content-Type HTTP ヘッダーと Accept HTTP ヘッダーの両方を指定します。指定しないと、サーバーからマーシャリングに関するエラーが送付されます。
例では Curl ユーティリティーが使われていますが、任意の REST クライアントを使用することができます。Curl コマンドには以下のパラメーターが使われます。
-
-u: Decision Server の認証に username:password を指定します。 -
-H: HTTP ヘッダーを指定します。 -
-X: リクエストの HTTP メソッドを指定します。メソッドは [GET]、[POST]、[PUT]、または [DELETE] のいずれかです。
Red Hat Decision Manager コマンド は、Decision Server が Red Hat Decision Manager 機能を持つ場合に限り有効です。その他のエンドポイントは、Decision Server が Red Hat Business Automation 機能を持つ場合に限り有効です。http://SERVER:PORT/kie-server/services/rest/server の URI にアクセスして、お使いの Decision Server の機能を確認してください。
12.1. Red Hat Decision Manager コマンド リンクのコピーリンクがクリップボードにコピーされました!
- [POST] /containers/instances/CONTAINER_ID
- リクエストのタイプ
-
単一の
org.kie.api.command.Commandコマンド、またはBatchExecutionCommandラッパーの複数コマンド。 - 応答のタイプ
-
org.kie.server.api.model.ServiceResponse<String> - 説明
-
指定した
CONTAINER_IDに送られたコマンドを実行し、コマンドの実行結果を返します。詳細は、以下に示すサポートされるコマンドを参照してください。
サポートされるコマンド一覧:
-
AgendaGroupSetFocusCommand -
ClearActivationGroupCommand -
ClearAgendaCommand -
ClearAgendaGroupCommand -
ClearRuleFlowGroupCommand -
DeleteCommand -
InsertObjectCommand -
ModifyCommand -
GetObjectCommand -
InsertElementsCommand -
FireAllRulesCommand -
QueryCommand -
SetGlobalCommand -
GetGlobalCommand -
GetObjectsCommand -
BatchExecutionCommand -
DisposeCommand
コマンドの詳細は、org.drools.core.command.runtime パッケージを参照してください。
[POST] Drools コマンドの実行
任意のディレクトリーに移動し、
commandsRequest.jsonを作成します。{ "lookup" : null, "commands" : [ { "insert" : { "object" : "testing", "disconnected" : false, "out-identifier" : null, "return-object" : true, "entry-point" : "DEFAULT" } }, { "fire-all-rules" : { } } ] }以下のコマンドを実行します。
$ curl -X POST -H 'X-KIE-ContentType: JSON' -H 'Content-type: application/json' -u 'kieserver:kieserver1!' --data @commandsRequest.json http://localhost:8080/kie-server/services/rest/server/containers/instances/myContainerこのコマンドによりリクエストが生成され、このリクエストがサーバーに Insert Object および Fire All Rules コマンドを送信します。
Lookupにより kjar で設定される ksession が指定されます。lookup 値に null を指定した場合は、デフォルトの KIE セッションが使用されます。
応答の例:
{
"type" : "SUCCESS",
"msg" : "Container hello successfully called.",
"result" : "{\n \"results\" : [ ],\n \"facts\" : [ ]\n}"
}