2011-12-20 13 views
5

Mam dwa zagregowane pierwiastki odwołujące się do innego zagregowanego katalogu głównego (pierwsze odniesienia do drugiego przez tożsamość drugiego zagregowanego katalogu głównego).W jaki sposób usuwany jest zagregowany root w DDD?

Polecenie z mojej warstwy aplikacji (przez MVC asp.net) teraz usuwa mój drugi zagregowany root.

Czy podczas usuwania katalogu głównego wysyłam zdarzenie domeny informujące pierwszy zagregowany katalog główny do "NULL" o odwołanie do drugiego agregatu, który obecnie nie istnieje?

JD

Odpowiedz

5

Podejdziesz do tego w niewłaściwy sposób. Odsuń się od problemu technicznego, przed którym stoisz. Przede wszystkim wątpię, aby w waszym wszechobecnym języku było coś takiego jak "Usuń". Najprawdopodobniej ludzie nazwaliby to "archiwizacją", "brakiem zamówienia", "usunięciem", "brakiem towaru", ... pewnym terminem oznaczającym, że określony skupisk znajduje się na końcu cyklu życia. Kiedy eksperci w dziedzinie mówią o takich rzeczach, powinno to być wyzwaniem, aby zadać im pytanie w stylu: "Cóż, jeśli przerwiesz produkt, jak to wpłynie na promocję tego konkretnego produktu?". Aby powrócić do problemu: promocja jest agregatem zawierającym odniesienie do agregatu produktu. Tak więc staje się to kwestią biznesową, a nie techniczną. Przez większość czasu przedsiębiorcy mają już wdrożony proces, który zapobiega występowaniu tego problemu technicznego (na przykład nie można przerwać Produktu używanego w Promocji). Mam nadzieję, że już teraz jest jasne, że udzielenie ogólnej odpowiedzi nie jest możliwe.

+0

Dziękuję za odpowiedź. Tak, patrzyłem na to zbyt mocno z technicznego punktu widzenia. Okay, w tym przypadku mamy pamięć plików wideo i gdzie plik można usunąć. Użytkownik faktycznie usuwa plik wideo, do którego odwołuje się mój drugi agregat. Rozmawiając z analitykiem biznesowym, jego odpowiedź brzmi, że powinienem zalogować go w pliku zdarzeń i usunąć go z usługi rejestratora. Gdy usługa rejestratora działa, nie zawiedzie iw tym czasie zostanie rozwiązana. Tak więc w moim przypadku muszę "NULL" w drugim agregacie. Jaki jest prawidłowy sposób to zrobić? –

+0

Chcesz udostępnić więcej informacji? –

+0

Zasadniczo użytkownicy mogą usuwać filmy, co oznacza, że ​​są fizycznie usuwane z naszej aplikacji. Nie ma innego sposobu, w jaki mogę to określić, co określi "koniec jego cyklu życia". Pytałem, czy możemy zapobiec usunięciu filmu, jeśli jest on używany w innym miejscu (w innym zagregowanym), ale odpowiedź brzmiała: nie było to ważne i powinniśmy po prostu zezwolić na usunięcie (tj. Mamy 1000 filmów i próbujemy ustalić, kto używa ich (tj. agregatu) to zbyt dużo pracy i nie jest to tak ważne dla użytkownika). –

Powiązane problemy