20.2. 使用 Maven 创建和执行 DRL 规则
您可以使用 Maven archetypes 创建 DRL 文件及规则,并将 archetypes 与 Red Hat Decision Manager 决策服务集成。如果您已将外部 Maven archetypes 用于决策服务,并且希望继续相同的工作流,则创建 DRL 规则的方法很有用。如果您还没有使用这个方法,则建议红帽决策管理器的 Business Central 界面创建 DRL 文件和其他规则资产。
流程
进入要创建 Maven archetype 并运行以下命令的目录:
mvn archetype:generate -DgroupId=com.sample.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=com.sample.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会创建一个带有以下结构的目录
my-app
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-app
目录包含以下关键组件:-
用于存储应用程序源的
src/main
目录 -
用于存储测试源的
src/test
目录 -
带有项目配置的
pom.xml
文件
-
用于存储应用程序源的
创建规则或规则在 Maven archetype 中操作的 Java 对象。
在本例中,
Person.java
文件是在my-app/src/main/java/com/sample/app
目录中创建的 Person.java 文件。Person
类包含 getter 和 setter 方法,用于设置和检索第一个名称、姓氏、每小时速率和个人的 wage:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
my-app/src/main/resources/com/sample/app
格式创建一个规则文件。以下
Wage.drl
文件包含导入Person
类的Wage
规则,计算出 wage 和 hourly 速率值,并根据结果显示一条消息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
my-app/src/main/resources/META-INF
目录中,创建包含以下内容的kmodule.xml
元数据文件:<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> </kmodule>
<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"> </kmodule>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个
kmodule.xml
文件是一个 KIE 模块描述符,它选择到 KIE 基础并配置会话。此文件可让您定义和配置一个或多个 KIE 基础,并在特定 KIE 基础中包含特定软件包
的 DRL 文件。您还可以从每个 KIE 基础中创建一个或多个 KIE 会话。以下示例显示了更高级的
kmodule.xml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例定义了两个 KIE 基础。两个 KIE 会话是由
KBase1
KIE 基础实例化,以及来自KBase2
的 KIE 会话。KBase2
中的 KIE 会话是一个无状态
KIE 会话,这意味着之前调用 KIE 会话(之前会话状态)中的数据会在会话调用之间丢弃。规则
资产的软件包包括在 KIE 基础中。当您以这种方式指定软件包时,您必须将 DRL 文件组织到反映指定软件包的文件夹结构中。在
my-app/pom.xml
配置文件中,指定应用程序所需的库。提供 Red Hat Decision Manager 依赖项,以及应用程序的组
ID
、工件 ID和版本
(GAV)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 Red Hat Decision Manager 中的 Maven 依赖项和 BOM( Materials 的基础)的信息,请参阅 Red Hat Decision Manager 和 Maven 库版本之间的映射是什么?
-
使用
my-app/src/test/java/com/sample/app/AppTest.java
中的testApp
方法来测试规则。AppTest.java
文件默认由 Maven 创建。 在
AppTest.java
文件中,添加所需的导入
语句来导入 KIE 服务、KIE 容器和 KIE 会话。然后,载入 KIE 基础、插入事实,并从将事实模型传递给规则的testApp()
方法执行规则。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Maven archetype 中创建并保存所有 DRL 资产后,导航到命令行中的
my-app
目录,再运行以下命令来构建您的文件:mvn clean install
mvn clean install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果构建失败,请解决命令行错误消息中描述的任何问题,并尝试验证文件,直到构建成功为止。
文件构建成功后,请运行以下命令在本地执行规则。将
com.sample.app
替换为您的软件包名称。mvn exec:java -Dexec.mainClass="com.sample.app.App"
mvn exec:java -Dexec.mainClass="com.sample.app.App"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查规则以确保它们正确执行,并处理文件中所需的所有更改。
要将新规则资产与红帽决策管理器中的现有项目集成,您可以将新的 Maven 项目作为知识 JAR(KJAR)编译,并将它添加为 Business Central 中项目的 pom.xml
文件中的依赖关系。要访问 Business Central 中的项目 pom.xml
文件,您可以选择项目中任何现有资产,然后在屏幕左侧的 Project Explorer 菜单中,单击 Customize View gear 图标并选择 Repository View