3.3. 在 Java 应用程序中打包和部署 Red Hat Process Automation Manager 项目
如果要从您自己的 Java 应用程序部署项目到配置的 KIE 服务器,您可以使用 KieModuleModel
实例以编程方式创建一个 kmodule.xml
文件,该文件定义 KIE 基础和 KIE 会话,然后将项目中的所有资源添加到 KIE 虚拟文件系统 KieFileSystem
中。
先决条件
- 您有一个包含 Red Hat Process Automation Manager 商业资产的 Java 应用程序。
-
KIE 服务器已安装,并且配置了
kie-server
用户访问。有关安装选项,请参阅 规划 Red Hat Process Automation Manager 安装。
流程
可选:如果您的项目包含 Decision Model 和 Notation (DMN)资产,请将以下依赖项添加到 Java 项目的相关类路径中,以启用 DMN 可执行模型。DMN 可执行模型可让 DMN 项目中的 DMN 决策表逻辑更有效地评估。
<dependency> <groupId>org.kie</groupId> <artifactId>kie-dmn-core</artifactId> <scope>provided</scope> <version>${rhpam.version}</version> </dependency>
&
lt;version
> 是项目中当前使用的 Red Hat Process Automation Manager 的 Maven 工件版本(例如: 7.52.0.Final-redhat-00007)。注意考虑将 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.11.0.redhat-00005</version> <scope>import</scope> <type>pom</type> </dependency>
有关 Red Hat Business Automation BOM 的更多信息,请参阅 Red Hat Process Automation Manager 和 Maven 库版本之间的映射是什么?
使用
KieServices
API 创建带有所需 KIE 基础和 KIE 会话的KieModuleModel
实例。KieServices
API 可让您访问所有 KIE 构建和运行时配置。KieModuleModel
实例为您的项目生成kmodule.xml
文件。有关
kmodule.xml
配置的详情,请参考 第 3.1 节 “配置 KIE 模块描述符文件”。将您的
KieModuleModel
实例转换为 XML,并将 XML 添加到KieFileSystem
。以编程方式创建
kmodule.xml
,并将其添加到KieFileSystem
import org.kie.api.KieServices; import org.kie.api.builder.model.KieModuleModel; import org.kie.api.builder.model.KieBaseModel; import org.kie.api.builder.model.KieSessionModel; import org.kie.api.builder.KieFileSystem; KieServices kieServices = KieServices.Factory.get(); KieModuleModel kieModuleModel = kieServices.newKieModuleModel(); KieBaseModel kieBaseModel1 = kieModuleModel.newKieBaseModel("KBase1") .setDefault(true) .setEqualsBehavior(EqualityBehaviorOption.EQUALITY) .setEventProcessingMode(EventProcessingOption.STREAM); KieSessionModel ksessionModel1 = kieBaseModel1.newKieSessionModel("KSession1") .setDefault(true) .setType(KieSessionModel.KieSessionType.STATEFUL) .setClockType(ClockTypeOption.get("realtime")); KieFileSystem kfs = kieServices.newKieFileSystem(); kfs.writeKModuleXML(kieModuleModel.toXML());
将项目中使用的剩余的 Red Hat Process Automation Manager 资产添加到 KieFileSystem
实例中
。工件必须采用 Maven 项目文件结构。import org.kie.api.builder.KieFileSystem; KieFileSystem kfs = ... kfs.write("src/main/resources/KBase1/ruleSet1.drl", stringContainingAValidDRL) .write("src/main/resources/dtable.xls", kieServices.getResources().newInputStreamResource(dtableFileStream));
在本例中,项目资产同时添加为
String
变量和Resource
实例。您可以使用KieResources
工厂创建Resource
实例,也由KieServices
实例提供。KieResources
类提供了将InputStream
,URL
, 和File
对象,或一个代表您的文件系统路径的String
转换到一个KieFileSystem
可以管理的Resource
实例的方法。当将项目工件添加到
KieFileSystem
时,您还可以为Resource
对象明确分配一个ResourceType
属性:import org.kie.api.builder.KieFileSystem; KieFileSystem kfs = ... kfs.write("src/main/resources/myDrl.txt", kieServices.getResources().newInputStreamResource(drlStream) .setResourceType(ResourceType.DRL));
使用带有
buildAll ()
方法的KieBuilder
来构建KieFileSystem
的内容,并创建一个 KIE 容器来部署它:import org.kie.api.KieServices; import org.kie.api.KieServices.Factory; import org.kie.api.builder.KieFileSystem; import org.kie.api.builder.KieBuilder; import org.kie.api.runtime.KieContainer; KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = ... KieBuilder kieBuilder = ks.newKieBuilder( kfs ); kieBuilder.buildAll() assertEquals(0, kieBuilder.getResults().getMessages(Message.Level.ERROR).size()); KieContainer kieContainer = kieServices .newKieContainer(kieServices.getRepository().getDefaultReleaseId());
构建
ERROR
表示项目编译失败,没有生成KieModule
,且不会将任何内容添加到KieRepository
单例中。WARNING
或INFO
结果表示项目的编译成功,其中包含构建过程的相关信息。注意要从可执行规则模型构建 Java 应用程序项目中的规则资产,请验证以下依赖项是否在项目的
pom.xml
文件中:<dependency> <groupId>org.drools</groupId> <artifactId>drools-model-compiler</artifactId> <version>${rhpam.version}</version> </dependency>
Red Hat Process Automation Manager 中的规则资产需要这个依赖项,才能从可执行规则模型构建。此依赖项作为 Red Hat Process Automation Manager 核心打包的一部分包括,但取决于您的 Red Hat Process Automation Manager 升级历史记录,您可能需要手动添加此依赖项来启用可执行的规则模型行为。
验证依赖项后,使用以下修改后的
buildAll ()
选项来启用可执行模型:kieBuilder.buildAll(ExecutableModelProject.class)
有关可执行规则模型的详情请参考 第 3.4 节 “可执行规则模型”。