Wersjonowanie treści tworzonej przez użytkownika

0

Witam,
od dłuższego siedzę nad problemem wersjonowania treści.

Może dla uproszczenia opisania problemu przyjmy założenia platformy do kursów (chyba każdy wie jak to mniej więcej działa). Taki kurs może się składać z wielu modułów, a w tym module może być również wiele lekcji - to nie jest prosta płaska struktura. Każdy autor tworzy i publikuje kurs. Natomiast kursant uczestniczy/kupuje kurs i go "przechodzi".

Problemem jest wprowadzanie zmian przez twórcę oraz obsłużenie publikowanych zmian po stronie kursanta. Można powiedzieć, że mamy następujące rodzaje zmian:

  • znaczące - głównie zmiany w strukturach kursu - np. dodanie, usunięcie lekcji/modułu lub zmiana kolejności
  • nieznacząca - np. poprawa literówki

Pierwsze co zrobiłem to oddzieliłem twórcę od kursanta. Jeśli twórca coś sobie robi po publikacji to nie pojawia się to u kursanta (jeśli jest w trakcie przechodzenia). To co jest u kursanta nie może być edytowane, jest tylko readonly - można powiedzieć że jest to pełna kopia kursu.

Kolejny problem to co jeśli twórca opublikuje "nową wersję" w czasie gdy kursant będzie w trakcie przechodzenia kursu - przychodzi do następnej lekcji a tam zupełnie inny kontekst. Pierwsza myśl to znowu kopiowanie całego kursu dla każdego użytkownika, który rozpoczyna przechodzenie. Inny pomysł to wprowadzenie jakiegoś mechanizmu wersjonowania. Natomiast wtedy rodzi się problem jak to wersjonować, jaką wersję w jakiej sytuacji pokazywać kursantowi, jak mieć szybki odczyt...

Tutaj ważna uwaga to nie jest płaska struktura jak np. wpis na bloga, tylko wielopozioma struktura.

Szukałem różnych wzorców, gotowych rozwiązań które można byłoby wykorzystać...

Jedyne co znalazłem to bibliotekę Javers, która może w jakiś sposób pomóc. Tak pracuję w środowisku Javy, ale z chęcią zobaczę co słychać u "innych" 😀

Może ktoś spotkał się z podobnym problemem i może się podzielić jak to rozwiązał lub ktoś coś podpowie 😀

Wydaje mi się, że największy problem to struktura wielopoziomowa i zarządzanie całą strukturą. Robienie deep copy i pilnowanie tego wszystkiego. Może też błąd jest w moich założeniach, że szukam jakiegoś gotowca, automatu, który ogarnie wszystko za mnie, a chyba tutaj trzeba to okiełznać samemu 😀

Ps Mam nadziej, że dobry dział forum.

1

No napisz sobie to sam, w bazie umieszczasz kurs z jakimś ID oraz przypisujesz to ID do usera, a kiedy coś w kursie zostanie zmienione to ta zmieniona wersja ma już nowe ID, do kursanta tylko dajesz info że "ej jest nowa wersja kursu, chcesz" i tyle.

0

A to nie może być tak, że masz jedną wersję kursu i dostęp do niego jest online. Chyba nie jest tak, że stale ktoś coś tam poprawia dzień dzień tylko co jakiś czas. Zobacz jak rozwiązuje to akademio. Jedna wersja kursu - ewentualnie jak wprowadzane są zmiany, to muszą być (o ile musza) akceptowane do opublikowania nowej wersji przez Ciebie czy kogoś kompetentnego do tego.

Jeśli masz wielotematyczne kursy i tworzę ja specjaliści w swoich tematach - to wystarczy jedna wersja.

Chyba że masz na przykład tematykę jedną ale różne jej poziomy typu - podstawowy, zaawansowany itp. I zmieniają się zakresami, wtedy nic się nie zmienia tylko moduły muszą aktualizować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1