11.2. 使用 KIE 服务器执行 PMML 模型
您可以通过将 ApplyPmmlModelCommand
命令发送到配置的 KIE Server 来执行部署到 KIE 服务器的 PMML 模型。当您使用此命令时,PMMLRequestData
对象将发送到 KIE 服务器,并将一个 PMML4Result
结果对象作为回复接收。您可以通过来自配置的 Java 类或直接从 REST 客户端通过 KIE Server REST API 向 KIE 服务器发送 PMML 请求。
先决�件
-
KIE 服务器已安装并配置,包括具有
kie-server
角色的用户的已知用户名和凭证。有关安装选项,请参阅 规划 Red Hat Process Automation Manager 安装。 - KIE 容器以包含 PMML 模型的 KJAR 的形式部署在 KIE 服务器中。有关项目打包的更多信息,请参阅 打包和部署 Red Hat Process Automation Manager 项目。
- 您有包含 PMML 模型的 KIE 容器的容器 ID。
�程
在客户端应用程序中,将以下依赖项添加到 Java 项目的相关类路径中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
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 依赖项示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 Red Hat Business Automation BOM 的更多信息,请参阅 RHPAM 产品和 maven 库版本之间的映射是什么?
从
classpath
或ReleaseId
创建 KIE 容器:KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "my-kjar", "1.0.0" ); KieContainer kieContainer = kieServices.newKieContainer( releaseId );
KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "my-kjar", "1.0.0" ); KieContainer kieContainer = kieServices.newKieContainer( releaseId );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其它选项:
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer();
KieServices kieServices = KieServices.Factory.get(); KieContainer kieContainer = kieServices.getKieClasspathContainer();
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建将请求发送到 KIE 服务器的类并接收响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行类实例,将 PMML 调用请求发送到 KIE 服务器。
或者,您可以使用 JMS 和 REST 接口将
ApplyPmmlModelCommand
命令发送到 KIE 服务器。对于 REST 请求,您可以使用ApplyPmmlModelCommand
命令作为对 JSON、JAXB 或 XStream 请求格式的http://SERVER:PORT/kie-server/services/rest/server/containers/instances/{containerId}
的POST
请求。POST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/instances/SampleModelContainer
http://localhost:8080/kie-server/services/rest/server/containers/instances/SampleModelContainer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 请求正文示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有端点和正文的 curl 请求示例
curl -X POST "http://localhost:8080/kie-server/services/rest/server/containers/instances/SampleModelContainer" -H "accept: application/json" -H "content-type: application/json" -d "{ \"commands\": [ { \"apply-pmml-model-command\": { \"outIdentifier\": null, \"packageName\": null, \"hasMining\": false, \"requestData\": { \"correlationId\": \"123\", \"modelName\": \"SimpleScorecard\", \"source\": null, \"requestParams\": [ { \"correlationId\": \"123\", \"name\": \"param1\", \"type\": \"java.lang.Double\", \"value\": \"10.0\" }, { \"correlationId\": \"123\", \"name\": \"param2\", \"type\": \"java.lang.Double\", \"value\": \"15.0\" } ] } } } ]}"
curl -X POST "http://localhost:8080/kie-server/services/rest/server/containers/instances/SampleModelContainer" -H "accept: application/json" -H "content-type: application/json" -d "{ \"commands\": [ { \"apply-pmml-model-command\": { \"outIdentifier\": null, \"packageName\": null, \"hasMining\": false, \"requestData\": { \"correlationId\": \"123\", \"modelName\": \"SimpleScorecard\", \"source\": null, \"requestParams\": [ { \"correlationId\": \"123\", \"name\": \"param1\", \"type\": \"java.lang.Double\", \"value\": \"10.0\" }, { \"correlationId\": \"123\", \"name\": \"param2\", \"type\": \"java.lang.Double\", \"value\": \"15.0\" } ] } } } ]}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 响应示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow