Saltar a contenido

Componentes del Framework

BeaPro está organizado en módulos enfocados, cada uno responsable de un aspecto específico del ciclo de vida de la automatización.

bot.py: Orquestador Principal

El punto de entrada de la automatización. Coordina el flujo de ejecución completo:

  1. Llama a initialize() para configurar el entorno
  2. Itera sobre los elementos de la fuente de datos
  3. Llama a process_item(item) para cada elemento
  4. Maneja excepciones automáticamente
  5. Llama a finalize() para limpiar y reportar resultados

Por lo general, no necesitas modificar bot.py: tu lógica de automatización va en framework/process.py.


/process.py: Lógica de Automatización

Aquí es donde agregas tus pasos de automatización.

La función process_item(item) se llama una vez por elemento en tu fuente de datos. Accede a los campos del elemento usando claves de diccionario:

def process_item(item):
    name = item['name']
    email = item['email']
    # ... tus pasos de automatización aquí

/state.py: Gestión de Estado

Gestiona el estado de ejecución compartido entre todos los módulos:

  • Contadores de éxito y error
  • Elemento siendo procesado actualmente
  • Instancias del bot (WebBot, DesktopBot)
  • Verificación de interrupción
  • Cálculo del estado de la tarea (SUCCESS, FAILED, PARTIALLY_COMPLETED)

El objeto STATE se importa donde sea necesario el estado compartido.


/exceptions.py: Tipos de Excepción

Define tres tipos de excepción personalizados que controlan cómo el bucle de ejecución responde a los errores:

Excepción Cuándo Usar Comportamiento
BusinessException Errores de validación, datos inválidos, fallos esperados Registra el error, continúa con el siguiente elemento
SystemException Fallos técnicos, bloqueos de la aplicación Registra el error, reinicia la inicialización, continúa
InterruptException Solicitud de interrupción del Orchestrator Registra una advertencia, detiene la ejecución elegantemente
from framework.exceptions import BusinessException, SystemException

if not item.get('email'):
    raise BusinessException("Correo electrónico no encontrado")

if not app_is_running():
    raise SystemException("La aplicación objetivo no responde")

/datasources.py: Fuentes de Datos

Proporciona dos clases de fuentes de datos listas para usar y una clase base para implementaciones personalizadas.

CSVSource

Lee elementos de un archivo CSV, devolviendo cada fila como un diccionario con los encabezados de columna como claves.

  • Genera un CSV de resultado con columnas STATUS, MESSAGE y TIMESTAMP
  • Reporta éxito y fallo por elemento automáticamente

DatapoolSource

Obtiene elementos de un Datapool de BotCity en el Orchestrator.

  • Reporta el estado del elemento de vuelta al Orchestrator automáticamente
  • Soporta el ciclo de vida completo del Datapool

Fuentes de Datos Personalizadas

Extiende BaseSource e implementa __iter__, __next__, report_success y report_error para conectarte a cualquier base de datos, API o sistema externo.


/initialize.py: Inicialización

Configura el entorno de automatización al inicio de cada ejecución y después de un reinicio provocado por una SystemException:

  • Crea las carpetas output/ y temp/
  • Configura el registro de logs
  • Inicializa WebBot o DesktopBot
  • Abre la aplicación objetivo y realiza los pasos de inicio de sesión necesarios

Personaliza init_webbot() para configurar el navegador:

bot = WebBot()
bot.headless = False
bot.browser = Browser.CHROME # Ejemplo

/finalize.py: Finalización

Se ejecuta al final de cada ejecución para cerrar elegantemente:

  • Cierra navegadores y aplicaciones abiertas
  • Sube los archivos de resultado (logs, CSVs, capturas de pantalla) al BotCity Orchestrator
  • Envía el reporte final de estado de la tarea (SUCCESS, FAILED o PARTIALLY_COMPLETED)

/status_handling.py: Manejadores de Excepciones

Contiene los manejadores invocados por bot.py cuando ocurre cada tipo de excepción:

  • Registra errores con contexto completo
  • Envía alertas al BotCity Orchestrator (ERROR para fallos, WARN para interrupciones)
  • Captura pantallas en caso de errores y las guarda en temp/
  • Reporta éxito o fallo de vuelta a la fuente de datos

Personaliza estos manejadores para agregar notificaciones por correo electrónico, actualizaciones en bases de datos externas, lógica de reintento o alertas específicas del negocio.


/logger.py: Registro de Logs

Configura salida de log dual para cada ejecución:

  • Logs en archivo: Escritos en output/Log_BotCity_task-{task_id}_date-{timestamp}.log
  • Logs del Orchestrator: Transmitidos en tiempo real al Log de Ejecución del BotCity Orchestrator

Las entradas de log incluyen marcas de tiempo, nombres de módulos y funciones para facilitar el rastreo y la depuración.


Archivos de Salida

Todos los archivos de salida se escriben en la carpeta output/ y se cargan automáticamente al BotCity Orchestrator como Archivos de Resultado al final de la ejecución.

Archivo Descripción
Log_BotCity_task-{id}_date-{ts}.log Log completo de ejecución con marcas de tiempo
CSV_BotCity_task-{id}_date-{ts}.csv Datos originales más columnas STATUS, MESSAGE y TIMESTAMP si se usa un CSV
temp/*.png Capturas de pantalla tomadas automáticamente en excepciones