21.2. 使用 Swagger 接口通过 KIE Server REST API 发送请求

KIE Server REST API 支持使用 Swagger Web 界面,而不是独立 REST 客户端或 curl 工具与 Red Hat Process Automation Manager 中的 KIE 容器和业务资产(如规则、流程和程序)交互,而无需使用 Business Central 用户界面。

注意

默认情况下,KIE 服务器的 Swagger Web 界面由 org.kie.swagger.server.ext.disabled=false 系统属性启用。要在 KIE 服务器中禁用 Swagger Web 界面,请将此系统属性设置为 true

先决条件

  • KIE 服务器已安装并运行。
  • 您有对 KIE 服务器的 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 和 KIE containers[GET] /server/containers,以从 KIE 服务器检索 KIE 容器。
  3. Try it out,并提供您要过滤结果(如果需要)的任何可选参数。
  4. Response content type 下拉菜单中,选择服务器响应所需的格式,如 JSON 格式的 application/json
  5. Execute 并查看 KIE 服务器响应。

    服务器响应示例(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. 在本例中,从响应返回的其中一个部署的 KIE 容器复制或记下项目 group-idartifact-idversion (GAV)数据。
  7. 在 Swagger 页面中,导航到 KIE Server 和 KIE containers[PUT] /server/containers/{containerId} 端点,以发送另一个请求以使用复制的项目 GAV 数据部署新的 KIE 容器。根据您的用例调整任何请求详情。
  8. Try it out 并为请求输入以下组件:

    • containerID :输入新 KIE 容器的 ID,如 MyContainer
    • 正文 :将 参数内容类型设置为 所需的请求正文格式,如 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 服务器响应。

    服务器响应示例(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 服务器不会将对象 unmarshall 到预期的类型。

    正确的进程实例请求正文

    {
      "id": 4,
      "lease": {
        "com.myspace.restcall.LeaseModel": {
          "annualRent": 109608,
          "isAutoApproved": false
        }
      }
    }

    进程实例请求正文不正确

    {
      "id": 4,
      "lease": {
        "annualRent": 109608,
        "isAutoApproved": false
      }
    }