Pular para conteúdo
  • Marcelo Areco reviewers: [] created: 2026-07-02 updated: 2026-07-02 tags:
  • ddd
  • domain-events
  • event-driven

Domain Events

Objetivo

Definir o padrão oficial para utilização de Eventos de Domínio (Domain Events) na CoreFlow Platform.

Eventos representam fatos relevantes ocorridos no domínio de negócio e permitem a comunicação desacoplada entre Bounded Contexts.


Conceito

Um Domain Event representa algo que aconteceu.

Os eventos descrevem fatos passados e devem ser nomeados no passado.

Exemplos:

  • UserCreated
  • LeadQualified
  • OpportunityWon
  • InvoiceIssued
  • PaymentReceived

Características

Todo Domain Event deverá:

  • representar um fato ocorrido;
  • ser imutável;
  • possuir data e hora;
  • possuir identificador único;
  • possuir origem;
  • possuir versão.

Estrutura

Campos mínimos:

  • Event ID
  • Event Name
  • Aggregate ID
  • Aggregate Type
  • Company ID
  • User ID
  • Timestamp (UTC)
  • Version
  • Payload

Fluxo

sequenceDiagram

participant Aggregate

participant EventBus

participant Consumer

Aggregate->>EventBus: Publica Evento

EventBus->>Consumer: Distribui Evento

Consumer-->>EventBus: Processado

Eventos do Core

Authentication

  • UserLoggedIn
  • UserLoggedOut
  • PasswordChanged
  • SessionExpired

Users

  • UserCreated
  • UserUpdated
  • UserBlocked
  • UserActivated

Companies

  • CompanyCreated
  • CompanyUpdated
  • BranchCreated
  • LicenseChanged

RBAC

  • RoleCreated
  • PermissionGranted
  • PermissionRevoked

Files

  • FileUploaded
  • FileDeleted
  • FileVersionCreated

Notifications

  • NotificationCreated
  • NotificationSent
  • NotificationDelivered
  • NotificationFailed

Eventos do CRM

  • LeadCreated
  • LeadQualified
  • LeadConverted
  • ContactCreated
  • OpportunityCreated
  • OpportunityWon
  • OpportunityLost
  • ProposalGenerated

Eventos do ERP

  • ProductCreated
  • ProductUpdated
  • PurchaseCreated
  • StockUpdated
  • InvoiceIssued

Eventos Financeiros

  • PayableCreated
  • ReceivableCreated
  • PaymentReceived
  • PaymentCancelled

Eventos de RH

  • EmployeeHired
  • EmployeeDismissed
  • PayrollProcessed
  • VacationApproved

Publicação

Eventos deverão ser publicados apenas pelo Aggregate Root.

Nunca por Controllers ou APIs.


Consumo

Consumidores deverão ser independentes.

Falhas em um consumidor não poderão impedir a publicação do evento.


Versionamento

Mudanças incompatíveis deverão gerar uma nova versão do evento.

Exemplo:

LeadCreated v1


LeadCreated v2

Comunicação

Eventos poderão ser utilizados por:

  • CRM
  • ERP
  • Finance
  • RH
  • WMS
  • BI
  • AI

Auditoria

Toda publicação deverá gerar registro no módulo Audit.

Registrar:

  • Evento
  • Origem
  • Destino
  • Data/Hora
  • Resultado

Segurança

Eventos nunca deverão conter:

  • Senhas
  • Tokens
  • Chaves privadas
  • Informações sigilosas

Compartilhar apenas dados necessários.


Anti-patterns

É proibido:

  • Eventos com nomes no presente
  • Eventos mutáveis
  • Eventos publicados fora do domínio
  • Dependência direta entre produtores e consumidores
  • Payloads excessivos

Diagrama

flowchart LR

Aggregate --> DomainEvent

DomainEvent --> EventBus

EventBus --> CRM

EventBus --> ERP

EventBus --> Finance

EventBus --> RH

EventBus --> BI

EventBus --> AI

Objetivo Final

Estabelecer um modelo consistente de eventos de domínio que permita comunicação desacoplada entre os contextos da CoreFlow Platform, favorecendo escalabilidade, integração e evolução independente dos produtos.