第 50 章 执行规则
在 Business Central 中识别示例规则或创建自己的规则后,您可以构建和部署关联的项目,并在 KIE 服务器上执行规则来测试规则。
先决�件
- Business Central 和 KIE 服务器已安装并运行。有关安装选项,请参阅 规划 Red Hat Process Automation Manager 安装。
流程
-
在 Business Central 中,进入 Menu
Design Projects,然后点击项目名称。 在项目 资产 页面右上角,点 Deploy 以构建项目并将其部署到 KIE Server。如果构建失败,请解决屏幕底部的 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
:(可选)使客户端应用程序能够使用简单日志记录 Facade for Java (SLF4J)在与 KIE 服务器交互后返回调试日志信息
客户端应用程序
pom.xml
文件中的 Red Hat Process Automation Manager 7.9 的依赖项示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需这些工件的可用版本,请在线搜索 Nexus Repository Manager 中的组 ID 和工件 ID。
注意考虑将 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 的更多信息,请参阅 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 如果您在用于调试日志的客户端应用程序
pom.xml
文件中添加slf4j
依赖项,请在相关 classpath 上创建一个简单的logger.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
规则计算 wage 和每小时速率值,并根据结果显示一条消息: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 - 在命令行和服务器日志中查看规则执行状态。如果有任何规则没有如预期执行,请查看项目中配置的规则和主类配置以验证所提供的数据。