Als Teil meines Domain-Modells, sagen wir, ich habe ein WorkItem
Objekt. Das WorkItem
Objekt hat mehrere Beziehungen Werte nachzuschlagen, wie:Sollen Lookup-Werte als Aggregatwurzeln modelliert werden?
WorkItemType
:
- User-Story
- Bug
- Enhancement
Priority
:
- Hoch
- Medium
- Low
Und es möglicherweise sein könnte, wie Status
, Severity
, etc ...
DDD die besagt, wenn etwas in einem Aggregat Wurzel besteht, dass Sie shouldn Versuchen Sie nicht, außerhalb des aggregierten Stammverzeichnisses darauf zuzugreifen. Wenn ich also neue WorkItemTypes wie Task oder neue Prioritäten wie Critical hinzufügen möchte, müssen diese Lookup-Werte Aggregat-Roots mit ihren eigenen Repositories sein? Dies erscheint etwas übertrieben, besonders wenn es sich nur um ein Schlüsselwertpaar handelt. Wie kann ich zulassen, dass ein Benutzer diese Werte ändert und weiterhin die aggregierte Stammverkapselungsregel erfüllt?
In meinem Fall muss die Anwendung die Lookup-Werte ändern. Ich schätze, dass das Modellieren dieser Objekte als Aggregate sinnvoll erscheint. Vaughn Vernon erklärt, wie diese Aggregate in diesem [Artikel] zusammenarbeiten können (http://dddcommunity.org/sites/default/files/pdf_articles/Vernon_2011_2.pdf). Am Ende von Seite 8 erwähnt er, dass Sie einen Anwendungsdienst haben könnten, um die Abhängigkeiten aufzulösen. Er sagt auch, dass, wenn die Abfragen zu teuer werden, Sie einige CQRS verwenden könnten. –