第 38 章 执行规则
在确定了示例规则或在 Business Central 中创建自己的规则后,您可以在本地或 KIE 服务器上构建并部署相关的项目并在 KIE 服务器上执行规则,以测试规则。
先决条件
- 业务中心和 KIE 服务器已安装并运行。有关安装选项,请参阅 规划 Red Hat Decision Manager 安装。
流程
-
在 Business Central 中,前往 Menu
Design Projects 并点项目名称。 在项目 资产 页面右上角,单击 Deploy 以构建该项目,并将它部署到 KIE 服务器。如果构建失败,请解决屏幕底部的 Alerts 面板中描述的问题。
有关项目部署选项的更多信息,请参阅 打包和部署 Red Hat Decision 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 Decision Manager 核心打包中,但取决于 Red Hat Decision Manager 升级历史记录,您可能需要手动添加这个依赖项来启用可执行规则模型行为。
有关可执行规则模型的更多信息,请参阅 打包和部署 Red Hat Decision 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 Decision Manager 7.13 的依赖项示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于这些工件的可用版本,请在 Nexus Repository Manager 在线搜索组 ID 和工件 ID。
注意考虑将 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 依赖项示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 Red Hat Business 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 - 在命令行中检查规则执行状态并在服务器日志中。如果有任何规则没有按预期执行,请检查项目中配置的规则,以及验证提供的数据的主类配置。