Saludos,
Raul
Jorge Rowies escribi�:
> Hola a todos
>
> Tengo una inquietud y me gustar�a saber la opini�n de ustedes al
> respecto.
>
> En la VAN sobre DDD (http://altnet-hispano.pbworks.com/van-2009-12-19-
> domain-driven-design) realizada por Angel "Java" Lopez, surgi� (a los
> 1:28:25) brevemente un tema interesante sobre si es aconsejable que
> una Entity pueda acceder directamente a un Repository. Fabio Maulo no
> estaba muy de acuerdo sobre esto, mientras que Angel proponia un
> ejemplo como el de un sistema para administraci�n de consorcios
> (edificios de departamentos) donde pod�a ocurrir que la entidad
> Consorcio tenga ciertas responsabilidades y para que las mismas puedan
> ser llevadas a cabo necesitar�a acceder a repositorios de otras
> entidades.
>
> Este tema de acceder a repositorios desde entidades es algo que no me
> termina de cerrar, Fabio comentaba que, a su entender, el acceso a
> repositorios se deberia realizar desde un application service o un
> domain service, pero no desde la entity.
>
> En este post del grupo de DDD en yahoo (http://tech.groups.yahoo.com/
> group/domaindrivendesign/message/2305?threaded=1), Evans da su opini�n
> al respecto, e inclusive (si no entend� mal) el propone que los
> repositorios no se accedan desde ning�n objeto del modelo (lo cual
> incluye las entities y tambi�n los domain services).
>
> Bueno, en definitiva, me gustar�a saber que opinion tienen ustedes
Inyectar el repository o el resutado de la invocacion al repository en la entidad, en principio me parece que no hace mucha diferencia.
En alguna oportunidad cuando inyecte repositorios en entidades, al refactorizar termine moviendo el acceso a repositorios a los servicios,
pero creo que el tema mas que nada pasa por determinar que tan _gordas_ queres que sean tus entidades en terminos de responsabilidades.
Solo una opinion...
Saludos,
Raul
Jorge Rowies escribió:
Hola a todos
Tengo una inquietud y me gustaría saber la opinión de ustedes al
respecto.
En la VAN sobre DDD (http://altnet-hispano.pbworks.com/van-2009-12-19-
domain-driven-design) realizada por Angel "Java" Lopez, surgió (a los
1:28:25) brevemente un tema interesante sobre si es aconsejable que
una Entity pueda acceder directamente a un Repository. Fabio Maulo no
estaba muy de acuerdo sobre esto, mientras que Angel proponia un
ejemplo como el de un sistema para administración de consorcios
(edificios de departamentos) donde podía ocurrir que la entidad
Consorcio tenga ciertas responsabilidades y para que las mismas puedan
ser llevadas a cabo necesitaría acceder a repositorios de otras
entidades.
Este tema de acceder a repositorios desde entidades es algo que no me
termina de cerrar, Fabio comentaba que, a su entender, el acceso a
repositorios se deberia realizar desde un application service o un
domain service, pero no desde la entity.
En este post del grupo de DDD en yahoo (http://tech.groups.yahoo.com/
group/domaindrivendesign/message/2305?threaded=1), Evans da su opinión
al respecto, e inclusive (si no entendí mal) el propone que los
repositorios no se accedan desde ningún objeto del modelo (lo cual
incluye las entities y también los domain services).
Bueno, en definitiva, me gustaría saber que opinion tienen ustedes
sobre esto.
Desde ya, muchas gracias!
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.
yo también vengo incursionando en este tema y, al igual que a vos, no
me termina de agradar el tema de los repositorios en las entidades.
Quizás, el tema es que aun pensamos en términos de entidades como una
subclase del dominio. Como ya han planteado alguna vez (creo que
Carlos), podemos pensar en:
objetos con estado solamente <-> objetos con estado y lógica <->
objetos con lógica solamente
donde en la izquierda tenemos lo que llamamos entidades, a la derecha
lo que llamamos servicios de negocio ¿y las del medio?, lo que está
claro es que todos son objetos del dominio.
Lo que me parece que se pierde con todo esto es la claridad que da la
estratificación de los sistemas, me suena a una bolsa muy grande,
donde solo se distingue entre el Dominio y lo externo, pero claro,
estamos hablando de DDD.
Retomando el concepto de entidades, coincido con que la entidad A
debería resolver lo que esté a su alcance, es decir lo que pueda hacer
conociendo sus propiedades, pero entonces pienso que una propiedad
podría ser el repositorio y vuelvo a empezar.
pregunta: ¿una Entidad podría invocar a un Servicio de Negocio?
A mi aun me gusta pensar en la división de componentes por sus
responsabilidades y pensar la complejidad del diseño desde las
relaciones entre componentes (o partes de estos), es decir sus
referencias, lo que sería un enfoque mas neuronal (la complejidad de
un sistema neuronal se determina por la cantidad y calidad de sinapsis
y no por la capacidad individual de cada neurona, que solita es
bastante limitada). Todo lo que pueda resolver una entidad desde su
capacidad que lo resuelva. ya si tienen que intervenir mas actores (y
que no se conocen) pienso que debería ser un servicio de negocio que
orquesta a los actores donde preferentemente trata de ejecutar
acciones de los actores y no de interrogarlos. Es decir, en el
servicio de negocio, en lugar de:
if (persona.Estado==Estados.EstadoA)
persona.Estado = EstadoB;
pondría:
persona.PonerEstadoB();
y las verificaciones que deba hacer, referentes a la incumbencia de
persona, que lo haga el objeto persona.
Bueno, ya me extendí demasiado para un mail.
Saludos.
Nelo.
2010/7/6 Jorge Rowies <jorge....@gmail.com>:
2010/7/6 Nelo Pauselli <nelopa...@gmail.com>:
The operation relates to a domain concept that is not a natural part of an ENTITY or VALUE OBJECT.
The interface is defined in terms of other elements of the domain model.
The operation is stateless.
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Siempre aprendo un poco e investigo el doble, gracias Cristian
Saludos
Edgar
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Enviado desde mi BlackBerry de Movistar (http://www.movistar.com.ar)
en el problema que estás intentando modelar ¿el cliente real es quien
se inactiva? creo que no. El poner o no la colección de Facturas y
Ordenes de Compra en el cliente creo que debería ser una necesidad del
diseño y no de la implementación.
Pero si de todas formas querés ir con las Facturas y Ordenes de Compra
en el cliente, quizás podrías poner un TieneFacturas y
TieneOrdenesDeCompra (a los sumo un CantidadDe...) ya que lo que te
interesa es saber si tiene o no tiene. (pesando en la escalabilidad de
tu sistema).
Nelo.
2010/7/8 <daniel...@gmail.com>:
"First we need an abstraction for encapsulating references within the model. An AGGREGATE is a cluster of associated objects that we treat as a unit for the purpose of data changes. Each AGGREGATE has a root and a boundary. The boundary defines what is inside the AGGREGATE. The root is a single, specific ENTITY contained in the AGGREGATE. The root is the only member of the AGGREGATE that outside objects are allowed to hold references to, although objects within the boundary may hold references to each other. ENTITIES other than the root have local identity, but that identity needs to be distinguishable only within the AGGREGATE, because no outside object can ever see it out of the context of the root ENTITY."
"es responsabilidad de Cliente devolver sus Facturas. El codigo que
utiliza la clase Cliente no tiene por que saber de donde salieron esas
Facturas, simplemente se las pide al Cliente."
¿alguien vio la película "La invención de la mentira"?... no es gran
cosa el film, pero hay una escena donde el sistema de un banco está
caído y como todo el mundo decía la verdad (hasta ese momento) le
preguntan al Cliente cuanta plata tiene en la cuenta y le dan el
dinero en función de eso.
Me da la sensación que estamos pensando mucho en C# y no lo suficiente
en representar el negocio real.
¿que empresa le pregunta al cliente si tiene facturas vencidas antes
de inactivarlo? quizás nos está faltando un actor o quizás simplemente
sea un proceso que debemos modelar.
Saludos.
Nelo.
2010/7/9 Lionel Orellana <lion...@gmail.com>: