Closed ludydoo closed 9 years ago
Every pre-condition and business rule has only what's defined in the aggregate. Please do not think in data! Perhaps you need to enlarge your aggregate...
Okay I see. I'm used to RDBMS so... I see "by table". Though, how would you see that kind of aggregate? Let's say you're enabling your client to store information about 1000's of people. Each of them has multiple contact information (first name, last name, phone, email, ...), but you have to be sure that each has a first name and last name set.
Also, the client could define custom contact information numbers that he wants to define for each of his registered person. Let's say the client wants to be able to add "Postal Name" as a contact information type, and mark it as required for all new clients?
And also, each person may or may not have multiple mandates associated. Each of those mandates have activities did on them, of a certain type (which the client defines for his business)... You get the idea? Maybe RDBMS is more tailored for this kind of job. What do you think ?
I understand the concept of aggregate as an "independent logical unit", but what happens when you have to normalize the data, and moreover, when the client wants to be able to normalize its data for his business?
All this could fit with cqrs... but I think you don't want to design the intentions of the system, but only manage your data. So a better fit is to use a CRM/ERP.
Hi,
Your framework looks nice. I tried it a little and it seems quite what I need. Though, how is it possible to achieve this : Given the aggregates :
Person which has an array of names the names are a hash of (typeId : number, value : string) Like
PersonNameType which is a simple string like Firstname or Lastname or PostalName
like :
I defined a command and event for Person "enterNewName"/"enteredNewName"
and I want to add a precondition "mustBeExistingNameType"
How is it possible to verify that the given typeId exists without having to write a custom command handler? Otherwise, could you indicate how to write this custom command handler?
Thanks