5.2. 使用 KIE 服务器 Java 客户端 API 执行 DMN 服务


KIE Server Java 客户端 API 提供了轻量级的方法,通过 KIE 服务器的 REST 或 JMS 接口调用远程 DMN 服务。这个方法减少了与 KIE 基础交互所需的运行时依赖项数量。通过让它们能够按适当的速度单独迭代,从决策定义分离调用代码会增加灵活性。

有关 KIE Server Java 客户端 API 的更多信息,请参阅使用 KIE API 与 Red Hat Process Automation Manager 交互

先决�件

  • KIE 服务器已安装并配置,包括具有 kie-server 角色的用户的已知用户名和凭证。有关安装选项,请参阅 规划 Red Hat Process Automation Manager 安装
  • 您已将 DMN 项目构建为 KJAR 工件,并将其部署到 KIE 服务器中。理想情况下,您已将 DMN 项目构建为可执行模型,以便更有效地执行:

    mvn clean install -DgenerateDMNModel=yes
    Copy to Clipboard Toggle word wrap

    有关项目打包和部署以及可执行模型的更多信息,请参阅打包和部署 Red Hat Process Automation Manager 项目

  • 您有包含 DMN 模型的 KIE 容器的 ID。如果有多个模型,还必须知道相关模型的模型命名空间和模型名称。

�程

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

    <!-- Required for the KIE Server Java client API -->
    <dependency>
      <groupId>org.kie.server</groupId>
      <artifactId>kie-server-client</artifactId>
      <version>${rhpam.version}</version>
    </dependency>
    Copy to Clipboard Toggle word wrap

    & lt;version > 是项目中当前使用的 Red Hat Process Automation Manager 的 Maven 工件版本(如 7.44.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.9.1.redhat-00003</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
    Copy to Clipboard Toggle word wrap

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

  2. 使用适当的连接信息实例化 KieServicesClient 实例。

    例如:

    KieServicesConfiguration conf =
        KieServicesFactory.newRestConfiguration(URL, USER, PASSWORD); 
    1
    
    
    conf.setMarshallingFormat(MarshallingFormat.JSON);  
    2
    
    
    KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(conf);
    Copy to Clipboard Toggle word wrap
    1
    连接信息:
    • 示例 URL :http://localhost:8080/kie-server/services/rest/server
    • 凭证应该引用具有 kie-server 角色的用户。
    2
    Marshalling 格式是 org.kie.server.api.marshalling.MarshallingFormat 的实例。它控制消息是否为 JSON 还是 XML。Marshalling 格式的选项包括 JSON、JAXB 或 XSTREAM。
  3. 通过在 KIE 服务器 Java 客户端实例上调用方法 getServicesClient (),从 KIE 服务器 Java 客户端获取 DMNServicesClient Client:

    DMNServicesClient dmnClient = kieServicesClient.getServicesClient(DMNServicesClient.class );
    Copy to Clipboard Toggle word wrap

    dmnClient 现在可在 KIE 服务器上执行决策服务。

  4. 为所需模型执行决策服务。

    例如:

    for (Integer age : Arrays.asList(1,12,13,64,65,66)) {
        DMNContext dmnContext = dmnClient.newContext(); 
    1
    
        dmnContext.set("Age", age);  
    2
    
        ServiceResponse<DMNResult> serverResp =   
    3
    
            dmnClient.evaluateAll($kieContainerId,
                                  $modelNamespace,
                                  $modelName,
                                  dmnContext);
    
        DMNResult dmnResult = serverResp.getResult();  
    4
    
        for (DMNDecisionResult dr : dmnResult.getDecisionResults()) {
            log.info("Age: " + age + ", " +
                     "Decision: '" + dr.getDecisionName() + "', " +
                     "Result: " + dr.getResult());
        }
    }
    Copy to Clipboard Toggle word wrap
    1
    实例化一个新的 DMN 上下文,作为模型评估的输入。请注意,本例多次通过 Age Classification 决策进行循环。
    2
    为输入 DMN 上下文分配输入变量。
    3
    评估 DMN 模型中定义的所有 DMN 决策:
    • $kieContainerId 是部署包含 DMN 模型的 KJAR 的容器 ID
    • $modelNamespace 是模型的命名空间。
    • $modelName 是模型的名称。
    4
    DMN Result 对象可从服务器响应中获得。

    此时,dmnResult 包含来自评估的 DMN 模型的所有决定结果。

    您还可以使用 DMNServicesClient 的替代方法在模型中执行特定的 DMN 决定。

    注意

    如果 KIE 容器只包含一个 DMN 模型,您可以省略 $modelNamespace$modelName,因为 KIE Server API 默认选择它。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat