Question

As a matter of fact, Entities and even Value Objects may contain references to Aggregate Roots. Additionally as per definition, Aggregate Roots stand on their own, the have intrinsically a Repository where I not at last could delete that Aggregate Root.

As a requirement of my GUI / Workflow, the customer wants to see where a particular Aggregate Root is referenced, not least because he wants / should be able to check whether he can delete that AR "safely".

My current design only has the navigation from the Entity in question towards the other AggregateRoot, so there's, at the moment, no simple way to find the opposite direction.

As this is surely not a single case, I wonder how this is done usually?

Addendum:

Consider the following example; we have an Address as Entity, and a Value Object HomeVisit containing date and Address address (just for the simplicity). Until now, there is no modelling need to be able to navigate from Address to HomeVisit, even more since bidirectional associations are discouraged in general. But you should see the use case now: For any reason I might need to be able to find out where an Address is currently used prior to delete or even modify it (maybe a service technician is currently on its way to that address and I need to be aware of that).

You can argue that for these cases there must be a Service or similar to find that out, but imagine there's a third party module which brings the HomeVisit VO and makes use of the Address somehow anonymously; at least that's the way I would like it to implement.

Was it helpful?

Solution

It seems like the answer is: via Domain or Application Services, involving respective Repositories whereas necessary.

So, the check for references has to be kinda hard-coded with an AddressService, having a method like deleteAddressByIdentifier. This method then needs to check or invoke a method isTechnicianOnWayToAddress() which again queries Repositories accordingly; or whatever is needed to fulfil the goal.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top