--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "DDD/CQRS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dddcqrs/Caeami-JHRs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dddcqrs+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to dddcqrs+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to dddcqrs+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
First: lets clarify some language. You use the word "domain" where I would use the words "model", "domain model" or maybe "domain layer". I use the word "domain" in exactly the opposite meaning: that what is modelled; the business; the "real world". To understand the domain, to solve a problem in the domain or to automate something that has to be done in the domain we build models. A model for me is any way a domain and solutions are described (modelled), possibly including an implementation in a programming language, stickies on a wall in an event-stormning session, uml-diagrams etc. In this case I understand your (sub)domain to be about something like "notification and delivery to customers". The model gets transactions (events) as input and handles notifications and deliveries to customers based on those transactions and the preferences of the respective customers.
---
Now you seem to have some rules I don't have:
an event (like for instance a transaction) and in general a message between models is not a "business object".
only "business objects" may enter a domain model.
An event is not a first class citizen of your domain model: it is not allowed to enter the domain model "as it would pollute it". To me it is not clear what exactly you mean by "business object". I guess you use "business object" in about the same way I would use "domain object", that is: an object to build a domain model. But for you those objects seem to be very restricted and events are not part of them.
Because your model needs the transactions as input, but they are not seen, based on your rules above, as worthy enough objects to be used in your model, you make some kind of copy of those transactions in a form you seem to grade good enough to enter your model: you "upgrade" the events and their data to some domain object (= "an object that abides by the domain model").
What if you would just see an event, a transaction in your case, as an immutable object, coming from another model? What "pollution" are you fearing and could that be simply cleaned by some "anti-corruption layer" or other filter? What do you gain by copying the transaction/event to a "business object" in your domain model? What does an object need to be a "business object" for you?
---
In the end of your last answer you mention "sagas". Here is an article of why "process manager" might be a better word here: https://msdn.microsoft.com/en-us/library/jj591569.aspx
Please be aware of the fact that I'm quite a dissident from the official DDD-doctrines. For instance, one of the things that triggered me to answer your posting, was because I think: making a choice between an entity or a value object is nonsensical. I guess I disagree about that with about everybody in the DDD-community. I wrote about that before on this mailing list, see https://groups.google.com/forum/#!topic/dddcqrs/Icep9ujRllk "Category-mistakes and Value Objects". For me, when modelling in an OO-paradigm, I have a domain model with domain objects. That can be any object, like entities, use cases (which I use as objects where others would use an entity as aggregate root), events, etc.. Any object that is useful in modelling the domain can be a domain object. Some objects, like events for instance, can be immutable. Values (states, properties) of those objects can be of specific types. Value Objects are a kind of "poor mans types" as used in OO-languages, nothing more, nothing less. The main practical thing to learn from the concept of value objects is that immutability is to be preferred, because it makes our modelling easier.
"In the end of your last answer you mention "sagas". Here is an article of why "process manager" might be a better word here: https://msdn.microsoft.com/en-us/library/jj591569.aspx"
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and all its topics, send an email to dddcqrs+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/dddcqrs.
For more options, visit https://groups.google.com/d/optout.