第 21 章 KIE 服务器 REST API 用于 KIE 容器和业务资产


Red Hat Process Automation Manager 提供了一个 KIE Server REST API,您可以在不使用 Business Central 用户界面的情况下与 KIE 容器和业务资产(如业务规则、流程和解决器)进行交互。通过此 API 支持,您可以更有效地维护红帽流程自动化管理器资源,并优化您的与红帽流程自动化管理器的集成和开发。

使用 KIE Server REST API,您可以执行以下操作:

  • 部署或分离 KIE 容器
  • 检索和更新 KIE 容器信息
  • 返回 KIE 服务器状态和基本信息
  • 检索和更新业务资产信息
  • 执行业务资产(如规则和流程)

KIE Server REST API 请求需要以下组件:

身份验证

KIE Server REST API 需要 HTTP 基本身份验证或基于令牌的身份验证,用于用户角色 kie-server。要查看为您的 Red Hat Process Automation Manager 分发配置的用户角色,请导航到 ~/$SERVER_HOME/standalone/configuration/application-roles.properties~/application-users.properties

要添加具有 kie-server 角色的用户,请导航到 ~/$SERVER_HOME/bin,再运行以下命令:

$ ./bin/jboss-cli.sh --commands="embed-server --std-out=echo,/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity(identity=<USERNAME>),/subsystem=elytron/filesystem-realm=ApplicationRealm:set-password(identity=<USERNAME>, clear={password='<PASSWORD>'}),/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity-attribute(identity=<USERNAME>, name=role, value=['kie-server'])"

有关用户角色和 Red Hat Process Automation Manager 安装选项的更多信息,请参阅 规划 Red Hat Process Automation Manager 安装

HTTP 标头

KIE Server REST API 需要以下用于 API 请求的 HTTP 标头:

  • 接受: 请求客户端接受的数据格式:

    • application/json (JSON)
    • application/xml (XML,用于 JAXB 或 XSTREAM)
  • Content-Type: POSTPUT API 请求数据的数据格式:

    • application/json (JSON)
    • application/xml (XML,用于 JAXB 或 XSTREAM)
  • X-KIE-ContentType: application/xml XSTREAM API 请求和响应所需的标头:

    • XSTREAM
HTTP 方法

KIE 服务器 REST API 支持以下 API 请求的 HTTP 方法:

  • GET :从指定的资源端点检索指定的信息
  • POST :更新资源或资源实例
  • PUT :更新或创建资源实例
  • DELETE :删除资源或资源实例
基本 URL
KIE 服务器 REST API 请求的基本 URL 是 http://SERVER:PORT/kie-server/services/rest/,如 http://localhost:8080/kie-server/services/rest/。
Endpoints

KIE Server REST API 端点(如指定 KIE 容器的 /server/containers/{containerId} )是您附加到 KIE Server REST API 基础 URL 的 URI,以访问红帽流程自动化管理器中的相应资源或资源类型。

/server/containers/{containerId} 端点的请求 URL 示例

http://localhost:8080/kie-server/services/rest/server/containers/MyContainer

请求参数和请求数据

许多 KIE 服务器 REST API 请求需要请求 URL 路径中的特定参数来识别或过滤特定资源并执行特定操作。您可以在端点中添加 URL 参数,格式为 ?<PARAM>=<VALUE>&<PARAM>=<VALUE >。

带有参数的 GET 请求 URL 示例

http://localhost:8080/kie-server/services/rest/server/containers?groupId=com.redhat&artifactId=Project1&version=1.0&status=STARTED

HTTP POSTPUT 请求可能还需要请求正文或文件,并附带请求。

POST 请求 URL 和 JSON 请求正文数据示例

http://localhost:8080/kie-server/services/rest/server/containers/MyContainer/release-id

{
  "release-id": {
    "artifact-id": "Project1",
    "group-id": "com.redhat",
    "version": "1.1"
  }
}

KIE 服务器 REST API 允许您在红帽流程自动化管理器中与 KIE 容器和业务资产(如业务规则、流程和解决程序)交互,而无需使用 Business Central 用户界面。您可以使用任何 REST 客户端或 curl 工具发送 KIE 服务器 REST API 请求。

先决条件

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

流程

  1. 找到您要发送请求的相关 API 端点,如 [GET] /server/containers 从 KIE Server 检索 KIE 容器。
  2. 在 REST 客户端或 curl 工具中,输入到 /server/containersGET 请求的以下组件。根据您的用例调整任何请求详情。

    对于 REST 客户端:

    • 身份验证 :使用 kie-server 角色输入 KIE Server 用户的用户名和密码。
    • HTTP Headers :设置以下标头:

      • 接受:application/json
    • HTTP 方法 :设置为 GET
    • URL :输入 KIE Server REST API 基础 URL 和端点,如 http://localhost:8080/kie-server/services/rest/server/containers

    对于 curl 工具:

    • -u :使用 kie-server 角色输入 KIE Server 用户的用户名和密码。
    • - h : 设置以下标头:

      • 接受:application/json
    • -x :设置为 GET
    • URL :输入 KIE Server REST API 基础 URL 和端点,如 http://localhost:8080/kie-server/services/rest/server/containers
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/kie-server/services/rest/server/containers"
  3. 执行请求并查看 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"
            }
          ]
        }
      }
    }
  4. 在本例中,复制或记下来自其中一个部署的 KIE 容器的项目 group-idartifact-id 和版本 (GAV)数据。
  5. 在 REST 客户端或 curl 实用程序中,发送带有以下内容的另外一个 API 请求,它向 /server/containers/{containerId} 发送一个 PUT 请求,以使用复制的项目 GAV 数据部署新的 KIE 容器。根据您的用例调整任何请求详情。

    对于 REST 客户端:

    • 身份验证 :使用 kie-server 角色输入 KIE Server 用户的用户名和密码。
    • HTTP 标头 :设置以下标头:

      • 接受:application/json
      • Content-Type:application/json

        注意

        当您将 fields=not_null 添加到 Content-Type 时,会从 REST API 响应中排除 null 字段。

    • HTTP 方法 :设置为 PUT
    • URL :输入 KIE Server REST API 基础 URL 和端点,如 http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
    • 请求正文 :添加带有新 KIE 容器的配置项的 JSON 请求正文:
    {
      "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"
      }
    }

    对于 curl 工具:

    • -u :使用 kie-server 角色输入 KIE Server 用户的用户名和密码。
    • - h :设置以下标头:

      • 接受:application/json
      • Content-Type:application/json

        注意

        当您将 fields=not_null 添加到 Content-Type 时,会从 REST API 响应中排除 null 字段。

    • -x :设置为 PUT
    • URL :输入 KIE Server REST API 基础 URL 和端点,如 http://localhost:8080/kie-server/services/rest/server/containers/MyContainer
    • -d :添加 JSON 请求正文或文件(@file.json),其中包含新 KIE 容器的配置项:
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer" -d "{ \"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\" }}"
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/kie-server/services/rest/server/containers/MyContainer" -d @my-container-configs.json
  6. 执行请求并查看 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 Server 不会将对象卸载到预期的类型。

    进程实例的正确请求正文

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

    进程实例的请求正文不正确

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部