第 13 章 PMML 模型执行


您可以使用 Business Central(Menu Design Projects Import Asset)将 PMML 文件导入到红帽决策管理器项目中,或者在没有 Business Central 的情况下将 PMML 文件打包为您的项目知识 JAR(KJAR)文件的一部分。在 Red Hat Decision Manager 项目中实现 PMML 文件后,您可以通过直接嵌入 Java 应用程序中,或将 ApplyPmmlModelCommand 命令发送到配置的 KIE 服务器来执行 PMML 决策服务。

有关使用项目打包和部署方法包括 PMML 资产的更多信息,请参阅 打包和部署 Red Hat Decision Manager 项目

注意

您还可以将 PMML 模型作为 Business Central 中决策模型和 Notation(DMN)服务的一部分。当您在 DMN 文件中包含 PMML 模型时,您可以将 PMML 模型作为作为 DMN 决策节点或商业知识节点的 box 功能表达式调用。有关在 DMN 服务中包含 PMML 模型的更多信息,请参阅使用 DMN 模型设计决策服务

当知识资产直接嵌入到调用程序中,或者被实际拉取为 KJAR 的 Maven 依赖关系时,KIE 容器是本地的。如果您在代码版本和 PMML 定义版本之间有紧密的关系,您将直接将知识资产嵌入到项目中。在有意更新并重新部署应用程序后,对决策的任何更改都会生效。这种方法的一个优点是,正确的操作不依赖于任何外部依赖项来运行,这可能受锁定的环境限制。

先决条件

流程

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

    <!-- Required for the PMML compiler -->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>kie-pmml-dependencies</artifactId>
      <version>${rhpam.version}</version>
    </dependency>
    
    <!-- Required for the KIE public API -->
    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-api</artifactId>
      <version>${rhpam.version}</version>
    </dependencies>
    
    <!-- Required if not using classpath KIE container -->
    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-ci</artifactId>
      <version>${rhpam.version}</version>
    </dependency>
    Copy to Clipboard Toggle word wrap

    & lt;version > 是项目中当前使用的 Red Hat Decision Manager 的 Maven 工件版本(例如 7.67.0.Final-redhat-00019)。

    注意

    考虑将 Red Hat Business Automation 材料清单(BOM)依赖项添加到项目 pom.xml 文件,而不是为各个依赖项指定红帽决策管理器 < 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.13.2.redhat-00002</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
    Copy to Clipboard Toggle word wrap

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

  2. 类路径ReleaseId 创建 KIE 容器:

    KieServices kieServices = KieServices.Factory.get();
    
    ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "my-kjar", "1.0.0" );
    KieContainer kieContainer = kieServices.newKieContainer( releaseId );
    Copy to Clipboard Toggle word wrap

    备选选项:

    KieServices kieServices = KieServices.Factory.get();
    
    KieContainer kieContainer = kieServices.getKieClasspathContainer();
    Copy to Clipboard Toggle word wrap
  3. 创建用于执行模型的 PMMLRuntime 实例:

    PMMLRuntime pmmlRuntime = KieRuntimeFactory.of(kieContainer.getKieBase()).get(PMMLRuntime.class);
    Copy to Clipboard Toggle word wrap
  4. 创建一个 PMMLRequestData 类实例,将 PMML 模型应用到数据集:

    PMMLRequestData pmmlRequestData = new PMMLRequestData({correlation_id}, {model_name});
    pmmlRequestData.addRequestParam({parameter_name}, {parameter_value})
    ...
    Copy to Clipboard Toggle word wrap
  5. 创建包含输入数据的 PMMLContext 类实例:

    PMMLContext pmmlContext = new PMMLContextImpl(pmmlRequestData);
    Copy to Clipboard Toggle word wrap
  6. 使用您创建的 PMML 类实例执行 PMML 模型时,检索 PMML 结果

    PMML4Result pmml4Result = pmmlRuntime.evaluate({model_name}, pmmlContext);
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat