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.