Ir para o conteúdo

Componentes do Framework

O BeaPro é organizado em módulos focados, cada um responsável por um aspecto específico do ciclo de vida da automação.

bot.py: Orquestrador Principal

O ponto de entrada da automação. Ele coordena o fluxo de execução completo:

  1. Chama initialize() para configurar o ambiente
  2. Itera pelos itens da fonte de dados
  3. Chama process_item(item) para cada item
  4. Trata exceções automaticamente
  5. Chama finalize() para limpar e reportar resultados

Geralmente você não precisa modificar bot.py: sua lógica de automação vai em framework/process.py.


/process.py: Lógica de Automação

É aqui que você adiciona seus passos de automação.

A função process_item(item) é chamada uma vez por item na sua fonte de dados. Acesse os campos do item usando chaves de dicionário:

def process_item(item):
    name = item['name']
    email = item['email']
    # ... seus passos de automação aqui

/state.py: Gerenciamento de Estado

Gerencia o estado de execução compartilhado entre todos os módulos:

  • Contadores de sucesso e erro
  • Item sendo processado atualmente
  • Instâncias do bot (WebBot, DesktopBot)
  • Verificação de interrupção
  • Cálculo do status da tarefa (SUCCESS, FAILED, PARTIALLY_COMPLETED)

O objeto STATE é importado onde quer que o estado compartilhado seja necessário.


/exceptions.py: Tipos de Exceção

Define três tipos de exceção personalizados que controlam como o loop de execução responde a erros:

Exceção Quando Usar Comportamento
BusinessException Erros de validação, dados inválidos, falhas esperadas Registra o erro, continua para o próximo item
SystemException Falhas técnicas, travamentos da aplicação Registra o erro, reinicia a inicialização, continua
InterruptException Solicitação de interrupção do Orchestrator Registra um aviso, para a execução graciosamente
from framework.exceptions import BusinessException, SystemException

if not item.get('email'):
    raise BusinessException("E-mail não encontrado")

if not app_is_running():
    raise SystemException("A aplicação alvo não está respondendo")

/datasources.py: Fontes de Dados

Fornece duas classes de fonte de dados prontas para uso e uma classe base para implementações personalizadas.

CSVSource

Lê itens de um arquivo CSV, retornando cada linha como um dicionário com as colunas como chaves.

  • Gera um CSV de resultado com colunas STATUS, MESSAGE e TIMESTAMP
  • Reporta sucesso e falha por item automaticamente

DatapoolSource

Busca itens de um Datapool do BotCity no Orchestrator.

  • Reporta o status do item de volta ao Orchestrator automaticamente
  • Suporta o ciclo de vida completo do Datapool

Fontes de Dados Personalizadas

Estenda BaseSource e implemente __iter__, __next__, report_success e report_error para conectar a qualquer banco de dados, API ou sistema externo.


/initialize.py: Inicialização

Configura o ambiente de automação no início de cada execução e após uma reinicialização disparada por uma SystemException:

  • Cria as pastas output/ e temp/
  • Configura o logging
  • Inicializa WebBot ou DesktopBot
  • Abre a aplicação alvo e realiza os passos de login necessários

Personalize init_webbot() para configurar o navegador:

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

/finalize.py: Finalização

Executado ao final de cada execução para encerrar graciosamente:

  • Fecha navegadores e aplicações abertas
  • Faz upload dos arquivos de resultado (logs, CSVs, screenshots) para o BotCity Orchestrator
  • Envia o relatório final de status da tarefa (SUCCESS, FAILED ou PARTIALLY_COMPLETED)

/status_handling.py: Handlers de Exceção

Contém os handlers invocados pelo bot.py quando cada tipo de exceção ocorre:

  • Registra erros com contexto completo
  • Envia alertas ao BotCity Orchestrator (ERROR para falhas, WARN para interrupções)
  • Captura screenshots em caso de erros e salva em temp/
  • Reporta sucesso ou falha de volta à fonte de dados

Personalize esses handlers para adicionar notificações por e-mail, atualizações em bancos de dados externos, lógica de retry ou alertas específicos do negócio.


/logger.py: Logging

Configura saída de log dupla para cada execução:

  • Logs em arquivo: Gravados em output/Log_BotCity_task-{task_id}_date-{timestamp}.log
  • Logs do Orchestrator: Transmitidos em tempo real para o Log de Execução do BotCity Orchestrator

As entradas de log incluem timestamps, nomes de módulos e funções para rastreamento e depuração facilitados.


Arquivos de Saída

Todos os arquivos de saída são gravados na pasta output/ e automaticamente enviados ao BotCity Orchestrator como Arquivos de Resultado ao final da execução.

Arquivo Descrição
Log_BotCity_task-{id}_date-{ts}.log Log completo de execução com timestamps
CSV_BotCity_task-{id}_date-{ts}.csv Dados originais mais colunas STATUS, MESSAGE e TIMESTAMP se um CSV for utilizado
temp/*.png Screenshots capturadas automaticamente em exceções