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 にアクセスできる。

手順

  1. Web ブラウザーで http://SERVER:PORT/kie-server/docs を開きます。たとえば、http://localhost:8080/kie-server/docs となります。kie-server ロールを持つ KIE Server ユーザーのユーザー名とパスワードでログインします。
  2. Swagger ページで、要求の送信先となる関連 API エンドポイントを選択します。たとえば、KIE Server and KIE containers[GET] /server/containers で KIE コンテナーを KIE Server から取得します。
  3. Try it out をクリックして、結果のフィルターリングに使用する任意のパラメーターを提供します。
  4. Response content type ドロップダウンメニューで、サーバー応答のフォーマットを選択します (例: JSON フォーマットでは application/json)。
  5. 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"
            }
          ]
        }
      }
    }
  6. この例では、プロジェクトの group-idartifact-id、および version (GAV) のデータを応答で返されたデプロイ済み KIE コンテナーのいずれかからコピーするか、書き留めます。
  7. Swagger ページで KIE Server and KIE containers[PUT] /server/containers/{containerId} エンドポイントに移動し、コピーしたプロジェクト GAV データで新規 KIE コンテナーをデプロイするための別の要求を送信します。ご自分のユースケースに合わせて、要求詳細を調整します。
  8. 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"
      }
    }
  9. Response content type ドロップダウンメニューで、サーバー応答のフォーマットを選択します (例: JSON フォーマットでは application/json)。
  10. 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
      }
    }