Pular para conteúdo

Domain Model

Objetivo

Consolidar num único diagrama os padrões táticos de DDD já documentados individualmente — Aggregates, Entities, Value Objects e Domain Events — mostrando como se relacionam.


Diagrama consolidado

flowchart TD BC["Bounded Context"] --> Agg["Aggregate"] Agg --> Root["Aggregate Root\n(entidade)"] Root --> Ent["Entities\n(dentro do agregado)"] Root --> VO["Value Objects"] Root -->|dispara| Event["Domain Events"] Event --> Other["Outro Bounded Context\n(via evento/integração)"] Repo["Repository"] -->|carrega/persiste| Root Svc["Domain Service"] -->|orquestra regra entre agregados| Root

Exemplo concreto — CoreFlow CRM

Aplicando o modelo ao domínio comercial do CRM (ver Aggregates):

Padrão Exemplo real
Aggregate Root Oportunidade
Entities do agregado HistoricoEtapaOportunidade
Domain Event (implícito) Mudança de etapa do pipeline, registrada como histórico
Repository Acesso via Django ORM (Oportunidade.objects)
Domain Service services.py do app oportunidades

Prática real vs. modelo tático

Como registrado em ADR-0003, os produtos reais não implementam esses conceitos como classes/camadas explícitas de código — o app Django já cumpre o papel de bounded context, o model Django já cumpre o papel de aggregate root, e a "linguagem ubíqua" existe de forma informal nos nomes de models e campos em português. Este documento descreve o vocabulário e a relação conceitual entre os padrões, útil para discutir domínio — não uma estrutura de pastas a ser criada no código.


Referências