20.2. 使用 Maven 创建和执行 DRL 规则
您可以使用 Maven archetypes 创建 DRL 文件与规则,并将 archetypes 与 Red Hat Process Automation 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=falseCopy 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格式创建一个规则文件。DRL 文件必须至少包含软件包规格、规则或规则要使用的数据对象导入列表,以及带有条件和动作的一个或多个规则。以下
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 会话是由
KBase1KIE 基础实例化,以及来自KBase2的 KIE 会话。KBase2中的 KIE 会话是一个无状态KIE 会话,这意味着之前调用 KIE 会话(之前会话状态)中的数据会在会话调用之间丢弃。规则资产的软件包包括在 KIE 基础中。当您以这种方式指定软件包时,您必须将 DRL 文件组织到反映指定软件包的文件夹结构中。在
my-app/pom.xml配置文件中,指定应用程序所需的库。提供 Red Hat Process Automation Manager 依赖项,以及应用程序的组ID、工件 ID和版本(GAV)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 Red Hat Process Automation Manager 中的 Maven 依赖项和 BOM(主要的资料)的详情,请参考 Red Hat Process Automation 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 installCopy 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