Lista de motores de reglas en Java

Sheeraz Gul 12 octubre 2023
Lista de motores de reglas en Java

Los motores de reglas separan la lógica empresarial del código fuente. Este tutorial describe algunos de los motores de reglas más populares de Java.

Lista de motores de reglas en Java

Los motores de reglas facilitan la separación de la lógica empresarial del código. La mayoría de los motores de reglas populares en Java implementan el JSR94.

Podemos ver los motores de reglas como una declaración sofisticada de si/entonces. Aquí hay algunas ventajas de los motores de reglas en Java:

  1. Los motores de reglas brindan una gran reutilización cuando los mantenemos separados.
  2. Los motores de reglas reducen la complejidad porque no necesitamos desarrollar el código fuente.
  3. Los motores de reglas brindan flexibilidad donde podemos cambiar las reglas sin cambiar nada en el código fuente.

Aquí hay algunos motores de reglas famosos en Java:

Drools

Drools, también conocido como sistema de gestión de reglas de negocio BRMS, proporciona un motor de reglas de negocio central con una aplicación de gestión de reglas y creación web. También proporciona soporte de tiempo de ejecución completo para el modelo de decisión con notación (DMN) y un complemento para Eclipse IDE.

Libro de reglas

El RuleBook proporciona un DSL simple que es flexible; si tenemos una colección más grande de reglas, podemos construirlas en POJO anotados, y el libro de reglas transformará el paquete en un libro de reglas. Es fácil de usar un lenguaje específico habilitado para lambda.

Probemos una definición de regla simple usando RuleBook:

La dependencia maven para el libro de reglas es:

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

Ahora veamos el ejemplo del libro de reglas. Primero vamos a crear una regla:

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

El método main para la regla anterior será:

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

Reglas fáciles

Easy Rules, una API de motor de reglas ligera, proporciona la abstracción de reglas para crear reglas basadas en acciones y condiciones. La API de EasyRule RulesEngine se ejecuta a través de un conjunto de reglas para ejecutar acciones y condiciones de prueba.

También está basado en anotaciones y POJO y admite construcciones de reglas compuestas; admite lenguajes de expresión como SpEL y MVEL. Aquí hay un ejemplo para EasyRule:

La Dependencia Maven;

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

El ejemplo puede ser:

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

El código anterior crea una regla que cada vez que imprime Delftstack The Best Tutorial Site. Para iniciar este código, use el siguiente código con la función principal:

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

El OpenL Tablets es un motor de reglas de negocio y un sistema de gestión de reglas de negocio. Contiene Webstudio, servicios web, repositorio de reglas y motores de reglas comerciales.

Veamos un ejemplo:

La dependencia de Maven para 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>

El ejemplo puede ser:

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

El código anterior crea las reglas delftstack a partir del archivo Xls.

Estos fueron algunos motores de reglas populares. Para descargar o para obtener más información, visite los siguientes enlaces:

  1. Drools
  2. Rule Book
  3. Reglas fáciles
  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