Demostración de uso del motor de reglas Apache Jexl

Tabla de contenido

1. ¿Qué es el motor de reglas JEXL?

2. Otros motores de reglas

3. Visualización de casos de uso


1. ¿Qué es el motor de reglas JEXL?

Jexl es un lenguaje de expresión basado en Java para calcular y manipular valores en aplicaciones Java. Puede usarse como parte de un motor de reglas, pero no fue diseñado específicamente para ello. En comparación con otros motores diseñados para motores de reglas, Jexl tiene las siguientes ventajas y desventajas.

ventaja

  • Fácil de aprender y usar : la sintaxis de Jexl es simple e intuitiva, lo que facilita su comprensión y uso. Su API también es muy fácil de usar, muy amigable para principiantes.

  • Alta flexibilidad : Jexl tiene una alta flexibilidad, lo que permite a los usuarios personalizar funciones, variables y operadores para satisfacer diversas necesidades.

  • Bien integrado con Java : Jexl está basado en Java, por lo que puede integrarse fácilmente con aplicaciones Java. Puede interactuar fácilmente con objetos Java y utilizar el mecanismo de reflexión de Java para acceder a clases y métodos.

defecto

  • No diseñado para motores de reglas : si bien es posible utilizar Jexl como parte de un motor de reglas, no fue diseñado para ello. Por lo tanto, pueden existir algunas limitaciones y deficiencias al tratar con reglas comerciales complejas.

  • Falta de funciones de administración de reglas : Jexl en sí solo proporciona funciones de cálculo y análisis de expresiones. Si necesita funciones de administración de reglas más complejas, como edición de reglas, control de versiones y procesos de aprobación, debe implementarlas usted mismo o utilizar otros motores de reglas.

  • Mal rendimiento : dado que Jexl es un lenguaje interpretado, tiene un rendimiento relativamente bajo. Si necesita procesar grandes cantidades de datos o escenarios de alta concurrencia, es posible que deba considerar el uso de otros motores de reglas.

2. Otros motores de reglas

Además de Jexl, hay muchos otros motores de reglas para elegir; los siguientes son algunos de los más comunes:

  1. Drools: Drools es un motor de reglas de código abierto que permite a los desarrolladores separar la lógica empresarial del código de la aplicación. Utiliza un lenguaje basado en reglas (DRL) para expresar y ejecutar reglas y proporciona la capacidad de inferir automáticamente resultados de salida de múltiples fuentes de datos.

  2. Jess: Jess es otro lenguaje de programación basado en reglas diseñado para integrarse con Java. Se puede utilizar para construir sistemas expertos, sistemas de soporte a decisiones comerciales, etc. Jess también incluye funciones avanzadas como coincidencia de patrones y manipulación de objetos.

  3. Easy Rules: Easy Rules es un marco de motor de reglas liviano que permite a los desarrolladores definir y aplicar reglas simples en las aplicaciones. Admite anotaciones y expresiones Lambda y proporciona integración con Spring y CDI.

  4. Apache Spark MLlib: Apache Spark MLlib es una biblioteca de aprendizaje automático a gran escala que incluye muchos algoritmos y herramientas para tareas como clasificación, regresión, agrupación en clústeres y filtrado colaborativo. También proporciona un conjunto de motores de reglas para procesar datos por secuencias y por lotes.

  5. NRules: NRules es un motor de reglas .NET que permite a los desarrolladores definir y hacer cumplir reglas. Está escrito en C# y proporciona integración con LINQ, lo que permite a los desarrolladores filtrar datos mediante consultas similares a SQL.

Estos son algunos motores de reglas comunes, cada uno de los cuales tiene sus propias ventajas y desventajas y escenarios aplicables. Los desarrolladores deben elegir el más adecuado.

3. Visualización de casos de uso

3.1 Introduciendo dependencias

Agregue las siguientes dependencias en el archivo pom.xml:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-jexl3</artifactId>
    <version>3.2.0</version>
</dependency>

3.2 Actualizar dependencias de maven

Guarde el archivo y actualice el proyecto Maven. Puede ejecutar los siguientes comandos en la línea de comando:mvn clean install

3.3 Casos de escritura 

import org.apache.commons.jexl3.*;

public class JexlTest{

    public static void main(String[] args) {
        // 创建 JEXL 引擎对象
        JexlEngine jexl = new JexlBuilder().create();

        // 定义表达式
        String expression = "a + b * c";

        // 创建 JEXL 表达式对象
        JexlExpression jexlExpression = jexl.createExpression(expression);

        // 准备数据
        JexlContext context = new MapContext();
        context.set("a", 2);
        context.set("b", 3);
        context.set("c", 4);

        // 计算结果
        Integer result = (Integer) jexlExpression.evaluate(context);

        // 输出结果
        System.out.println(result); // 输出 14
    }
}

En el ejemplo anterior, calculamos a + b * cel valor de usar JEXL y lo enviamos a la consola. Primero creamos un JexlEngineobjeto, luego definimos la expresión a evaluar y los datos a proporcionar para la expresión.

A continuación, creamos un MapContextobjeto que contiene los datos que queremos introducir en la expresión. Establecemos los valores de las variables a, by para que sean , y .c234

Luego usamos JexlEngineel objeto para crear un JexlExpressionobjeto que represente la expresión a evaluar. Evaluamos evaluatela expresión usando el método, pasando MapContextel objeto como argumento.

Finalmente, convertimos el resultado del cálculo a un número entero y lo enviamos a la consola.

 

Supongo que te gusta

Origin blog.csdn.net/wanghaiping1993/article/details/130069216
Recomendado
Clasificación