第 18 章 创建和执行 DRL 规则的其他方法
作为在 Business Central 界面中创建和管理 DRL 规则的替代选择,您可以使用 Red Hat CodeReady Studio 或其他集成开发环境(IDE)在外部创建 DRL 规则文件。然后,这些独立项目可以作为 Business Central 中现有 Red Hat Process Automation Manager 项目中的知识 JAR (KJAR)依赖项集成。独立项目中的 DRL 文件必须至少包含 所需的软件包 规格、导入 列表和 规则定义。任何其它 DRL 组件(如全局变量和功能)都是可选的。与 DRL 规则相关的所有数据对象都必须包含在您的独立 DRL 项目或部署中。
您还可以使用 Maven 或 Java 项目中的可执行规则模型为构建时执行的规则提供基于 Java 的表示。可执行模型是 Red Hat Process Automation Manager 中打包的标准资产更高效的替代,并允许更快速创建 KIE 容器和 KIE 基础,特别是在具有大量 DRL (Drools Rule Language)文件和其他 Red Hat Process Automation Manager 资产列表时。
18.1. 在 Red Hat CodeReady Studio 中创建并执行 DRL 规则 复制链接链接已复制到粘贴板!
您可以使用 Red Hat CodeReady Studio 创建带有规则的 DRL 文件,并将文件与 Red Hat Process Automation Manager 决策服务集成。如果您已将 Red Hat CodeReady Studio 用于决定服务并希望使用相同的工作流,则创建 DRL 规则的方法非常有用。如果您还没有使用这个方法,则建议创建 DRL 文件和其他规则资产,建议使用 Red Hat Process Automation Manager 的 Business Central 接口。
先决条件
- Red Hat CodeReady Studio 已 从红帽客户门户 安装。
流程
-
在 Red Hat CodeReady Studio 中,点击 File
New Project。 -
在打开的 New Project 窗口中,选择 dols
d Project 并点 Next。 - 单击第二个图标,以 创建一个项目,并将它填充一些示例文件,以帮助您快速开始。点 Next。
输入项目名称 并选择 Maven 单选按钮作为项目构建选项。GAV 值会自动生成。您可以根据项目的要求更新这些值:
-
组 ID:
com.sample -
工件 ID:
my-project -
Version:
1.0.0-SNAPSHOT
-
组 ID:
点 Finish 以创建该项目。
此配置设置基本项目结构、类路径和示例规则。以下是项目结构的概述:
my-project `-- src/main/java | `-- com.sample | `-- DecisionTableTest.java | `-- DroolsTest.java | `-- ProcessTest.java | `-- src/main/resources | `-- dtables | `-- Sample.xls | `-- process | `-- sample.bpmn | `-- rules | `-- Sample.drl | `-- META-INF | `-- JRE System Library | `-- Maven Dependencies | `-- Drools Library | `-- src | `-- target | `-- pom.xml请注意以下元素:
-
src/main/resources目录中的Sample.drl规则文件,包含Hello World和GoodBye规则示例。 -
com.java 文件。.sample软件包中的src/main/java目录下的 droolsTestdrools测试类可用于执行Sample.drl规则。 -
dr
oy 库目录,它充当包含执行所需的 JAR 文件的自定义类路径。
您可以根据需要,使用新配置编辑现有的
Sample.drl文件和DroolsTest.java文件,或者创建新规则和对象文件。在此过程中,您要创建新规则和新的 Java 对象。-
创建一个 Java 对象,该规则或规则将在其上操作。
在本例中,在
my-project/src/main/java/com.sample中创建Person.java文件。Person类包含 getter 和 setter 方法,用于设置和检索名字、姓氏、每小时率以及人的 wage:public class Person { private String firstName; private String lastName; private Integer hourlyRate; private Integer wage; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Integer getHourlyRate() { return hourlyRate; } public void setHourlyRate(Integer hourlyRate) { this.hourlyRate = hourlyRate; } public Integer getWage(){ return wage; } public void setWage(Integer wage){ this.wage = wage; } }-
点 File
Save 保存文件。 以
my-project/src/main/resources/rules格式创建一个规则文件。DRL 文件必须至少包含软件包规格、规则或规则要使用的数据对象导入列表,以及一个或多个带有when条件的规则。以下
Wage.drl文件包含Wage规则,用于导入Person类,计算 wage 和每小时速率值,并根据结果显示一个信息:package com.sample; import com.sample.Person; dialect "java" rule "Wage" when Person(hourlyRate * wage > 100) Person(name : firstName, surname : lastName) then System.out.println("Hello" + " " + name + " " + surname + "!"); System.out.println("You are rich!"); end-
点 File
Save 保存文件。 创建主类并将其保存到与您创建的 Java 对象相同的目录中。主类将加载 KIE 基础并执行规则。
注意您还可以在单个 Java 对象文件中添加
main ()方法和Person类,类似于 dolsTest.java示例文件。在主类中,添加所需的
导入语句来导入 KIE 服务、KIE 容器和 KIE 会话。然后,加载 KIE 基础、插入事实,并从main ()方法执行规则,将事实模型传递给规则。在本例中,使用所需的导入和
main ()方法在my-project/src/main/java/com.sample中创建RulesTest.java文件:package com.sample; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; public class RulesTest { public static final void main(String[] args) { try { // Load the KIE base: KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession(); // Set up the fact model: Person p = new Person(); p.setWage(12); p.setFirstName("Tom"); p.setLastName("Summers"); p.setHourlyRate(10); // Insert the person into the session: kSession.insert(p); // Fire all rules: kSession.fireAllRules(); kSession.dispose(); } catch (Throwable t) { t.printStackTrace(); } } }-
点 File
Save 保存文件。 -
在项目中创建并保存所有 DRL 资产后,右键单击项目文件夹并选择 Run As
Java Application 以构建项目。如果项目构建失败,请解决 CodeReady Studio 中下窗口的 Problems 选项卡中描述的任何问题,然后重试验证项目,直到项目构建为止。
如果您右键点击项目并选择 Run As,然后进入 Run As
要将新规则资产与 Red Hat Process Automation Manager 中的现有项目集成,您可以将新项目编译为知识 JAR (KJAR),并将它作为依赖项添加到 Business Central 中项目的 pom.xml 文件中。要访问 Business Central 中的项目 pom.xml 文件,您可以在屏幕左侧的 Project Explorer 菜单中选择任何现有资产,然后点击 Customize View gear 图标并选择 Repository View