Cześć,
Właśnie projektuję sobie testową aplikację z wykorzystaniem architektury CQRS/ES. Napotkałem jednak problemy na które nie umiem znaleźć odpowiedzi(może źle wpisuję w google). Ale do rzeczy, przedstawię to na prostym przykładzie bloga.
Jest sobie blog, autorzy dodają sobie artykuły etc. Jest też administrator który czuwa nad ich treściami, i może banować autorów. Po zbanowaniu autora wszystkie jego artykuły mają być niedostępne. No właśnie, i tutaj mam problem, bo o ile łatwo zmienić agregat autora, poprzez zmienienie jego stanu na zbanowanego(atrybut true/false) nie do końca rozumiem jak mam oznaczyć wszystkie jego artykuły jako niedostępne(niedostępne, czyli usuwam je z bazy danych zawierającą projekcje - read modele). Miałem 2 pomysły:
- W command handlerze emituję kilka eventów które banują autora(1 event), oraz artykuły(n eventów)
- Tworzę sobie process manager który po wyemitowaniu eventu do zbanowania autora zmieni stan artykułów
W tych dwóch rozwiązaniach jest tylko jeden problem. Skąd mam zabrać identyfikatory wszystkich agregatów dla artykułu. Czy mogę sobie je wyciągnąć poprzez zapytanie bazy danych z read modelami o wszystkie id artykułów dla danego autora?