第28章 Business Central スペースおよびプロジェクト用のナレッジストア REST API
Red Hat Process Automation Manager はナレッジストア REST API を提供し、これを使用することで Business Central ユーザーインターフェイスを使わずに Red Hat Process Automation Manager のプロジェクトやスペースを操作することができます。ナレッジストアは、Red Hat Process Automation Manager のアセット用のアーティファクトリーポジトリーです。この API のサポートにより、Business Central プロジェクトとスペースの活用と、それらのメンテナーンスの自動化が可能になります。
ナレッジストア REST API を使用すると、以下のアクションが可能になります。
- 全プロジェクトおよびスペースに関する情報の取得
- プロジェクトおよびスペースの作成、更新、削除
- プロジェクトのビルド、デプロイ、およびテスト
- 以前のナレッジストア REST API 要求または jobs についての情報の取得
ナレッジストア REST API 要求には以下のコンポーネントが必要です。
- 認証
ナレッジストア REST API は、ユーザーロール
rest-all
に HTTP の Basic 認証またはトークンベースの認証を必要とします。お使いの Red Hat Process Automation Manager に設定されているユーザーロールを表示するには、~/$SERVER_HOME/standalone/configuration/application-roles.properties
と~/application-users.properties
に移動します。ユーザーに
rest-all
ロールを追加するには、~/$SERVER_HOME/bin
に移動して以下のコマンドを実行します。$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role rest-all
ユーザーロールと Red Hat Process Automation Manager のインストールオプションの詳細は、Red Hat Process Automation Manager インストールの計画 を参照してください。
- HTTP ヘッダー
ナレッジストア REST API は、API 要求に以下の HTTP ヘッダーを必要とします。
Accept
: 要求元のクライアントが受け付けるデータ形式:-
application/json
(JSON)
-
Content-Type
:POST
またはPUT
API 要求データ向けのデータ形式:-
application/json
(JSON)
-
- HTTP メソッド
ナレッジストア REST API は、API 要求に以下の HTTP メソッドを必要とします。
-
GET
: 指定したリソースのエンドポイントから指定した情報を取得する -
POST
: リソースを作成または更新する -
PUT
: リソースを更新する -
DELETE
: リソースを削除する
-
- ベース URL
ナレッジストア REST API リクエストのベース URL は
http://SERVER:PORT/business-central/rest/
で、たとえばhttp://localhost:8080/business-central/rest/
となります。注記ナレッジストアの REST API のベース URL と Business Central にビルトインの Process Automation Manager コントローラーのものは、両方とも Business Central REST サービスの一部とみなされるため同じになります。
- エンドポイント
特定のスペースにおける
/spaces/{spaceName}
など、ナレッジストア REST API のエンドポイントは、ナレッジストア REST API ベース URL に追記する URI で、Red Hat Process Automation Manager の対応するリソースやリソースタイプにアクセスするためのものです。/spaces/{spaceName}
エンドポイントの要求 URL 例http://localhost:8080/business-central/rest/spaces/MySpace
- 要求データ
ナレッジストア REST API の HTTP
POST
要求は、データに JSON 要求ボディが必要になる場合があります。POST 要求 URL と JSON 要求のボディデータの例
http://localhost:8080/business-central/rest/spaces/MySpace/projects
{ "name": "Employee_Rostering", "groupId": "employeerostering", "version": "1.0.0-SNAPSHOT", "description": "Employee rostering problem optimisation using Planner. Assigns employees to shifts based on their skill." }
28.1. REST クライアントまたは curl ユーティリティーを使用した ナレッジストア REST API による要求送信
ナレッジストア REST API を使用すると、Business Central ユーザーインターフェイスを使用せずに Red Hat Process Automation Manager のプロジェクトやスペースを操作することができます。ナレッジストア REST API 要求は、REST クライアントまたは curl ユーティリティーを使用して送信できます。
前提条件
- Business Central をインストールし、実行している。
-
rest-all
ユーザーロールで Process Server にアクセスできる。
手順
-
要求の送信先となる関連する API エンドポイント を特定します。Business Central からスペースを取得する
[GET] /spaces
などです。 REST クライアントまたは curl ユーティリティーで、
/spaces
へのGET
要求に以下のコンポーネントを入力します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
rest-all
ロールを持つ Business Central ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
-
HTTP method:
GET
に設定します。 -
URL: Process Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/business-central/rest/spaces
となります。
curl ユーティリティーの場合:
-
-u
:rest-all
ロールを持つ Business Central ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
-
-X
:GET
に設定します。 -
URL: Process Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/business-central/rest/spaces
となります。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/business-central/rest/spaces"
-
Authentication:
要求を実行し、KIE Server の応答を確認します。
サーバー応答の例 (JSON):
[ { "name": "MySpace", "description": null, "projects": [ { "name": "Employee_Rostering", "spaceName": "MySpace", "groupId": "employeerostering", "version": "1.0.0-SNAPSHOT", "description": "Employee rostering problem optimisation using Planner. Assigns employees to shifts based on their skill.", "publicURIs": [ { "protocol": "git", "uri": "git://localhost:9418/MySpace/example-Employee_Rostering" }, { "protocol": "ssh", "uri": "ssh://localhost:8001/MySpace/example-Employee_Rostering" } ] }, { "name": "Mortgage_Process", "spaceName": "MySpace", "groupId": "mortgage-process", "version": "1.0.0-SNAPSHOT", "description": "Getting started loan approval process in BPMN2, decision table, business rules, and forms.", "publicURIs": [ { "protocol": "git", "uri": "git://localhost:9418/MySpace/example-Mortgage_Process" }, { "protocol": "ssh", "uri": "ssh://localhost:8001/MySpace/example-Mortgage_Process" } ] } ], "owner": "admin", "defaultGroupId": "com.myspace" }, { "name": "MySpace2", "description": null, "projects": [ { "name": "IT_Orders", "spaceName": "MySpace", "groupId": "itorders", "version": "1.0.0-SNAPSHOT", "description": "Case Management IT Orders project", "publicURIs": [ { "protocol": "git", "uri": "git://localhost:9418/MySpace/example-IT_Orders-1" }, { "protocol": "ssh", "uri": "ssh://localhost:8001/MySpace/example-IT_Orders-1" } ] } ], "owner": "admin", "defaultGroupId": "com.myspace" } ]
REST クライアントまたは curl ユーティリティーで、
/spaces/{spaceName}/projects
へのPOST
要求を以下のコンポーネントで送信し、スペース内でプロジェクトを作成します。ご自分のユースケースに合わせて、要求詳細を調整します。REST クライアントの場合:
-
Authentication:
rest-all
ロールを持つ Business Central ユーザーのユーザー名とパスワードを入力します。 HTTP Headers: 以下のヘッダーを設定します。
-
Accept
:application/json
-
accept-Language
:en-US
-
Content-Type
:application/json
-
-
HTTP method:
POST
に設定します。 -
URL: Process Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/business-central/rest/spaces/MySpace/projects
となります。 - 要求のボディ: 新規プロジェクト用の ID データのある JSON 要求ボディを追加します。
{ "name": "Employee_Rostering", "groupId": "employeerostering", "version": "1.0.0-SNAPSHOT", "description": "Employee rostering problem optimisation using Planner. Assigns employees to shifts based on their skill." }
curl ユーティリティーの場合:
-
-u
:rest-all
ロールを持つ Business Central ユーザーのユーザー名とパスワードを入力します。 -H
: 以下のヘッダーを設定します。-
Accept
:application/json
-
accept-Language
:en-US
(定義されていない場合は JVM のデフォルトのロケールが反映されます) -
Content-Type
:application/json
-
-
-X
:POST
に設定します。 -
URL: Process Server REST API ベース URL とエンドポイントを入力します。たとえば、
http://localhost:8080/business-central/rest/spaces/MySpace/projects
となります。 -
-d
: 新規プロジェクト用の ID データのある JSON 要求のボディまたはファイル (@file.json
) を追加します。
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Accept-Language: en-US" -H "Content-Type: application/json" -X POST "http://localhost:8080/business-central/rest/spaces/MySpace/projects" -d "{ \"name\": \"Employee_Rostering\", \"groupId\": \"employeerostering\", \"version\": \"1.0.0-SNAPSHOT\", \"description\": \"Employee rostering problem optimisation using Planner. Assigns employees to shifts based on their skill.\"}"
curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Accept-Language: en-US" -H "Content-Type: application/json" -X POST "http://localhost:8080/business-central/rest/spaces/MySpace/projects" -d @my-project.json
-
Authentication:
要求を実行し、KIE Server の応答を確認します。
サーバー応答の例 (JSON):
{ "jobId": "1541017411591-6", "status": "APPROVED", "spaceName": "MySpace", "projectName": "Employee_Rostering", "projectGroupId": "employeerostering", "projectVersion": "1.0.0-SNAPSHOT", "description": "Employee rostering problem optimisation using Planner. Assigns employees to shifts based on their skill." }
要求エラーが発生した場合は、返されたエラーコードメッセージを確認して、それに応じて要求を調整します。