2009-09-23 20 views
6

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

1

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.

0

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.

2

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.

+0

Można powiedzieć, że modelowanie domeny OO dotyczy nounification of czasowników. –

3

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 ...

+0

txn dla odniesienia do architektury cebuli, ciekawy artykuł! –

Powiązane problemy