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


KIE 服务器 REST API 支持 Swagger Web 界面,您可以使用它而不是独立 REST 客户端或 curl 实用程序与 KIE 容器和业务资产(如业务规则、流程和解决器)进行交互,而无需使用 Business Central 用户界面。

注意

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

先决条件

  • KIE 服务器已安装并运行。
  • 您有 kie-server 用户角色对 KIE 服务器的访问权限。

流程

  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 Server 检索 KIE 容器。
  3. Try it out,并提供您要过滤结果的任何可选参数。
  4. Response 内容类型下拉菜单中,选择服务器响应所需的格式,如用于 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. 在本例中,复制或记下来自其中一个部署的 KIE 容器的项目 group-idartifact-id 和版本 (GAV)数据。
  7. 在 Swagger 页面中,导航到 KIE Server 和 KIE containers [PUT] /server/containers/{containerId} 端点,以发送另一个请求以使用复制的项目 GAV 数据部署新的 KIE 容器。根据您的用例调整任何请求详情。
  8. 点击 Try it out,并为请求输入以下组件:

    • containerId :输入新 KIE 容器的 ID,如 MyContainer
    • body将参数内容类型设置为 所需的请求正文格式,如用于 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 内容类型下拉菜单中,选择服务器响应所需的格式,如用于 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
      }
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.