第 25 章 为 KIE 服务器模板和实例处理自动化管理器控制器 REST API

Red Hat Process Automation Manager 提供了一个 Process Automation Manager 控制器 REST API,可用于与 KIE 服务器模板(配置)、KIE 服务器实例(远程服务器)以及 Red Hat Process Automation Manager 中的关联 KIE 容器(部署单元)交互,而无需使用 Business Central 用户界面。通过这个 API 支持,您可以更有效地维护 Red Hat Process Automation Manager 服务器和资源,并使用 Red Hat Process Automation Manager 优化集成和开发。

使用 Process Automation Manager 控制器 REST API,您可以执行以下操作:

  • 检索 KIE Server 模板、实例和相关 KIE 容器的信息
  • 更新、启动或停止与 KIE Server 模板和实例关联的 KIE 容器
  • 创建、更新或删除 KIE 服务器模板
  • 创建、更新或删除 KIE 服务器实例

对 Process Automation Manager 控制器 REST API 的请求需要以下组件:

身份验证

Process Automation Manager 控制器 REST API 需要以下用户角色的 HTTP 基本身份验证或基于令牌的身份验证,具体取决于控制器类型:

  • 如果您安装了 Business Central 且希望使用内置 Process Automation Manager 控制器,则 REST -all 用户角色
  • 如果您独立于 Business Central 安装无头 Process Automation Manager 控制器,则 kie-server 用户角色

要查看 Red Hat Process Automation Manager 发行版配置的用户角色,请导航到 ~/$SERVER_HOME/standalone/configuration/application-roles.properties~/application-users.properties

要添加具有 kie-server 角色或 rest-all 角色或两者的用户,请导航到 ~/$SERVER_HOME/bin,并使用指定的角色运行以下命令:

$ ./add-user.sh -a --user <USERNAME> --password <PASSWORD> --role kie-server,rest-all

要配置带有 Process Automation Manager 控制器访问权限的 kie-serverrest-all 用户,请导航到 ~/$SERVER_HOME/standalone/configuration/standalone-full.xml,取消注释 org.kie.server 属性(如果适用),并添加控制器用户登录凭证和控制器位置(如果需要):

<property name="org.kie.server.location" value="http://localhost:8080/kie-server/services/rest/server"/>
<property name="org.kie.server.controller" value="http://localhost:8080/business-central/rest/controller"/>
<property name="org.kie.server.controller.user" value="baAdmin"/>
<property name="org.kie.server.controller.pwd" value="password@1"/>
<property name="org.kie.server.id" value="default-kieserver"/>

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

HTTP 标头

Process Automation Manager 控制器 REST API 需要以下 HTTP 标头用于 API 请求:

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

    • application/json (JSON)
    • application/xml (用于 JAXB 的XML)
  • Content-TypePOSTPUT API 请求数据的数据格式:

    • application/json (JSON)
    • application/xml (用于 JAXB 的XML)
HTTP 方法

Process Automation Manager 控制器 REST API 支持以下 API 请求的方法:

  • GET :从指定的资源端点检索指定的信息
  • POST :更新资源或资源实例
  • PUT :创建资源或资源实例
  • DELETE :删除资源或资源实例
基本 URL
Process Automation Manager 控制器 REST API 请求的基本 URL 是 http://SERVER:PORT/CONTROLLER/rest/,例如,如果您使用内置于 Business Central 的 Process Automation Manager,则为 http://localhost:8080/business-central/rest/
Endpoints

处理 Automation Manager 控制器 REST API 端点(如指定 KIE Server 模板的 /controller/management/servers/{serverTemplateId} )是您附加到 Process Automation Manager 控制器 REST API 基本 URL 中的 URI,以访问 Red Hat Process Automation Manager 中的对应服务器资源或服务器资源类型。

/controller/management/servers/{serverTemplateId} 端点的请求 URL 示例

http://localhost:8080/business-central/rest/controller/management/servers/default-kieserver

请求参数和请求数据

有些流程自动化管理器控制器 REST API 请求需要请求 URL 路径中的特定参数来识别或过滤特定资源并执行特定操作。您可以将 URL 参数附加到端点,格式为 ?<PARAM>=<VALUE>&<PARAM>=<VALUE >。

带有参数的 DELETE 请求 URL 示例

http://localhost:8080/business-central/rest/controller/server/new-kieserver-instance?location=http://localhost:8080/kie-server/services/rest/server

HTTP POSTPUT 请求可能还需要请求正文或带有数据的文件来附带请求。

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

http://localhost:8080/business-central/rest/controller/management/servers/new-kieserver

{
  "server-id": "new-kieserver",
  "server-name": "new-kieserver",
  "container-specs": [],
  "server-config": {},
  "capabilities": [
    "RULE",
    "PROCESS",
    "PLANNING"
  ]
}

25.1. 使用 REST 客户端或 curl 工具通过 Process Automation Manager 控制器 REST API 发送请求

Process Automation Manager 控制器 REST API 可让您在不使用 Business Central 用户界面的情况下与 KIE 服务器模板(配置)、KIE 服务器实例(远程服务器)和相关 KIE 容器(部署单元)交互。您可以使用任何 REST 客户端或 curl 工具发送 Process Automation Manager 控制器 REST API 请求。

先决条件

  • KIE 服务器已安装并运行。
  • Process Automation Manager 控制器或无头 Process Automation Manager 控制器已安装并运行。
  • 如果您安装了 Business Central,或 kie-server 用户角色可以访问与 Business Central 单独安装的无头 Process Automation Manager 控制器,则您具有对 Process Automation Manager 控制器的 rest-all 用户角色访问。

流程

  1. 识别您要发送请求的相关 API 端点,如 [GET] /controller/management/servers,以从 Process Automation Manager 控制器检索 KIE Server 模板。
  2. 在 REST 客户端或 curl 工具中,为对 controller/management/serversGET 请求输入以下组件。根据您的用例调整任何请求详情。

    对于 REST 客户端:

    • 身份验证 :使用 rest-all 角色或无头 Process Automation Manager 控制器用户输入 Process Automation Manager 控制器用户的用户名和密码,并带有 kie-server 角色。
    • HTTP 标头 :设置以下标头:

      • 接受:application/json
    • HTTP 方法 :设置为 GET
    • URL :输入 Process Automation Manager 控制器 REST API 基本 URL 和端点,如 http://localhost:8080/business-central/rest/controller/management/servers

    对于 curl 工具:

    • -u :使用 rest-all 角色或无头 Process Automation Manager 控制器用户输入 Process Automation Manager 控制器用户的用户名和密码,并带有 kie-server 角色。
    • -h: 设置以下标头:

      • 接受:application/json
    • -x: 设置为 GET
    • URL :输入 Process Automation Manager 控制器 REST API 基本 URL 和端点,如 http://localhost:8080/business-central/rest/controller/management/servers
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -X GET "http://localhost:8080/business-central/rest/controller/management/servers"
  3. 执行请求并查看 Process Automation Manager 控制器响应。

    服务器响应示例(JSON):

    {
      "server-template": [
        {
          "server-id": "default-kieserver",
          "server-name": "default-kieserver",
          "container-specs": [
            {
              "container-id": "employeerostering_1.0.0-SNAPSHOT",
              "container-name": "employeerostering",
              "server-template-key": {
                "server-id": "default-kieserver",
                "server-name": "default-kieserver"
              },
              "release-id": {
                "group-id": "employeerostering",
                "artifact-id": "employeerostering",
                "version": "1.0.0-SNAPSHOT"
              },
              "configuration": {
                "RULE": {
                  "org.kie.server.controller.api.model.spec.RuleConfig": {
                    "pollInterval": null,
                    "scannerStatus": "STOPPED"
                  }
                },
                "PROCESS": {
                  "org.kie.server.controller.api.model.spec.ProcessConfig": {
                    "runtimeStrategy": "SINGLETON",
                    "kbase": "",
                    "ksession": "",
                    "mergeMode": "MERGE_COLLECTIONS"
                  }
                }
              },
              "status": "STARTED"
            },
            {
              "container-id": "mortgage-process_1.0.0-SNAPSHOT",
              "container-name": "mortgage-process",
              "server-template-key": {
                "server-id": "default-kieserver",
                "server-name": "default-kieserver"
              },
              "release-id": {
                "group-id": "mortgage-process",
                "artifact-id": "mortgage-process",
                "version": "1.0.0-SNAPSHOT"
              },
              "configuration": {
                "RULE": {
                  "org.kie.server.controller.api.model.spec.RuleConfig": {
                    "pollInterval": null,
                    "scannerStatus": "STOPPED"
                  }
                },
                "PROCESS": {
                  "org.kie.server.controller.api.model.spec.ProcessConfig": {
                    "runtimeStrategy": "PER_PROCESS_INSTANCE",
                    "kbase": "",
                    "ksession": "",
                    "mergeMode": "MERGE_COLLECTIONS"
                  }
                }
              },
              "status": "STARTED"
            }
          ],
          "server-config": {},
          "server-instances": [
            {
              "server-instance-id": "default-kieserver-instance@localhost:8080",
              "server-name": "default-kieserver-instance@localhost:8080",
              "server-template-id": "default-kieserver",
              "server-url": "http://localhost:8080/kie-server/services/rest/server"
            }
          ],
          "capabilities": [
            "RULE",
            "PROCESS",
            "PLANNING"
          ]
        }
      ]
    }
  4. 在 REST 客户端或 curl 实用程序中,发送带有以下组件的 API 请求,它向 /controller/management/servers/{serverTemplateId} 发送一个 PUT 请求,以创建新的 KIE Server 模板。根据您的用例调整任何请求详情。

    对于 REST 客户端:

    • 身份验证 :使用 rest-all 角色或无头 Process Automation Manager 控制器用户输入 Process Automation Manager 控制器用户的用户名和密码,并带有 kie-server 角色。
    • HTTP 标头 :设置以下标头:

      • 接受:application/json
      • content-Type:application/json
    • HTTP 方法 :设置为 PUT
    • URL :输入 Process Automation Manager 控制器 REST API 基本 URL 和端点,如 http://localhost:8080/business-central/rest/controller/management/servers/new-kieserver
    • Request body :使用新 KIE Server 模板的配置添加 JSON 请求正文:
    {
      "server-id": "new-kieserver",
      "server-name": "new-kieserver",
      "container-specs": [],
      "server-config": {},
      "capabilities": [
        "RULE",
        "PROCESS",
        "PLANNING"
      ]
    }

    对于 curl 工具:

    • -u :使用 rest-all 角色或无头 Process Automation Manager 控制器用户输入 Process Automation Manager 控制器用户的用户名和密码,并带有 kie-server 角色。
    • - h :设置以下标头:

      • 接受:application/json
      • content-Type:application/json
    • -x :设置为 PUT
    • URL :输入 Process Automation Manager 控制器 REST API 基本 URL 和端点,如 http://localhost:8080/business-central/rest/controller/management/servers/new-kieserver
    • -d :使用新 KIE Server 模板的配置添加 JSON 请求正文或文件(@file.json):
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/business-central/rest/controller/management/servers/new-kieserver" -d "{ \"server-id\": \"new-kieserver\", \"server-name\": \"new-kieserver\", \"container-specs\": [], \"server-config\": {}, \"capabilities\": [ \"RULE\", \"PROCESS\", \"PLANNING\" ]}"
    curl -u 'baAdmin:password@1' -H "Accept: application/json" -H "Content-Type: application/json" -X PUT "http://localhost:8080/business-central/rest/controller/management/servers/new-kieserver" -d @my-server-template-configs.json
  5. 执行请求,并确认过程自动化管理器控制器响应成功。

    如果您遇到请求错误,请查看返回的错误代码信息并相应地调整您的请求。