Eventos do sistema (Event Bus)
Comunicação entre módulos via eventos
O Event Bus é o sistema central de comunicação entre módulos da P8W. Quando algo acontece em um módulo, outros módulos podem reagir automaticamente via eventos, criando uma arquitetura desacoplada e extensível.
Como funciona
- Um módulo emite um evento quando uma ação ocorre (ex: "user.created" quando um novo usuário se cadastra).
- Outros módulos que estão ouvindo (listeners) esse evento reagem automaticamente sem que o emissor precise saber quem são.
- A comunicação é desacoplada — módulos não chamam uns aos outros diretamente, comunicam-se apenas por eventos.
- Cada listener tem uma prioridade de execução e pode interromper a cadeia se necessário.
Categorias de eventos
| Categoria | Eventos | Exemplo de reação |
|---|---|---|
| Usuários | user.created, user.updated, user.login, user.logout, user.password.changed | Onboarding cria tour de boas-vindas |
| Tenants | tenant.created, tenant.updated, tenant.suspended | Billing cria primeiro plano, Campaign envia e-mail |
| Pagamentos | invoice.created, invoice.paid, invoice.overdue | CRM atualiza deal, Campaign agradece |
| Plugins | plugin.activated, plugin.deactivated | MenuService atualiza sidebar |
| Segurança | security.breach, security.rate.limited | Logs registra, admin é notificado |
| Tarefas | task.created, task.completed | Planner recalcula sprint, Insights atualiza |
Exemplos de fluxos encadeados
- user.created → Onboarding cria tour + Campaign adiciona à lista de novos + Intelligence registra para análise + Push solicita permissão de notificação.
- invoice.paid → Billing atualiza status + Campaign envia agradecimento + Business atualiza deal + Insights recalcula MRR.
- task.completed → Planner atualiza progresso do sprint + Insights recalcula produtividade + notificação push para o gestor.
- deal.stage.changed → Automation executa workflow associado + Campaign dispara e-mail de acompanhamento + Intelligence analisa probabilidade de fechamento.
Wildcards e padrões
Listeners podem usar wildcards para reagir a múltiplos eventos de uma vez:
- user.* — reage a qualquer evento de usuário (created, updated, login, etc.).
- invoice.* — reage a qualquer evento de fatura.
- security.* — reage a qualquer evento de segurança.
Painel de monitoramento
O painel de eventos (Configurações → Avançado → Eventos) permite:
- Visualizar todos os eventos registrados no sistema.
- Ver quais listeners estão ouvindo cada evento (e suas prioridades).
- Acessar logs de execução recente com status (sucesso/erro) e duração.
- Testar emissão manual de eventos para debug.
Eventos assíncronos
Eventos que envolvem operações lentas (ex: envio de e-mail, processamento de relatório) são executados via fila (Queue), sem bloquear a resposta da requisição do usuário.
Este artigo foi útil?
Perguntas e Respostas
Nenhuma pergunta ainda. Seja o primeiro a perguntar!