- 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:
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.