W moim projekcie mam przepływ pracy, który działa na wielu podmiotach, aby zrealizować transakcję biznesową. Jakie jest najlepsze miejsce do reprezentowania logiki przepływu pracy? obecnie właśnie utworzę "XXXManager", który odpowiada za współpracę z obiektami encji w celu zawarcia transakcji biznesowej. Czy są inne opcje?Domain Driven Design: gdzie znajduje się logika przepływu pracy?
Odpowiedz
DDD może nie być dokładnie o takich rzeczach, więc proponuję rzucić okiem na wzór architektoniczny warstwy serwisowej. Książka Martina Fowlera Wzory architektury korporacyjnej to dobra książka, która wyjaśni to. Możesz znaleźć opis wzoru na stronie internetowej Fowlera.
Tworzenie systemów przepływu pracy może być zniechęcającą perspektywą. Czy rozważałeś użycie Workflow engines?
Jeśli dobrze Cię rozumiem, musisz utworzyć menedżera, który śledzi różne transakcje w magazynie, związane z użytkownikiem. Są prawdopodobnie inne sposoby robienia tego - ale zawsze używałem silników.
Zazwyczaj istnieje obiekt domeny, który powinien obsługiwać formant, który jest mylony z "jednostką".
Czy istnieje przypadek czegoś, co powstaje w wyniku tego przepływu pracy? Jeśli tak, to logika przepływu pracy prawdopodobnie należy tam. Rozważ "Zamówienie" w poniższym modelu.
alt text http://img685.imageshack.us/img685/4383/order.png
Odra jest zarówno rzeczownik i czasownik. "Zamówienie" to obiekt, który powstał w wyniku "Zamawiania". Jak każda dobra klasa, ma zarówno dane, jak i zachowanie (i nie mam na myśli gettersów i ustawiaczy). Zachowanie to dynamiczny proces związany z danymi, tj. Kolejność zadań zamawiania. "Zamówienie" to kontroler.
Dlatego właśnie wynaleziono OO.
Powiedziałbym, że postępujesz słusznie, współpracując z wieloma podmiotami, aby coś osiągnąć. Ważne jest, aby każdy podmiot (i każda usługa) miał numer single responsibility.
Ogólny przepływ pracy, o którym mówisz, jest czymś, co możesz wziąć pod uwagę w warstwie aplikacji.
According to Paul Gielens (parafrazując) Odpowiedzialność za warstwę aplikacji polega na przetrawianiu złożonych wniosków (komunikatów/poleceń) w celu osiągnięcia określonego nadrzędnego celu. Robi to, wysyłając wiadomość do usług domenowych w celu spełnienia. Następnie (opcjonalnie) decyduje się wysłać powiadomienia do serwisu infrastruktury.
Ale czym jest "Usługa" ?! To jest przeciążony Termin ale taki, który jest opisany dobrze (znów by Paul Gielens)
Warto również przeczytać o Onion Architecture na więcej pomysłów ...
txn dla odniesienia do architektury cebuli, ciekawy artykuł! –
do wielkiego odpowiedzi, chciałbym dodać "domain events" (odnośnik jest tylko jedną możliwą implementacją), który jest czymś, co sam Evans przyłożył, by skupić się bardziej na ("increased emphasis on events").
- 1. Domain Driven Design dla Node.js
- 2. Domain Driven Design - Aggregate Roots
- 3. buforowanie Kod Lokalizacja w Domain Driven Design
- 4. Access Control w Domain Driven Design
- 5. Domain Driven Design: Kiedy tworzyć agregat Root?
- 6. Domain Driven Design w programowaniu funkcjonalnym?
- 7. Domain Driven Design w aplikacji Node.js
- 8. Domain Driven Design, Domain objects, nastawienie do seterów
- 9. Domain Driven Design: jak odzyskać listy złożonych danych
- 10. W jaki sposób Domain Driven Design obsługuje raportowanie?
- 11. Kiedy nie powinniśmy stosować podejścia opartego na Domain-Driven Design?
- 12. Czy istnieje niezgodność między repozytoriami Design Domain Driven Design i Spring Data?
- 13. Gdzie znajduje się "ListViewItemPlaceholderBackgroundThemeBrush"?
- 14. Gdzie znajduje się Microsoft.Deployment.WindowsInstaller?
- 15. Wzór dla przepływu pracy
- 16. Gdzie znajduje się lokalne repozytorium?
- 17. Gdzie znajduje się interpreter Ruby?
- 18. gdzie znajduje się zamówienie woocommerce?
- 19. Gdzie znajduje się dokumentacja NUnit.Mocks?
- 20. Które ORMy obsługują style przepływu pracy
- 21. Jak pisać historie/scenariusze w BDD (Behavior Driven Design)
- 22. CRM2011 Przepływ pracy: Co się stanie, jeśli pole używane w stanie przepływu pracy zostanie zaktualizowane po uruchomieniu przepływu pracy?
- 23. CQ5 Programowo uruchamianie przepływu pracy
- 24. Gdzie znajduje się obszar nazw System.Runtime.Serialization.Json?
- 25. Gdzie znajduje się folder Android SDK?
- 26. Gdzie znajduje się dokumentacja iTunes SDK/API?
- 27. Gdzie znajduje się kod źródłowy ConstraintLayout?
- 28. Gdzie znajduje się centrum danych Firebase?
- 29. Gdzie Xcode znajduje się na dysku twardym?
- 30. Gdzie znajduje się obszar nazw ConfigurationManager?
Można powiedzieć, że modelowanie domeny OO dotyczy nounification of czasowników. –