3
respostas

Entidades compartilhadas

Neste curso nota-se a utilização de um VO que é um atributo da entidade aluno. Poderia ser adotada uma abordagem onde eu necessito da entidade cliente entre dois contextos delimitados onde o "id" (poderia ser o CPF) seria a correlação entre os dois contextos? Li alguns artigos onde temos essa situação e recomenda-se a replicação do "id" desta entidade no entanto a entidade em si possui atributos pertinentes ao contexto em questão. Meu entendimento é que não estamos compartilhando um kernel as vezes, mas apenas entidades envolvidas em dois contextos diferentes.

3 respostas

Ola Eduardo.

No curso utilizou-se o CPF que é um VO para exemplificar um shared, mas poderia ser sim qualquer entidade que esteja utilizada em vários domínios diferentes. Se for ver, isso é mais sobre organização dos arquivos, pois se uma classe é compartilhada, ela ficaria em qual estrutura de pacotes de dominio? Dai cria-se um terceito pacote shared e coloca-se ali todas as classes compartilhadas.

No entanto eu notei que você comentou sobre um dado específico de domínio, poderia explicar melhor essa parte da dúvida? Pois nesse sentido, acredito que o conceito da organização shared kernel não abordaria, sendo mais sobre modelagem e fronteira dos dados de negócio em si.

Perfeito! Creio que a utilização de uma entidade possa ser utilizada conforme uma determinada necessidade.

O que comentei foi sobre uma entidade estar distribuída entre diversos domínios, no entanto essa entidade possua atributos específicos para atender o domínio em questão, por exemplo: Cliente, eu posso ter essa entidade num contexto fiscal, tributário ou até mesmo de atendimento. Creio que nesse caso não estamos compartilhando o kernel, mas sim um atributo da entidade para que ela se mantenha concisa nos diversos contextos.

Eduardo, boa tarde, tudo bem?

No cenário que você colocou é possível duplicar entidades com atributos diferentes podendo ter o mesmo nome, inclusive.

Pense que o conceito de Cliente é sempre delimitado pelo contexto. Na área de compras, o cliente é na verdade a própria empresa, já na área de vendas o cliente para quem a empresa vende, etc.. Você não deveria, no geral, ficar com 'inveja' do que tem em outros contextos. Cada entidade de um contexto está associada ao seu contexto e se por ventura temos a entidade Cliente com 10 atributos num contexto e a entidade Cliente com 5 atributos no outro, isso não é um problema e não precisa colocar no shared.

Resumindo: não é errado criar entidades com o mesmo nome em contextos diferentes. O canal do fullcycle o Wesley explica muito bem sobre DDD e alerta para esse tema de que as pessoas ficam receosas de ter uma entidade Aluno num contexto e a mesma entidade no outro.