第 26 章 为 KIE 服务器模板和实例处理自动化管理器控制器 Java 客户端 API


Red Hat Process Automation Manager 提供了一个流程 Automation Manager 控制器 Java 客户端 API,可让您使用 Java 客户端应用程序中的 REST 或 WebSocket 协议连接到流程自动化管理器控制器。您可以使用 Process Automation Manager 控制器 Java 客户端 API 作为 Process Automation Manager 控制器 REST API 的替代选择,来与 KIE Server 模板(配置)、KIE Server 实例(远程服务器)以及 Red Hat Process Automation Manager 中的关联 KIE 容器(部署单元)进行交互,而无需使用 Business Central 用户界面。通过此 API 支持,您可以更有效地维护红帽流程自动化管理器服务器和资源,并优化与红帽流程自动化管理器的集成和开发。

使用 Process Automation Manager 控制器 Java 客户端 API,您还可以执行流程 Automation Manager 控制器 REST API 支持的以下操作:

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

处理 Automation Manager 控制器 Java 客户端 API 请求需要以下组件:

身份验证

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

  • 如果您安装了 Business Central 且想要使用内置 Automation Manager 控制器,REST -all 用户角色
  • 如果您安装无头进程 Automation Manager 控制器与 Business Central 分开,则 kie-server 用户角色

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

要添加具有 kie-server 角色或 rest-all 角色的用户(假设已经设置了 Keystore),请导航到 ~/$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=['rest-all','kie-server'])"

如果没有设置 Keystore,则执行以下命令来创建密钥存储:

$ keytool -importpassword -keystore $SERVER_HOME/standalone/configuration/kie_keystore.jceks -keypass <SECRETKEYPASSWORD> -alias kieserver -storepass <SECRETSTOREPASSWORD> -storetype JCEKS

另外,将以下属性添加到 ~/$SERVER_HOME/standalone/configuration/standalone-full.xml

    <property name="kie.keystore.keyStoreURL" value="file:///data/jboss/rhpam780/standalone/configuration/kie_keystore.jceks"/>
    <property name="kie.keystore.keyStorePwd" value="<SECRETSTOREPASSWORD>"/>
    <property name="kie.keystore.key.server.alias" value="kieserver"/>
    <property name="kie.keystore.key.server.pwd" value="<SECRETKEYPASSWORD>"/>
    <property name="kie.keystore.key.ctrl.alias" value="kieserver"/>
    <property name="kie.keystore.key.ctrl.pwd" value="<SECRETKEYPASSWORD>"/>

要使用 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="<USERNAME>"/>
<property name="org.kie.server.id" value="default-kieserver"/>

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

项目依赖项

Process Automation Manager 控制器 Java 客户端 API 需要在 Java 项目的相关类路径上以下依赖项:

<!-- For remote execution on controller -->
<dependency>
  <groupId>org.kie.server</groupId>
  <artifactId>kie-server-controller-client</artifactId>
  <version>${rhpam.version}</version>
</dependency>

<!-- For REST client -->
<dependency>
  <groupId>org.jboss.resteasy</groupId>
  <artifactId>resteasy-client</artifactId>
  <version>${resteasy.version}</version>
</dependency>

<!-- For WebSocket client -->
<dependency>
  <groupId>io.undertow</groupId>
  <artifactId>undertow-websockets-jsr</artifactId>
  <version>${undertow.version}</version>
</dependency>

<!-- For debug logging (optional) -->
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>${logback.version}</version>
</dependency>

Red Hat Process Automation Manager 依赖项的 <version> 是项目中当前使用的 Red Hat Process Automation Manager 的 Maven 工件版本(如 7.59.0.Final-redhat-00006)。

注意

考虑将 Red Hat Business Automation Manager (BOM)依赖项添加到项目的 pom.xml 文件中,而不是为单独的依赖项指定 Red Hat Process Automation Manager < version >。Red Hat Business Automation BOM 适用于 Red Hat Decision Manager 和 Red Hat Process Automation Manager。添加 BOM 文件时,项目中包含来自提供的 Maven 存储库的正确传输依赖项版本。

BOM 依赖项示例:

<dependency>
  <groupId>com.redhat.ba</groupId>
  <artifactId>ba-platform-bom</artifactId>
  <version>7.12.0.redhat-00008</version>
  <scope>import</scope>
  <type>pom</type>
</dependency>

有关 Red Hat Business Automation BOM 的更多信息,请参阅 RHPAM 产品和 maven 库版本之间的映射是什么?

客户端请求配置

与 Process Automation Manager 控制器 Java 客户端 API 的所有 Java 客户端请求必须至少定义以下控制器通信组件:

  • 如果您安装了无头流程 Automation Manager 控制器,则 rest-all 用户的凭证(如果安装了 Business Central)或 kie-server 用户
  • REST 或 WebSocket 协议的进程自动化管理器控制器位置:

    • REST URL 示例: http://localhost:8080/business-central/rest/controller
    • WebSocket URL 示例: ws://localhost:8080/headless-controller/websocket/controller
  • API 请求和响应的 Marshalling 格式(JSON 或 JAXB)
  • KieServerControllerClient 对象,充当使用 Java 客户端 API 启动服务器通信的入口点
  • KieServerControllerClientFactory 定义 REST 或 WebSocket 协议和用户访问权限
  • 所用的进程 Automation Manager 控制器客户端服务或服务,如 listServerTemplatesgetServerTemplategetServerInstances

以下是带有以下组件的 REST 和 WebSocket 客户端配置示例:

使用 REST 的客户端配置示例

import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.controller.api.model.spec.ServerTemplateList;
import org.kie.server.controller.client.KieServerControllerClient;
import org.kie.server.controller.client.KieServerControllerClientFactory;

public class ListServerTemplatesExample {

    private static final String URL = "http://localhost:8080/business-central/rest/controller";
    private static final String USER = "baAdmin";
    private static final String PASSWORD = "password@1";

    private static final MarshallingFormat FORMAT = MarshallingFormat.JSON;

    public static void main(String[] args) {
        KieServerControllerClient client = KieServerControllerClientFactory.newRestClient(URL,
                                                                                          USER,
                                                                                          PASSWORD);

        final ServerTemplateList serverTemplateList = client.listServerTemplates();
        System.out.println(String.format("Found %s server template(s) at controller url: %s",
                                         serverTemplateList.getServerTemplates().length,
                                         URL));
    }
}

使用 WebSocket 的客户端配置示例

import org.kie.server.api.marshalling.MarshallingFormat;
import org.kie.server.controller.api.model.spec.ServerTemplateList;
import org.kie.server.controller.client.KieServerControllerClient;
import org.kie.server.controller.client.KieServerControllerClientFactory;

public class ListServerTemplatesExample {

    private static final String URL = "ws://localhost:8080/my-controller/websocket/controller";
    private static final String USER = "baAdmin";
    private static final String PASSWORD = "password@1";

    private static final MarshallingFormat FORMAT = MarshallingFormat.JSON;

    public static void main(String[] args) {
        KieServerControllerClient client = KieServerControllerClientFactory.newWebSocketClient(URL,
                                                                                               USER,
                                                                                               PASSWORD);

        final ServerTemplateList serverTemplateList = client.listServerTemplates();
        System.out.println(String.format("Found %s server template(s) at controller url: %s",
                                         serverTemplateList.getServerTemplates().length,
                                         URL));
    }
}

Process Automation Manager 控制器 Java 客户端 API 可让您使用 Java 客户端应用程序的 REST 或 WebSocket 协议连接到 Process Automation Manager 控制器。您可以使用 Process Automation Manager 控制器 Java 客户端 API 作为 Process Automation Manager 控制器 REST API 的替代选择,来与 KIE Server 模板(配置)、KIE Server 实例(远程服务器)以及 Red Hat Process Automation Manager 中的关联 KIE 容器(部署单元)进行交互,而无需使用 Business Central 用户界面。

先决条件

  • KIE 服务器已安装并运行。
  • Process Automation Manager 控制器或无头进程 Automation Manager 控制器已安装并在运行。
  • 如果您安装了 Business Central,或者 Kie -server 用户角色访问无头流程自动化管理器控制器,则您拥有对流程自动化管理器控制器的 rest-all 用户角色访问权限。
  • 您有一个带有 Red Hat Process Automation Manager 资源的 Java 项目。

流程

  1. 在客户端应用程序中,确保以下依赖项已添加到 Java 项目的相关类路径中:

    <!-- For remote execution on controller -->
    <dependency>
      <groupId>org.kie.server</groupId>
      <artifactId>kie-server-controller-client</artifactId>
      <version>${rhpam.version}</version>
    </dependency>
    
    <!-- For REST client -->
    <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-client</artifactId>
      <version>${resteasy.version}</version>
    </dependency>
    
    <!-- For WebSocket client -->
    <dependency>
      <groupId>io.undertow</groupId>
      <artifactId>undertow-websockets-jsr</artifactId>
      <version>${undertow.version}</version>
    </dependency>
    
    <!-- For debug logging (optional) -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
    </dependency>
  2. 从红帽客户门户网站下载 Red Hat Process Automation Manager 7.12.0 Source Distribution,并进入 ~/rhpam-7.12.0-sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-controller/kie-server-controller/kie-server-controller/src/main/java/org/kie/server/controller/client 来访问流程自动化管理器 Java 客户端。
  3. ~/kie/server/controller/client 文件夹中,识别您要发送的请求的相关 Java 客户端实施,如 RestKieServerControllerClient 实施,以访问 KIE Server 模板和 REST 协议中的 KIE 容器的客户端服务。
  4. 在您的客户端应用中,为 API 请求创建一个 .java 类。类必须包含必要的导入、流程 Automation Manager 控制器位置和用户凭证、KieServerControllerClient 对象和客户端方法来执行,如 createServerTemplate 和来自 RestKieServerControllerClient 实现的 createContainer。根据您的用例调整任何配置详情。

    创建与 KIE Server 模板和 KIE 容器交互

    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.kie.server.api.marshalling.MarshallingFormat;
    import org.kie.server.api.model.KieContainerStatus;
    import org.kie.server.api.model.KieScannerStatus;
    import org.kie.server.api.model.ReleaseId;
    import org.kie.server.controller.api.model.spec.*;
    import org.kie.server.controller.client.KieServerControllerClient;
    import org.kie.server.controller.client.KieServerControllerClientFactory;
    
    public class RestTemplateContainerExample {
    
      private static final String URL = "http://localhost:8080/business-central/rest/controller";
      private static final String USER = "baAdmin";
      private static final String PASSWORD = "password@1";
    
        private static KieServerControllerClient client;
    
        public static void main(String[] args) {
            KieServerControllerClient client = KieServerControllerClientFactory.newRestClient(URL,
                                                                                              USER,
                                                                                              PASSWORD,
                                                                                              MarshallingFormat.JSON);
            // Create server template and KIE container, start and stop KIE container, and delete server template
            ServerTemplate serverTemplate = createServerTemplate();
            ContainerSpec container = createContainer(serverTemplate);
            client.startContainer(container);
            client.stopContainer(container);
            client.deleteServerTemplate(serverTemplate.getId());
        }
    
        // Re-create and configure server template
        protected static ServerTemplate createServerTemplate() {
            ServerTemplate serverTemplate = new ServerTemplate();
            serverTemplate.setId("example-client-id");
            serverTemplate.setName("example-client-name");
            serverTemplate.setCapabilities(Arrays.asList(Capability.PROCESS.name(),
                                                         Capability.RULE.name(),
                                                         Capability.PLANNING.name()));
    
            client.saveServerTemplate(serverTemplate);
    
            return serverTemplate;
        }
    
        // Re-create and configure KIE containers
        protected static ContainerSpec createContainer(ServerTemplate serverTemplate){
            Map<Capability, ContainerConfig> containerConfigMap = new HashMap();
    
            ProcessConfig processConfig = new ProcessConfig("PER_PROCESS_INSTANCE", "kieBase", "kieSession", "MERGE_COLLECTION");
            containerConfigMap.put(Capability.PROCESS, processConfig);
    
            RuleConfig ruleConfig = new RuleConfig(500l, KieScannerStatus.SCANNING);
            containerConfigMap.put(Capability.RULE, ruleConfig);
    
            ReleaseId releaseId = new ReleaseId("org.kie.server.testing", "stateless-session-kjar", "1.0.0-SNAPSHOT");
    
            ContainerSpec containerSpec = new ContainerSpec("example-container-id", "example-client-name", serverTemplate, releaseId, KieContainerStatus.STOPPED, containerConfigMap);
            client.saveContainerSpec(serverTemplate.getId(), containerSpec);
    
            return containerSpec;
        }
    }

  5. 从项目目录运行配置的 .java 类来执行请求,并查看 Process Automation Manager 控制器响应。

    如果您启用了调试日志,KIE 服务器会根据您配置的 marshalling 格式(如 JSON)响应详细的响应。如果您遇到请求错误,请检查返回的错误消息并相应地调整 Java 配置。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部