Liste der Rule Engines in Java

Sheeraz Gul 12 Oktober 2023
Liste der Rule Engines in Java

Die Rule Engines trennen die Geschäftslogik vom Quellcode. Dieses Tutorial beschreibt einige der beliebtesten Rule Engines von Java.

Liste der Rule Engines in Java

Die Rule Engines machen es einfach, die Geschäftslogik vom Code zu trennen. Die meisten gängigen Rule Engines in Java implementieren JSR94.

Wir können die Regelmaschinen als ausgeklügelte Wenn/Dann-Anweisungen sehen. Hier sind einige Vorteile von Rule Engines in Java:

  1. Die Regel-Engines bieten eine große Wiederverwendbarkeit, wenn wir sie getrennt halten.
  2. Die Regelmaschinen reduzieren die Komplexität, weil wir den Quellcode nicht entwickeln müssen.
  3. Die Regel-Engines bieten Flexibilität, wo wir die Regeln ändern können, ohne irgendetwas im Quellcode zu ändern.

Hier sind einige berühmte Regel-Engines in Java:

Drools

Drools, auch bekannt als Business Rules Management System BRMS, bietet eine zentrale Business Rule Engine mit einer Web-Authoring- und Rules-Management-Anwendung. Es bietet auch volle Laufzeitunterstützung für das Entscheidungsmodell mit Notation (DMN) und ein Plugin für die Eclipse-IDE.

Regelbuch

Das RuleBook bietet eine einfache DSL, die flexibel ist; Wenn wir eine größere Sammlung von Regeln haben, können wir sie in kommentierte POJOs einbauen, und das RuleBook verwandelt das Paket in ein Regelbuch. Es ist einfach, eine Lambda-fähige spezifische Sprache zu verwenden.

Versuchen wir eine einfache Regeldefinition mit dem RuleBook:

Die Maven-Abhängigkeit für das Regelbuch ist:

<dependency>
    <groupId>com.deliveredtechnologies</groupId>
    <artifactId>rulebook-core</artifactId>
    <version>${version}</version>
</dependency>

Sehen wir uns nun das Regelbuchbeispiel an. Lassen Sie uns zuerst eine Regel erstellen:

public class DelftstackRule {
  public RuleBook<Object> defineDelftstackRules() {
    return RuleBookBuilder.create()
        .addRule(rule -> rule.withNoSpecifiedFactType().then(f -> System.out.print("Delftstack")))
        .addRule(rule
            -> rule.withNoSpecifiedFactType().then(
                f -> System.out.println("The Best Tutorial Site")))
        .build();
  }
}

Die Hauptmethode für die obige Regel ist:

public static void main(String[] args) {
  DelftstackRule ruleBook = new DelftstackRule();
  ruleBook.defineDelftstackRules().run(new FactMap<>());
}

Einfache Regeln

Easy Rules, eine leichtgewichtige Regel-Engine-API, bietet die Regelabstraktion, um Regeln basierend auf Aktionen und Bedingungen zu erstellen. Die EasyRule RulesEngine-API durchläuft eine Reihe von Regeln, um Aktionen auszuführen und Bedingungen zu testen.

Es ist auch annotations- und POJO-basiert und unterstützt auch zusammengesetzte Regelkonstruktionen; Es unterstützt Ausdruckssprachen wie SpEL und MVEL. Hier ist ein Beispiel für EasyRule:

Die Maven-Abhängigkeit;

<dependency>
    <groupId>org.jeasy</groupId>
    <artifactId>easy-rules-core</artifactId>
    <version>3.3.0</version>
</dependency>

Das Beispiel kann sein:

@Rule(name = "Delftstack rule", description = "Always say Delftstack The Best Tutorial Site")
public class DelftstackRule {
  @Condition
  public boolean when() {
    return true;
  }

  @Action
  public void then() throws Exception {
    System.out.println("Delftstack The Best Tutorial Site");
  }
}

Der obige Code erstellt eine Regel, die jedes Mal Delftstack The Best Tutorial Site druckt. Um diesen Code zu starten, verwenden Sie den folgenden Code mit der Hauptfunktion:

public class Launch {
  public static void main(String... args) {
    Facts facts = new Facts();

    // create rules
    Rules rules = new Rules();
    rules.register(new DelftstackRule());

    // create a rules engine and fire rules on known facts
    RulesEngine Rules_Engine = new DefaultRulesEngine();
    Rules_Engine.fire(rules, facts);
  }
}

OpenL Tablets

Das OpenL Tablets ist eine Business Rule Engine und ein Business Rule Management System. Es enthält Webstudio, Webservices, Regelrepository und Business Rules Engines.

Sehen wir uns ein Beispiel an:

Die Maven-Abhängigkeit für OpenL Tablets:

<dependency>
    <groupId>org.openl</groupId>
    <artifactId>org.openl.core</artifactId>
    <version>${version}</version>
</dependency>
<dependency>
    <groupId>org.openl.rules</groupId>
    <artifactId>org.openl.rules</artifactId>
    <version>${version}</version>
</dependency>

Das Beispiel kann sein:

public class Main {
  private DelftstackRules instance;

  public static void main(String[] args) {
    Main rules = new Main();

    rules.process(aCase);
  }

  public void process(Case aCase) {
    EngineFactory Engine_Factory = new RulesEngineFactory(
        getClass().getClassLoader().getResource("rules.xls"), DelftstackRules.class);
    instance = Engine_Factory.newEngineInstance();
    instance.executePromotion(aCase, new Response());
  }
}

Der obige Code erstellt die Delftstack-Regeln aus der Xls-Datei.

Dies waren einige beliebte Regel-Engines. Zum Herunterladen oder für weitere Informationen besuchen Sie bitte die folgenden Links:

  1. Drools
  2. Regelbuch
  3. Einfache Regeln
  4. OpenL-Tablets
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook