Skip to main content

UC-LLN-OEF-002 — Verder gaan met niet-afgeronde oefening

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-OEF-002
NaamVerder gaan met niet-afgeronde oefening
DomeinLeerling / Oefenen en voortgang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, database, technische module, SignalR-service
RolcontextIngelogde leerling die binnen dezelfde oefening en actieve niveaucontext een hervatbare niet-afgeronde exercise run heeft.
Betrokken schermenOefening-startpagina, oefenscherm, vraagcomponent, voortgangscomponent, live-meekijkcomponent.
Gerelateerde usecasesUC-LLN-OEF-001 — Oefening-startpagina openen; UC-LLN-OEF-004 — Vraag beantwoorden; UC-LLN-OEF-007 — Oefening onderbreken; UC-LLN-OEF-008 — Oefening afronden; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen
Primaire entiteitenExerciseRuns, ExerciseRunProgress, Exercises, ExerciseModules, Users, TeacherLevels
Secundaire entiteiten / eventsGeen persistente events; bestaande run-, voortgangs- en live-voortgangsreadmodels.
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling via de actie Verder gaan een eerder gestarte maar nog niet afgeronde exercise run hervat. Het systeem gebruikt altijd de laatst gestarte niet-afgeronde run binnen dezelfde oefening en dezelfde actieve niveaucontext. Runs uit andere niveaus of andere oefeningcontexten worden niet hervat via deze actie.

Het hervatten opent het oefenscherm op de juiste voortgangspositie. Reeds opgeslagen antwoorden, afrondingen per vraag, Geen idee-markeringen en module-specifieke vraaggegevens blijven behouden. De leerling gaat verder vanaf de eerstvolgende nog niet definitief afgeronde vraag of, wanneer de modulecontext dat vereist, vanaf de actuele server-side voortgangspositie.

Hervatten is geen nieuwe oefening starten. Er wordt geen nieuwe exercise run aangemaakt en er worden geen uniforme statistieken opnieuw berekend. Het systeem leest de bestaande run, controleert actuele toegang en maakt de voortgang opnieuw beschikbaar voor rendering en eventuele live-meekijkers.

Deze usecase stopt zodra de leerling het oefenscherm met de hervatte run ziet. Het beantwoorden van de volgende vraag, opnieuw opslaan van voortgang, onderbreken en afronden vallen onder aparte vervolgusecases.

3. Scope

Deze usecase omvat wel:

  • aanklikken van Verder gaan op de oefening-startpagina
  • opnieuw server-side controleren van leerlingcontext en oefeningtoegang
  • selecteren van de laatst gestarte niet-afgeronde run binnen dezelfde oefening en niveaucontext
  • laden van opgeslagen runmetadata, vraagpayload en voortgangsregels
  • bepalen van de hervatpositie
  • openen van het oefenscherm met de bestaande run
  • beschikbaar maken van de actuele voortgang voor live meekijken
  • veilig blokkeren wanneer de run niet meer hervatbaar is

Deze usecase omvat niet:

  • aanmaken van een nieuwe exercise run
  • wijzigen van de vraagvolgorde
  • beantwoorden of beoordelen van een vraag
  • afronden van de run
  • berekenen van eindstatistieken
  • wijzigen van niveauautorisaties
  • tonen van geschiedenis of resultaatdetails
  • oplossen van verouderde of corrupte modulepayloads buiten veilige foutafhandeling

DRY-afbakening voor deze usecase: de regels voor het bepalen of een oefening toegankelijk is blijven bij de oefenaanbod- en toegangsusecases. Deze usecase gebruikt die controle als voorwaarde voordat een bestaande run wordt hervat.

4. Pre-condities

IDVoorwaarde
PRE-001De leerling is ingelogd en heeft een actieve leerlingrol.
PRE-002De oefening-startpagina heeft Verder gaan getoond op basis van een bestaande niet-afgeronde run.
PRE-003De backend kan de actuele leerling-, oefening- en niveaucontext opnieuw valideren.
PRE-004De betreffende exercise run bestaat en is niet afgerond.
PRE-005De run hoort bij dezelfde leerling, oefening en actieve niveaucontext.
PRE-006De technische module die nodig is om de vraag te renderen is beschikbaar of veilig afhandelbaar.
PRE-007De opgeslagen voortgang bevat voldoende informatie om de hervatpositie te bepalen.

5. Post-condities

IDResultaat
POST-001De leerling ziet het oefenscherm voor de bestaande niet-afgeronde run.
POST-002Er is geen nieuwe exercise run aangemaakt.
POST-003De bestaande run blijft niet-afgerond totdat een latere afrondingsusecase haar voltooit.
POST-004Opgeslagen antwoorden en voortgang blijven behouden.
POST-005De actuele voortgang is opnieuw beschikbaar voor verdere beantwoording en eventuele live-meekijkers.
POST-006Niet-hervatbare runs leiden tot veilige blokkade zonder nieuwe run aan te maken.
POST-007Er zijn geen resultaten, eindstatistieken of geschiedenisrecords aangemaakt.

6. Trigger

De usecase start wanneer de leerling op de oefening-startpagina de actie Verder gaan kiest.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefening-startpaginaKlikt op Verder gaan.Frontend vraagt hervatcontext op.Actie bevat geen vertrouwbare autorisatieclaims.
2OefenHub frontendRouteguardControleert actuele sessie.Request gaat alleen door bij geldige sessie.Server-side sessie is leidend.
3OefenHub backendAutorisatielaagControleert leerlingrol, niveaucontext en oefeningtoegang opnieuw.Alleen geldige context mag hervatten.UC-LLN-TOEG-003.
4OefenHub backendRunresolverZoekt niet-afgeronde runs voor dezelfde leerling, oefening en niveaucontext.Kandidaten worden gefilterd op IsCompleted = false.ExerciseRuns.
5OefenHub backendRunresolverSelecteert de laatst gestarte niet-afgeronde run.Run wordt gekozen als hervatdoel.Laatste niet-afgeronde run wint.
6OefenHub backendRunserviceLaadt runmetadata en vraag-/antwoordpayload.Bestaande voortgang wordt beschikbaar.JSON/base64-payload en vaste kolommen.
7OefenHub backendProgressserviceLaadt vraaggebonden voortgangsregels.Reeds afgeronde vragen en actuele positie worden bepaald.ExerciseRunProgress of equivalente server-side voortgangsopslag.
8OefenHub backendTechnische moduleBereidt rendering van de actuele vraag voor.Module-specifieke vraagrepresentatie wordt afgeleid.Module vertaalt payload naar eigen DTO.
9OefenHub backendOefenscherm-readmodelBouwt hervatweergave op.Readmodel bevat actuele vraag, voortgang en runcontext.Geen nieuwe run.
10OefenHub frontendOefenschermRendert hervatte oefening.Leerling ziet de actuele vraag en voortgang.Vervolg via vraag-beantwoordenflow.
11OefenHub backendSignalR / live voortgangMaakt actuele runstatus beschikbaar voor bevoegde meekijkers.Eventuele meekijkers kunnen vervolgupdates ontvangen.Geen nieuwe meekijksessie voor leerling.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Sessie is verlopenRouteguard leidt naar login of veilige publieke context.Niet van toepassingGeen
ALT-0023Leerling heeft geen toegang meer tot de oefeningHervatten wordt geblokkeerd.Componentmelding / toegangafhandelingGeen
ALT-0034Geen niet-afgeronde run meer gevondenSysteem keert terug naar startpagina zonder Verder gaan.Componentmelding / bijgewerkte staatGeen
ALT-0045Meerdere niet-afgeronde runs bestaanSysteem kiest de laatst gestarte run binnen dezelfde context.Niet van toepassingGeen
ALT-0055Alleen runs uit andere niveaus bestaanDeze runs worden genegeerd voor Verder gaan.Niet van toepassingGeen
ALT-0066Runpayload is technisch niet leesbaarHervatten wordt veilig geblokkeerd en technisch gelogd.Componentmelding / foutafhandelingGeen domeinmutatie
ALT-0078Technische module is niet beschikbaarHervatten wordt geblokkeerd; bestaande run blijft bewaard.Componentmelding / foutafhandelingGeen
ALT-00810Vraag was al afgerond maar run niet voltooidSysteem bepaalt eerstvolgende niet-afgeronde vraag of actuele modulepositie.Niet van toepassingGeen
ALT-00911Geen bevoegde meekijkers actiefEr wordt geen live update naar derden gestuurd.Niet van toepassingGeen
ALT-01011Meekijker heeft geen actuele autorisatie meerLive update wordt niet verstuurd naar die meekijker.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Verder gaan hervat nooit een oefening uit een andere actieve niveaucontext.
BR-002Verder gaan maakt geen nieuwe exercise run aan.
BR-003Bij meerdere niet-afgeronde runs binnen dezelfde context wordt de laatst gestarte run hervat.
BR-004Een niet-afgeronde run verschijnt nog niet als afgeronde geschiedenisregel.
BR-005Hervatten vereist dezelfde server-side toegangscontrole als nieuw openen of starten.
BR-006Opgeslagen vraag- en antwoordpayload blijft bron van waarheid voor de inhoud van de hervatte run.
BR-007Uniforme runmetadata en voortgangsregels worden gelezen om de actuele stand te bepalen.
BR-008Hervatten mag geen eindstatistieken berekenen of afrondmoment zetten.
BR-009Een abrupt onderbroken oefening blijft hervatbaar zolang de toegang en runstatus dit toestaan.
BR-010Live meekijken gebruikt server-side opgeslagen voortgang en niet alleen clientstate.
BR-011Als de technische module niet meer beschikbaar is, mag de run niet corrupt worden aangepast.
BR-012De leerling ziet geen technische run- of vraagidentifiers.

10. Datavalidatie

Veld / objectValidatie
ExerciseRunMoet bestaan, bij de leerling horen, niet afgerond zijn en binnen dezelfde oefening en niveaucontext vallen.
OefeningtoegangMoet op het moment van hervatten opnieuw geldig zijn.
NiveaucontextMoet overeenkomen met de runcontext.
VraagpayloadMoet decodeerbaar zijn voor de gekoppelde technische module.
VoortgangsregelsMoeten consistent zijn met totaal aantal vragen en runstatus.
HervatpositieMag niet voorbij een afgeronde run wijzen.
Technische moduleMoet beschikbaar zijn voor rendering of leiden tot veilige blokkade.
Live voortgangMag alleen naar bevoegde meekijkers worden gepubliceerd.
Clientparameter run-idMag niet zonder server-side eigenaarschapcontrole worden vertrouwd.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1-11Geen persistente mutatieNiet van toepassingHervatten leest de bestaande run, voortgang en modulecontext; de eerstvolgende voortgangsmutatie ontstaat pas bij vraagbeantwoording of afronding.

12. Geen datamutaties

EntiteitReden
ExerciseRunsHervatten maakt geen nieuwe run aan en rondt de bestaande run niet af.
ExerciseRunProgressAlleen laden/renderen; beantwoording wijzigt voortgang pas in UC-LLN-OEF-004.
ExerciseModulesModule wordt alleen aangeroepen voor rendering.
UserSettingsNiveaucontext wordt niet gewijzigd.
StudentLevelAuthorizationsAutorisaties worden alleen gecontroleerd.
SystemMessagesHervatten maakt geen systeemberichten aan.
LiveViewAuditDe leerling start geen meekijksessie; bestaande meekijkers worden alleen gevoed met voortgang.
EindstatistiekenWorden pas berekend bij afronden.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Bestaande run hervatten

16.2 Hervatten blokkeren

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingNiet van toepassingHervatten gebruikt geen domeinspecifieke popupregister-popup.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft starten, hervatten, beantwoorden, Geen idee, onderbreken, afronden en resultaatnavigatie binnen de leerling-oefenflow.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en voortgang, live meekijken en frontend-oefencontext beschrijft de technische afbakening, server-side brondata, autorisatie en UI-compositie voor deze usecase.
Software Requirements SpecificationSoftware Requirements Specification bevat centrale eisen en acceptatiecriteria voor oefenruns, voortgangsopslag, modulegedrag, foutafhandeling en veilige server-side verwerking.
Database-informatieDatabase-informatie blijft bron voor ExerciseRuns, ExerciseRunProgress, payloadvelden, snapshots en soft links richting gebruiker en catalogus.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor oefenflow, modulepayloads, Geen idee en voortgangsregistratie.

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Usecase-afleidingDektUsecasecontext
REQ-UC-LLN-OEF-002-001SRS-AUTH-001
SRS-LRN-002
SRS-LRN-007
AC-AUTH-001
AC-LRN-002
AC-LRN-007
Bij Verder gaan opnieuw server-side controleren of de leerling de oefening mag hervatten
REQ-UC-LLN-OEF-002-002SRS-CAT-006
SRS-LRN-002
SRS-LRN-007
AC-CAT-006
AC-LRN-002
AC-LRN-007
Alleen niet-afgeronde runs binnen dezelfde leerling-, oefening- en niveaucontext als hervatkandidaat gebruiken
REQ-UC-LLN-OEF-002-003SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Bij meerdere hervatkandidaten de laatst gestarte niet-afgeronde run kiezen
REQ-UC-LLN-OEF-002-004SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Bij hervatten geen nieuwe exercise run aanmaken
REQ-UC-LLN-OEF-002-005SRS-LRN-003
AC-LRN-003
Opgeslagen vraagpayload en voortgangsregels laden voordat het oefenscherm wordt getoond
REQ-UC-LLN-OEF-002-006SRS-AUTH-001
SRS-LRN-002
SRS-LRN-007
AC-AUTH-001
AC-LRN-002
AC-LRN-007
De hervatpositie bepalen op basis van server-side opgeslagen voortgang
REQ-UC-LLN-OEF-002-007SRS-AUTH-001
SRS-ACC-003
SRS-ACC-005
SRS-LRN-002
SRS-LRN-007
SRS-NFR-SEC-001
AC-AUTH-001
AC-ACC-003
AC-ACC-005
AC-LRN-002
AC-LRN-007
AC-NFR-SEC-001
Hervatten veilig blokkeren wanneer de run niet meer bestaat, al afgerond is of niet meer toegankelijk is
REQ-UC-LLN-OEF-002-008SRS-AUTH-001
SRS-LRN-009
SRS-LIVE-001
AC-AUTH-001
AC-LRN-009
AC-LIVE-001
Eventuele live-meekijkers alleen updates tonen wanneer zij op dat moment bevoegd zijn
REQ-UC-LLN-OEF-002-009SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Bij hervatten geen eindstatistieken berekenen of afrondmoment zetten
REQ-UC-LLN-OEF-002-010SRS-LRN-009
SRS-MOD-003
SRS-NFR-SEC-001
AC-LRN-009
AC-MOD-003
AC-NFR-SEC-001
Technische module- of payloadfouten veilig afhandelen zonder de bestaande run corrupt te wijzigen
REQ-UC-LLN-OEF-002-011SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Een run die al is afgerond niet meer via Verder gaan hervatten
REQ-UC-LLN-OEF-002-012SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Bij hervatten voorkomen dat antwoorden of markeringen opnieuw worden geïnitialiseerd
REQ-UC-LLN-OEF-002-013SRS-AUTH-001
SRS-LRN-003
AC-AUTH-001
AC-LRN-003
De voortgangspositie herleiden uit server-side opgeslagen voortgang en niet uit browserstate
REQ-UC-LLN-OEF-002-014SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Een niet-hervatbare run niet automatisch verwijderen
REQ-UC-LLN-OEF-002-015SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Het hervatten van een run scheiden van het beantwoorden van de eerstvolgende vraag
REQ-UC-LLN-OEF-002-016SRS-AUTH-001
SRS-ACC-003
SRS-ACC-005
SRS-LRN-009
SRS-NFR-ACC-001
AC-AUTH-001
AC-ACC-003
AC-ACC-005
AC-LRN-009
AC-NFR-ACC-001
Een gewijzigde actuele toegang respecteren, ook wanneer de run eerder wel toegankelijk was
REQ-UC-LLN-OEF-002-017SRS-LRN-008
SRS-MOD-003
AC-LRN-008
AC-MOD-003
Bij module-onbeschikbaarheid een bestaande niet-afgeronde run historisch intact laten
REQ-UC-LLN-OEF-002-018SRS-LRN-002
SRS-LRN-007
SRS-MOD-003
AC-LRN-002
AC-LRN-007
AC-MOD-003
De hervatte vraag kunnen renderen met dezelfde modulecontext als de oorspronkelijke run
REQ-UC-LLN-OEF-002-019SRS-LRN-002
SRS-LRN-007
SRS-MOD-003
AC-LRN-002
AC-LRN-007
AC-MOD-003
Bij hervatten de uniforme runmetadata en modulepayload consistent combineren
REQ-UC-LLN-OEF-002-020SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Bij hervatten geen nieuwe vraagset genereren
REQ-UC-LLN-OEF-002-021SRS-AUTH-001
SRS-RDM-001
SRS-RDM-003
SRS-RDM-009
SRS-CAT-001
SRS-LRN-001
AC-AUTH-001
AC-RDM-001
AC-RDM-003
AC-RDM-009
AC-CAT-001
AC-LRN-001
Bij vervallen toegang een veilige route terug naar het oefenaanbod of de startpagina bieden
REQ-UC-LLN-OEF-002-022SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Voorkomen dat een leerling een run van een andere gebruiker hervat via een gemanipuleerde parameter
REQ-UC-LLN-OEF-002-023SRS-LRN-003
SRS-NFR-SEC-001
AC-LRN-003
AC-NFR-SEC-001
Reeds vastgelegde voortgang beschikbaar houden voor latere afronding of veilige analyse
REQ-UC-LLN-OEF-002-024SRS-LRN-002
SRS-LRN-007
SRS-NFR-AUD-001
AC-LRN-002
AC-LRN-007
AC-NFR-AUD-001
Hervatten kunnen uitvoeren zonder de geschiedenisweergave te wijzigen
REQ-UC-LLN-OEF-002-025SRS-LRN-002
SRS-LRN-007
SRS-NFR-AUD-001
AC-LRN-002
AC-LRN-007
AC-NFR-AUD-001
Een hervatpoging die wordt geblokkeerd technisch herleidbaar kunnen loggen