第 47 章 执行规则
在确定了示例规则或在 Business Central 中创建自己的规则后,您可以在本地或 KIE 服务器上构建并部署相关的项目并在 KIE 服务器上执行规则,以测试规则。
先决条件
- 业务中心和 KIE 服务器已安装并运行。有关安装选项,请参阅 规划 Red Hat Process Automation Manager 安装。
流程
-
在 Business Central 中,前往 Menu
Design Projects 并点项目名称。 在项目 资产 页面右上角,单击 Deploy 以构建该项目,并将它部署到 KIE 服务器。如果构建失败,请解决屏幕底部的 Alerts 面板中描述的问题。
有关项目部署选项的更多信息,请参阅 打包和部署 Red Hat Process Automation Manager 项目。
注意如果项目中规则资产没有从可执行规则模型构建,请验证以下依赖项是否在项目的
pom.xml
文件中构建,并重新构建项目:<dependency> <groupId>org.drools</groupId> <artifactId>drools-model-compiler</artifactId> <version>${rhpam.version}</version> </dependency>
<dependency> <groupId>org.drools</groupId> <artifactId>drools-model-compiler</artifactId> <version>${rhpam.version}</version> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,Red Hat Process Automation Manager 中的规则资产需要这个依赖项,从可执行规则模型构建。这个依赖关系包含在 Red Hat Process Automation Manager 核心打包中,但取决于 Red Hat Process Automation Manager 升级历史记录,您可能需要手动添加这个依赖关系来启用可执行规则模型行为。
有关可执行规则模型的更多信息,请参阅 打包和部署 Red Hat Process Automation Manager 项目。
在 Business Central 之外创建 Maven 或 Java 项目(如果尚未创建),您可将其用于在本地执行规则,或用作在 KIE 服务器上执行规则的客户端应用程序。该项目必须包含
pom.xml
文件以及执行项目资源的任何其他必要组件。有关 test 项目示例,请参阅 "创建和执行 DRL 规则的方法 "。
打开 test 项目或客户端应用程序的
pom.xml
文件,并添加以下依赖项(如果还没有添加):-
kie-ci
:启用客户端应用程序以使用ReleaseId
在本地加载 Business Central 项目数据 -
kie-server-client
:使您的客户端应用程序能够与 KIE 服务器上的资产远程交互 -
slf4j
:(可选)使您的客户端应用程序能够使用 Simple Logging Facade 用于 Java(SLF4J),以在与 KIE 服务器交互后返回调试信息
客户端应用程序
pom.xml
文件中的 Red Hat Process Automation Manager 7.13 的依赖项示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于这些工件的可用版本,请在 Nexus Repository Manager 在线搜索组 ID 和工件 ID。
注意考虑将 Red Hat Business Automation 材料清单(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 Automation BOM 的更多信息,请参阅 Red Hat Process Automation Manager 和 Maven 库版本之间的映射是什么?
-
确保在客户端应用
pom.xml
文件中定义了包含模型类的工件依赖项,它们与部署的项目的pom.xml
文件中完全相同。如果模型类的依赖关系因客户端应用和项目之间有所不同,则可能会出现执行错误。要访问 Business Central 中的项目
pom.xml
文件,请在项目左侧选择任何现有资产,然后在屏幕左侧的 Project Explorer 菜单中,单击 Customize View gear 图标并选择 Repository Viewpom.xml。 例如,以下
Person
类依赖项同时出现在客户端和部署的项目pom.xml
文件中:<dependency> <groupId>com.sample</groupId> <artifactId>Person</artifactId> <version>1.0.0</version> </dependency>
<dependency> <groupId>com.sample</groupId> <artifactId>Person</artifactId> <version>1.0.0</version> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您将
slf4j
依赖项添加到用于调试日志的客户端应用程序pom.xml
文件,请在相关类路径(例如,在 Maven 中的 src/main/resources/META-INF)上创建一个simplelogger.properties
文件(例如,在 Maven 中的src/main/resources/META-INF
):org.slf4j.simpleLogger.defaultLogLevel=debug
org.slf4j.simpleLogger.defaultLogLevel=debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的客户端应用中,创建一个包含必要导入和
main()
方法的.java
主类,以加载 KIE 基础、插入事实和执行规则。例如,项目中的
Person
对象包含 getter 和 setter 方法,用于设置并检索一个人的名字、姓氏、每小时速率和分流。项目中的以下Wage
规则计算 wage 和 hourly 速率值,并根据结果显示消息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在 KIE 服务器之外测试此规则(如果需要),请配置
.java
类以导入 KIE 服务、KIE 容器和 KIE 会话,然后使用main()
方法针对定义的事实模型触发所有规则:本地执行规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在 KIE 服务器上测试此规则,请配置
.java
类,其导入和规则执行信息与本地示例类似,另外还指定 KIE 服务配置和 KIE 服务客户端详情:在 KIE 服务器上执行规则
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从项目目录中运行配置的
.java
类。您可以在开发平台(如 Red Hat CodeReady Studio)或命令行中运行该文件。Maven 执行示例(在项目目录中):
mvn clean install exec:java -Dexec.mainClass="com.sample.app.RulesTest"
mvn clean install exec:java -Dexec.mainClass="com.sample.app.RulesTest"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Java 执行示例(在项目目录中)
javac -classpath "./$DEPENDENCIES/*:." RulesTest.java java -classpath "./$DEPENDENCIES/*:." RulesTest
javac -classpath "./$DEPENDENCIES/*:." RulesTest.java java -classpath "./$DEPENDENCIES/*:." RulesTest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在命令行中检查规则执行状态并在服务器日志中。如果有任何规则没有按预期执行,请检查项目中配置的规则,以及验证提供的数据的主类配置。