Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%)
|
Załóżmy, że mamy następującą sytuację: użytkownik może podjąć się realizowania projektu, który składa się z wielu zadań.
Tworzę więc klasy: User, Project i Task. Podejmowanie projektu składa się z wykonywania kolejnych zadań i w każdym momencie musi być jasne które z zadań zostały już zrealizowane. Nie umiem się zdecydować co zrobić w momencie podejmowania zadania przez użytkownika. Problemem dla mnie jest to, że chyba nie mogę po prostu utworzyć relacji między użytkownikiem, a projektem bo mimo, że miałbym wtedy wszystkie dane na temat zadań do wykonania to nie miałbym gdzie zapisać informacji na temat ich realizacji przez konkretnego użytkownika. Na przykład gdy użytkownik zakończy zadanie to muszę gdzieś zapisać datę tego zdarzenia. Myślałem o stworzeniu kolejnych dwóch klas np. UserProject i UserTask, które reprezentowałyby podjęty projekt i jego zadania. W momencie podejmowania projektu z 10 zadaniami byłby dla danego użytkownika tworzony obiekt UserProject oraz 10 obiektów UserTask w realcji z UserProject. Mógłbym wtedy zapisać w tych nowych obiektach dowolne dane. A może raczej powinienem tylko dodać projekt do myProjects obiektu użytkownik, a dopiero w trakcie realizowania kolejnych zadań tworzyć obiekty np. finishedTask? Ale gdzie mógłbym wtedy przechować informację o np. dacie podjęcia projektu? A może jeszcze jakoś inaczej? Ten post edytował Foxx 21.10.2013, 11:02:32 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%)
|
Po namyśle wydaje mi się, że wiem jak to rozwiążę.
Przede wszystkim chciałem dodać informację, która chyba trochę umyka: Project i Task są tworzone w CMSie przez admina. Użytkownicy podejmują się realizacji projektów, ale nie modyfikują w żaden sposób obiektów Project i Task. Każdy użytkownik ma swoją indywidualną przygodę z projektem czyli z jego zadaniami. W związku z tym potraktowanie Project i Task jako "matrycy" wydaje mi się uzasadnione. Moje obecne rozwiązanie polega na tym, że zmieniam nomenklaturę na Goal i Step - są to obiekty tworzone przez admina. User, który decyduje się realizować wybrany cel tworzy w tym momencie kolejny obiekt, który nazwę Project. Project będzie to Goal , który jest realizowany przez konkretnego użytkownika. Project będzie w relacji z Goal, ale nie będą to podobne obiekty - Project przechowuje informacje specyficzne dla danego użytkownika oraz informację o tym z jakiego Goal się wywodzi. Po stworzeniu Project od razu tworzę dla niego obiekty Task, które są odzwierciedleniem Step. Czyli Task analogicznie jest to Step, który będzie realizowany przez konkretnego użytkownika, w danym terminie i który przechowa też wynik. Tworzę od razu wszystkie Tasks dla danego Projektu ponieważ i tak wszystkie muszą być stworzone. Tzn. w trakcie trwania projektu i tak każdy Task musi zostać przedstawiony userowi. Efektem będzie relacja User - Project - Task. Project i Task będą w relacji ze swoimi "matrycami" - czy to jest akceptowalne rozwiązanie? UPDATE: Stworzę też klasę GoalServer, którą zarejestruję jako service i która będzie się zajmować tworzeniem projektów i zadań oraz generalnie zadaniami na tych obiektach, np. pobieraniem odpowiednich zestawów zadań, zadaniami na zadaniach uruchamianych z crona itp. Ten post edytował Foxx 24.10.2013, 14:33:27 |
|
|
|
Foxx [Symfony][Symfony2][SF2] Jakie obiekty mają największy sens 21.10.2013, 11:02:06
Ghost_78 Ja w takich sytuacjach lubie uzywac relacji n:m cz... 21.10.2013, 11:37:31
pyro A nie możesz po prostu stworzyć m:m między użytkow... 21.10.2013, 12:05:54
Foxx @Ghost_78: Istotne jest dla mnie przechowywanie ko... 21.10.2013, 12:07:59
pyro Niech no ja naszkicuję "profesjonalny" m... 21.10.2013, 12:10:44
Foxx Czyli, trzymając się kontekstu Symfony2, proponuje... 21.10.2013, 13:08:13
pyro Możesz w takim razie dokładniej opisać jak się odb... 21.10.2013, 13:10:58
Foxx Już opisuję:
User decyduje się na wybrany projekt... 21.10.2013, 13:19:26
pyro Ale task też może być realizowany przez kilku użyt... 21.10.2013, 13:24:40
Foxx Task może być realizowany przez kilku użytkowników... 21.10.2013, 13:32:27
pyro No to wygląda, że podane rozwiązanie jest tym czeg... 21.10.2013, 13:44:19
Foxx Ok, dzięki. Przyjmę takie rozwiązanie, ale jeszcze... 21.10.2013, 13:50:40
Ghost_78 W SF2 rozwiazywalem to w taki sposob ze robilem re... 21.10.2013, 16:27:14 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 12:21 |