Springboot integra el motor de reglas de drools

Drools es un motor de reglas de código abierto basado en Java que permite a los usuarios definir y administrar reglas comerciales para automatizar el proceso de toma de decisiones en las aplicaciones. A continuación se muestra un ejemplo simple que muestra cómo integrar el motor de reglas de Drools en una aplicación Spring Boot.

  1. agregar dependencias

Primero, agregue la dependencia de Drools a la aplicación Spring Boot. Las siguientes dependencias se pueden agregar al archivo pom.xml:

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-core</artifactId>
    <version>7.62.0.Final</version>
</dependency>
  1. Crear archivo de reglas

A continuación, debe crear un archivo de reglas que defina las reglas comerciales. Puede crear un archivo llamado rules.drl en el directorio de recursos y completar el siguiente contenido:

package com.example.rules

import com.example.model.Person

rule "Age greater than 18"
    when
        person : Person(age > 18)
    then
        person.setEligibleForVoting(true);
end

En este ejemplo, definimos una regla denominada Edad mayor de 18 años, que establecerá la propiedad elegibleForVoting en verdadero para los objetos Person cuya edad sea mayor de 18 años.

  1. Crear clases modelo

A continuación, se debe crear una clase de modelo para representar los datos comerciales. Puede crear una clase llamada Persona en el paquete com.example.model y completar lo siguiente:

package com.example.model;

public class Person {
    
    
    private int age;
    private boolean eligibleForVoting;

    // getters and setters
}

En este ejemplo, definimos una clase denominada Persona que contiene una propiedad de edad y una propiedad elegible para votar.

  1. Crear un servicio de motor de reglas

A continuación, se debe crear un servicio de motor de reglas para cargar el archivo de reglas y ejecutar las reglas. Puede crear una clase llamada DroolsService en el paquete com.example.service y completar lo siguiente:

package com.example.service;

import com.example.model.Person;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.springframework.stereotype.Service;

@Service
public class DroolsService {
    
    

    public void executeRules(Person person) {
    
    
        KieServices kieServices = KieServices.Factory.get();
        KieContainer kieContainer = kieServices.getKieClasspathContainer();
        KieSession kieSession = kieContainer.newKieSession();
        kieSession.insert(person);
        kieSession.fireAllRules();
        kieSession.dispose();
    }
}

En este ejemplo, definimos una clase llamada DroolsService que contiene un método executeRules que carga el archivo de reglas y ejecuta las reglas. En el método executeRules, primero usamos la clase de fábrica KieServices para obtener la instancia de KieServices y luego usamos la instancia de KieServices para obtener la instancia de KieContainer. A continuación, usamos la instancia de KieContainer para obtener la instancia de KieSession e insertamos el objeto Person en KieSession. Finalmente, ejecutamos las reglas usando el método fireAllRules de la instancia de KieSession y cerramos la KieSession usando el método dispose.

  1. Llame al servicio del motor de reglas

Ahora, podemos llamar al servicio del motor de reglas en el controlador u otros servicios. Puede crear un controlador llamado PersonController en el paquete com.example.controller y completar lo siguiente:

package com.example.controller;

import com.example.model.Person;
import com.example.service.DroolsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/person")
public class PersonController {
    
    

    @Autowired
    private DroolsService droolsService;

    @PostMapping
    public void checkEligibility(@RequestBody Person person) {
    
    
        droolsService.executeRules(person);
    }
}

En este ejemplo, definimos un controlador llamado PersonController que contiene un método llamado checkEligibility para llamar al servicio del motor de reglas. En el método checkEligibility, pasamos el objeto Person como el cuerpo de la solicitud y lo pasamos al método executeRules de DroolsService.

Ahora, podemos usar una solicitud POST para enviar un objeto Person al punto final /person, y el servicio del motor de reglas juzgará si el objeto Person cumple con las condiciones de acuerdo con las reglas en el archivo de reglas, y establecerá la propiedad elegibleForVoting en verdadero o FALSO.

Nota: El ejemplo anterior es solo un ejemplo simple y debe modificarse y optimizarse de acuerdo con la situación específica en la aplicación real. Por ejemplo, puede colocar el archivo de reglas en un archivo separado y usar FileSystemResource en DroolsService para cargar el archivo de reglas; también puede usar las tablas de decisiones proporcionadas por Drools para definir reglas, etc.

Supongo que te gusta

Origin blog.csdn.net/m0_68705273/article/details/131008613
Recomendado
Clasificación