7.3. KIE Server REST API を使用した DMN サービスの実行
KIE Server の REST エンドポイントで直接対話することで、呼び出しコードと、意思決定ロジックの定義の分離が最大になります。呼び出しコードに直接の依存関係がないため、Node.js、.NET など、完全に異なる開発プラットフォームに実装できます。このセクションの例では、Nix スタイルの curl コマンドを示しますが、REST クライアントに適用するための関連情報を提供します。
KIE Server の REST エンドポイントを使用する場合、標準の KIE Server マーシャリングアノテーションが付けられたドメインオブジェクト POJO Java クラスを定義することが推奨されます。たとえば、以下のコードは、適切にアノテーションが付けられたドメインオブジェクトの Person クラスを使用しています。
POJO Java クラスの例
KIE Server REST API の詳細は、KIE API を使用した Red Hat Process Automation Manager の操作 を参照してください。
前提条件
-
KIE Server がインストールされ、設定されている (
kie-serverロールが割り当てられているユーザーの既知のユーザー名と認証情報を含む)。インストールオプションは、Red Hat Process Automation Manager インストールの計画 を参照してください。 KJAR アーティファクトとして DMN プロジェクトをビルドして、KIE Server にデプロイしておく。
mvn clean install
mvn clean installCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトのパッケージ化およびデプロイメント、および実行可能モデルに関する詳細は、Red Hat Process Automation Manager プロジェクトのパッケージ化およびデプロイ を参照してください。
- KIE コンテナーの ID に DMN モデルを含んでいる。1 つ以上のモデルが存在する場合は、そのモデルの名前空間およびモデル名が必要です。
手順
KIE Server REST API エンドポイントにアクセスするためのベース URL を決定します。これには、以下の値が必要です (例ではローカルデプロイメントのデフォルト値を使用しています)。
-
ホスト (
localhost) -
ポート (
8080) -
ルートコンテキスト (
kie-server) -
ベース REST パス (
services/rest/)
ローカルデプロイメントにおけるベース URL の例:
http://localhost:8080/kie-server/services/rest/-
ホスト (
ユーザー認証要件を決定します。
ユーザーを KIE Server 設定に直接定義すると、ユーザー名およびパスワードを要求する HTTP Basic 認証が使用されます。要求を成功させるには、ユーザーに
kie-serverルールが必要です。以下の例は、curl 要求に認証情報を追加する方法を示します。
curl -u username:password <request>
curl -u username:password <request>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Single Sign-On を使用して KIE Server を設定している場合は、要求にベアラートークンが必要です。
curl -H "Authorization: bearer $TOKEN" <request>
curl -H "Authorization: bearer $TOKEN" <request>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要求と応答の形式を指定します。REST API エンドポイントには JSON と XML の両方の書式が利用でき、要求ヘッダーを使用して設定されます。
JSON
curl -H "accept: application/json" -H "content-type: application/json"
curl -H "accept: application/json" -H "content-type: application/json"Copy to Clipboard Copied! Toggle word wrap Toggle overflow XML
curl -H "accept: application/xml" -H "content-type: application/xml"
curl -H "accept: application/xml" -H "content-type: application/xml"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、デプロイしたデシジョンモデルのリストに対するコンテナーのクエリーです。
[GET]
server/containers/{containerId}/dmncurl 要求例:
curl -u krisv:krisv -H "accept: application/xml" -X GET "http://localhost:8080/kie-server/services/rest/server/containers/MovieDMNContainer/dmn"
curl -u krisv:krisv -H "accept: application/xml" -X GET "http://localhost:8080/kie-server/services/rest/server/containers/MovieDMNContainer/dmn"Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプルの XML 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプルの JSON 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モデルを実行します。
[POST]
server/containers/{containerId}/dmncurl 要求例:
curl -u krisv:krisv -H "accept: application/json" -H "content-type: application/json" -X POST "http://localhost:8080/kie-server/services/rest/server/containers/MovieDMNContainer/dmn" -d "{ \"model-namespace\" : \"http://www.redhat.com/_c7328033-c355-43cd-b616-0aceef80e52a\", \"model-name\" : \"dmn-movieticket-ageclassification\", \"decision-name\" : [ ], \"decision-id\" : [ ], \"dmn-context\" : {\"Age\" : 66}}"curl -u krisv:krisv -H "accept: application/json" -H "content-type: application/json" -X POST "http://localhost:8080/kie-server/services/rest/server/containers/MovieDMNContainer/dmn" -d "{ \"model-namespace\" : \"http://www.redhat.com/_c7328033-c355-43cd-b616-0aceef80e52a\", \"model-name\" : \"dmn-movieticket-ageclassification\", \"decision-name\" : [ ], \"decision-id\" : [ ], \"dmn-context\" : {\"Age\" : 66}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 要求例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow XML 要求例 (JAXB 形式):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記要求には、その形式にかかわらず、以下の要素が必要です。
- モデルの名前空間
- モデル名
- 入力値を含むコンテキストオブジェクト
JSON 応答例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow XML (JAXB 形式) 応答例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow