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
      }
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.