第 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 资产列表时。

您可以使用 Red Hat CodeReady Studio 创建带有规则的 DRL 文件,并将文件与 Red Hat Process Automation Manager 决策服务集成。如果您已将 Red Hat CodeReady Studio 用于决定服务并希望使用相同的工作流,则创建 DRL 规则的方法非常有用。如果您还没有使用这个方法,则建议创建 DRL 文件和其他规则资产,建议使用 Red Hat Process Automation Manager 的 Business Central 接口。

先决条件

流程

  1. 在 Red Hat CodeReady Studio 中,点击 File New Project
  2. 在打开的 New Project 窗口中,选择 dols d Project 并点 Next
  3. 单击第二个图标,以 创建一个项目,并将它填充一些示例文件,以帮助您快速开始。点 Next
  4. 输入项目名称 并选择 Maven 单选按钮作为项目构建选项。GAV 值会自动生成。您可以根据项目的要求更新这些值:

    • 组 ID: com.sample
    • 工件 ID: my-project
    • Version: 1.0.0-SNAPSHOT
  5. 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 WorldGoodBye 规则示例。
    • com .sample 软件包中的 src/main/java 目录下的 droolsTest.java 文件。drools 测试类可用于执行 Sample.drl 规则。
    • dr oy 库 目录,它充当包含执行所需的 JAR 文件的自定义类路径。

    您可以根据需要,使用新配置编辑现有的 Sample.drl 文件和 DroolsTest.java 文件,或者创建新规则和对象文件。在此过程中,您要创建新规则和新的 Java 对象。

  6. 创建一个 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;
        }
      }
  7. File Save 保存文件。
  8. 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
  9. File Save 保存文件。
  10. 创建主类并将其保存到与您创建的 Java 对象相同的目录中。主类将加载 KIE 基础并执行规则。

    注意

    您还可以在单个 Java 对象文件中添加 main () 方法和 Person 类,类似于 dols Test.java 示例文件。

  11. 在主类中,添加所需的 导入 语句来导入 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();
        }
      }
    }
  12. File Save 保存文件。
  13. 在项目中创建并保存所有 DRL 资产后,右键单击项目文件夹并选择 Run As Java Application 以构建项目。如果项目构建失败,请解决 CodeReady Studio 中下窗口的 Problems 选项卡中描述的任何问题,然后重试验证项目,直到项目构建为止。
如果 Run As Java Application 选项不可用

如果您右键点击项目并选择 Run As,然后进入 Run As Run Configuration,请右键点击 Java Application ,然后点击 New。然后,在主 选项卡中,浏览并选择 您的项目 和相关 主类。点 Apply,然后点 Run 来测试该项目。下次右键点击项目文件夹时,将显示 Java Application 选项。

要将新规则资产与 Red Hat Process Automation Manager 中的现有项目集成,您可以将新项目编译为知识 JAR (KJAR),并将它作为依赖项添加到 Business Central 中项目的 pom.xml 文件中。要访问 Business Central 中的项目 pom.xml 文件,您可以在屏幕左侧的 Project Explorer 菜单中选择任何现有资产,然后点击 Customize View gear 图标并选择 Repository View pom.xml

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部