Java 中的规则引擎为我们提供了一个以灵活且定义的方式管理和执行业务规则的框架。这些引擎使开发人员能够在不更改核心应用程序的情况下更轻松地修改和理解规则,从而将业务逻辑与应用程序代码分开。
规则引擎旨在评估条件并根据指定规则触发操作。它们还为我们提供了一种更加动态和适应性更强的方法来处理复杂的决策过程。本文介绍了允许开发人员自动化其软件应用程序逻辑的各种规则引擎。通过集成这些规则引擎,开发人员可以为业务策略的自动化做出重大贡献,最终产生更强大、更有效的软件应用程序。
Java 中的规则引擎是什么?
Java中的规则引擎确实是强大的工具,可以自动化业务逻辑,从而实现更高效的决策过程。这些引擎允许开发人员独立于应用程序代码定义和管理业务规则,提供灵活的条件和操作,从而允许动态决策方法来处理复杂的决策场景。将业务规则与核心应用程序逻辑分离有助于更好的代码组织、可重用性和易于维护。
规则引擎的好处:
- 它为我们提供了很好的代码可重用性。
- 由于规则引擎独立于相关应用程序代码运行,因此无需直接操作源代码,从而降低了复杂性。
- 它还提供了可读性和灵活性,我们可以在不更改源代码中的任何内容的情况下更改规则。
- 它允许将业务规则与应用程序代码分离,而不影响核心程序。
- 它有助于业务专家和开发人员在不了解高级编码技能的情况下进行协作,从而使决策非常有效和合乎逻辑。
规则引擎如何工作?
第 1 步:设置您的 Java 项目
要设置 Java 项目,您需要创建一个新的 Java 项目,也可以使用现有项目。在 Java 项目中实现规则引擎之前,您必须准备一个 Java 项目,并在 Java 项目中配置所需的设置。
步骤 2:在 pom.xml 文件或 yml 文件中添加规则引擎工具依赖项。
例如,如果您使用的是Maven,则在 xml 文件中添加 Drools 引擎的依赖项。
org.drools
drools-core
7.65.0.Final
第 3 步:创建事实类
事实类是指表示将应用规则的数据或事实的类,在以下示例中,“Person”类被视为事实类。通常在规则引擎中,特别是在Drools规则引擎的情况下,class.java被替换为事实类并且通常表示为class.java或person.java。
// Person.java public class Person {
private String name;
private int age;
private boolean eligibleForDiscount;
private boolean specialStatus; // Your Getters and setters
}
第 4 步:在 Java 项目中编写规则
在这里,我们为 Drools 规则引擎创建一个名为“GeeksRule.drl”的规则文件,其中“drl”是 Drools 规则的扩展名。
// GeeksRule.drl rule "Test Rule" when
$person: Person(age < 30, name.contains("Test"))
then
$person.setSpecialStatus(true);
end
“Test”规则是分配给该规则的名称,它用作识别和可读性的标签,“结束”标记表示该特定规则的结束。这条规则规定,如果一个人的年龄小于30岁,并且其名字中包含“Test”,那么他们将被授予特殊身份。
第 5 步:在 Java 代码中使用 Drools
创建一个 Java 类以使用 Drools 来评估 Test 规则。
import org.kie.api.*;
import org.kie.api.runtime.*;
public class RuleEngineExample {
public static void main(String[] args) {
KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.getKieClasspathContainer();
KieBase kieBase = kieContainer.getKieBase();
KieSession kieSession = kieBase.newKieSession();
Person person = new Person("Test User", 25);
kieSession.insert(person);
int ruleFiredCount = kieSession.fireAllRules();
System.out.println("Rules fired: " + ruleFiredCount);
System.out.println("Is person eligible for a special status? " + person.isSpecialStatus());
kieSession.dispose();
}
}
第 6 步:运行 Java 项目
运行您的 Java 项目,您应该看到输出,指示 Test 规则是否被解雇,以及该人是否有资格根据提供的姓名和年龄获得特殊状态。上面的示例演示了如何使用 Drools 在 Java 项目中应用与 Test 相关的规则。根据您的特定用例的需要调整规则和数据对象。
Java 中流行的规则引擎
1.Drools
Drools规则引擎被广泛称为“业务规则管理系统”(BRMS),它被广泛用作Java的开源规则引擎,它有助于鼓励开发人员实现和管理此类复杂的业务逻辑。具有专有功能,Drools 是不同领域中基于规则的软件应用程序的 Java 开发人员的首选。
// Define a rule rule "Example Rule" when
$fact: SomeObject(property > 10)
then // Actions to be executed when the rule is matched $fact.setFlag(true);
end
2.Jess
Jess是一个专为Java平台设计的规则引擎,在开发专家系统时经常在Java应用程序中使用。其用户友好的脚本语言和强大的推理引擎使其非常适合复杂的决策制定,并有助于将其建立为此类任务的有价值的选择,这些任务需要在 Java 应用程序中使用基于高级规则的系统。
// Define a rule
(defrule example-rule
(some-object (property > 10))
=>
(modify some-object (set-flag true)))
3. Easy Rule
Easy Rules 被认为是 Java 的轻量级且简单的规则引擎,其突出之处在于提供规则抽象,用于根据定义的操作和条件创建规则。它的简单性和灵活性使其成为寻求简单而有效的解决方案来实现和管理 Java 应用程序中的规则并促进应用程序中业务逻辑的无缝集成的开发人员的首选。
// Define a rule
Rule someRule = new BasicRuleBuilder()
.name("Example Rule")
.when(facts -> facts.get("property", Integer.class) > 10)
.then(facts -> facts.put("flag", true))
.build();
4. RuleBook
规则手册提供了用户友好且灵活的 DSL,使其规则创建变得简单。而对于较大的规则集合,开发人员可以将规则平滑地集成到带注释的POJO类中。RuleBook 有效地将这个包转换为有组织的规则手册,从而简化了 Java 应用程序中各种规则的组织和管理。
public class DelftstackRule {
public RuleBook
到了这里,关于Java中的规则引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!