Liste des moteurs de règles en Java

Sheeraz Gul 12 octobre 2023
Liste des moteurs de règles en Java

Les moteurs de règles séparent la logique métier du code source. Ce didacticiel décrit certains des moteurs de règles les plus populaires de Java.

Liste des moteurs de règles en Java

Les moteurs de règles permettent de séparer facilement la logique métier du code. La plupart des moteurs de règles populaires en Java implémentent le JSR94.

Nous pouvons voir les moteurs de règles comme une instruction si/alors sophistiquée. Voici quelques avantages des moteurs de règles en Java :

  1. Les moteurs de règles offrent une grande réutilisation lorsque nous les gardons séparés.
  2. Les moteurs de règles réduisent la complexité car nous n’avons pas besoin de développer le code source.
  3. Les moteurs de règles offrent une flexibilité permettant de modifier les règles sans rien changer au code source.

Voici quelques moteurs de règles célèbres en Java :

Bave

Drools, également connu sous le nom de système de gestion des règles métier BRMS, fournit un moteur de règles métier de base avec une application Web de création et de gestion des règles. Il fournit également un support d’exécution complet pour le modèle de décision avec notation (DMN) et un plugin pour Eclipse IDE.

Livre de règles

Le RuleBook fournit un DSL simple et flexible ; si nous avons une plus grande collection de règles, nous pouvons les construire dans des POJO annotés, et le RuleBook transformera le paquet en un livre de règles. Il est facile d’utiliser un langage spécifique compatible lambda.

Essayons une définition de règle simple à l’aide du RuleBook :

La dépendance maven pour le livre de règles est :

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

Voyons maintenant l’exemple du livre de règles. Commençons par créer une règle :

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();
  }
}

La méthode principale pour la règle ci-dessus sera :

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

Règles faciles

Easy Rules, une API de moteur de règles légère, fournit l’abstraction de règles pour créer des règles basées sur des actions et des conditions. L’API EasyRule RulesEngine exécute un ensemble de règles pour exécuter des actions et tester des conditions.

Il est également basé sur les annotations et POJO et prend également en charge les constructions de règles composites. il prend en charge les langages d’expression comme SpEL et MVEL. Voici un exemple pour EasyRule :

La dépendance Maven ;

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

L’exemple peut être :

@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");
  }
}

Le code ci-dessus crée une règle qui imprime à chaque fois Delftstack The Best Tutorial Site. Pour lancer ce code utilisez le code ci-dessous avec la fonction main :

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

Les OpenL Tablets sont un moteur de règles métier et un système de gestion de règles métier. Il contient Webstudio, des services Web, un référentiel de règles et des moteurs de règles métier.

Voyons un exemple :

La dépendance Maven pour les tablettes OpenL :

<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>

L’exemple peut être :

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());
  }
}

Le code ci-dessus crée les règles de delftstack à partir du fichier Xls.

Il s’agissait de quelques moteurs de règles populaires. Pour télécharger ou pour plus d’informations, veuillez visiter les liens ci-dessous :

  1. Drools
  2. Livre de règles
  3. Règles faciles
  4. OpenL Tablets
Auteur: Sheeraz Gul
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