Laboratorio N.° 2 — Fundamentos de Sistemas de Información
Universidad de Antioquia · Facultad de Ingeniería
Este proyecto implementa un sistema de evaluación de créditos bancarios basado en reglas de negocio, desarrollado con Drools como motor de inferencia y Spring Boot como framework de aplicación.
El sistema permite evaluar solicitudes de crédito de tres tipos —personal, hipotecario y automotriz— aplicando reglas definidas en un archivo .drl (Drools Rule Language). Según los datos del cliente (puntaje crediticio, ingresos mensuales, edad) y el tipo de crédito solicitado, el motor de reglas determina automáticamente si la solicitud es aprobada o rechazada, el monto aprobado y la tasa de interés correspondiente.
Como característica adicional, el proyecto integra Spring AI con GPT-4o-mini (OpenAI) para generar explicaciones en lenguaje natural sobre las decisiones tomadas por Drools.
La aplicación expone tanto una interfaz web con formularios (Thymeleaf) como una API REST para integración con otros sistemas.
| Regla | Condición | Resultado |
|---|---|---|
RejectLowCreditScore |
Puntaje crediticio < 500 | Rechazado |
RejectUnderAge |
Edad < 18 años | Rechazado |
PersonalCreditApproval |
Tipo: personal · Score ≥ 500 · Ingreso ≥ $1.000 | Aprobado |
MortgageCreditApproval |
Tipo: hipotecario · Score ≥ 600 · Ingreso ≥ $3.000 | Aprobado |
AutoCreditApproval |
Tipo: automotriz · Score ≥ 550 · Ingreso ≥ $1.500 | Aprobado |
RejectInvalidCreditType |
No cumple requisitos mínimos | Rechazado con mensaje |
| Herramienta | Versión |
|---|---|
| Java | 17 |
| Spring Boot | 3.5.11 |
| Drools (motor de reglas) | 7.74.1.Final |
| Spring AI | 1.1.3 |
| Maven | Incluido vía Maven Wrapper (mvnw) |
| Thymeleaf | Gestionado por Spring Boot |
Todas las dependencias se gestionan en el archivo pom.xml:
| Dependencia | Descripción |
|---|---|
spring-boot-starter-web |
API REST y servidor web embebido |
spring-boot-starter-thymeleaf |
Motor de plantillas HTML para la interfaz web |
spring-boot-starter-validation |
Validación de datos de entrada |
spring-boot-devtools |
Recarga automática en desarrollo |
drools-core |
Núcleo del motor de reglas Drools |
drools-compiler |
Compilador de archivos .drl |
drools-mvel |
Soporte para expresiones MVEL en reglas |
drools-decisiontables |
Soporte para tablas de decisión |
kie-api |
API de KIE para gestión de sesiones Drools |
spring-ai-starter-model-openai |
Integración con modelos de OpenAI (GPT-4o-mini) |
spring-boot-starter-test |
Pruebas unitarias e integración |
bankrules/
├── src/
│ └── main/
│ ├── java/com/udea/bankrules/
│ │ ├── BankrulesApplication.java # Punto de entrada
│ │ ├── config/
│ │ │ └── DroolsConfig.java # Configuración del KieContainer
│ │ ├── controller/
│ │ │ └── CreditEvaluationController.java # Endpoints web y REST
│ │ ├── model/
│ │ │ ├── Customer.java # Datos del cliente
│ │ │ ├── CreditRequest.java # Solicitud de crédito
│ │ │ └── CreditResponse.java # Respuesta del sistema
│ │ ├── service/
│ │ │ └── CreditEvaluationService.java # Lógica de evaluación con Drools
│ │ └── ai/
│ │ └── AIExplanationService.java # Explicaciones con OpenAI
│ └── resources/
│ ├── rules/
│ │ └── credit_rules.drl # Reglas de negocio en Drools
│ ├── templates/
│ │ ├── credit_form.html # Formulario de solicitud
│ │ └── credit_result.html # Resultado de la evaluación
│ └── application.yaml # Configuración de la app
├── pom.xml
└── mvnw / mvnw.cmd # Maven Wrapper
El proyecto usa GPT-4o-mini para explicar las decisiones en lenguaje natural. Para habilitarlo, agrega tu API key en src/main/resources/application.yaml:
spring:
ai:
openai:
api-key: TU_API_KEY_AQUI
chat:
options:
model: gpt-4o-miniSi no tienes API key de OpenAI, el proyecto igual funciona para evaluar créditos. Solo las explicaciones con IA no estarán disponibles.
- Java 17 instalado → Descargar aquí
- Git instalado → Descargar aquí
- Conexión a internet (para descargar dependencias Maven la primera vez)
No es necesario instalar Maven ni ningún IDE adicional. El proyecto incluye el Maven Wrapper (
mvnw).
Abre una terminal (CMD, PowerShell o Terminal de Mac/Linux) y ejecuta:
git clone https://github.com/madeseor/BankRules-with-Drools.git
cd BankRules-with-DroolsEn Linux / Mac:
./mvnw spring-boot:runEn Windows:
mvnw.cmd spring-boot:runLa primera vez descargará todas las dependencias automáticamente. Espera hasta ver en consola:
Started BankrulesApplication in X.XXX seconds
Abre tu navegador y ve a:
http://localhost:8080/credit/form
Verás el formulario para ingresar los datos del cliente y solicitar la evaluación de crédito.
- Abre IntelliJ IDEA.
- Selecciona File → Open y elige la carpeta del proyecto clonado.
- IntelliJ detectará automáticamente el proyecto Maven y descargará las dependencias.
- Espera a que termine de indexar.
- Ejecuta la clase
BankrulesApplication.javahaciendo clic en el botón ▶. - Accede en el navegador a
http://localhost:8080/credit/form.
| Método | URL | Descripción |
|---|---|---|
GET |
/credit/form |
Formulario web de solicitud de crédito |
POST |
/credit/evaluate |
Procesa la solicitud desde el formulario web |
POST |
/credit/api/evaluate |
API REST — recibe JSON, retorna JSON |
POST /credit/api/evaluate
Content-Type: application/json
{
"customer": {
"name": "Ana Torres",
"age": 30,
"monthlyIncome": 4000,
"creditScore": 720
},
"creditType": "hipotecario",
"requestAmount": 150000
}