Whole question was too long so this is edited shorter one. One of my aggregate roots handles projects and members in service A and other aggregate handles budgets and transactions in service B. To add transaction user must be a given project member. Can I ask a simplify member aggregate created in service B from domain events(MemberAdded/Removed) from service A if user is a member before modifying transactions aggregate? This simplify member aggregate would function as a domain service. Is it the DDD way of doing it and is it ok with CQRS to ask memberAggregate.IsMember() and then proceed to modify TranscationAggregate in single command?
My business model allows for delay between real state of service A Member aggregate and recreated simplify version in service B.
From what I understand if:
- domain service is injected into aggregate root I'm losing domain logic purity
- domain service is used in command I'm losing completeness because part of domain logic is outside of domain layer
- if I remodel my domain to have members and transactions in single aggregate root I'm losing performance