Skip to main content

UC-LLN-OEF-007 — Oefening onderbreken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-OEF-007
NaamOefening onderbreken
DomeinLeerling / Oefenen en voortgang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, routeguard, database, SignalR-hub, live-meekijkers
RolcontextIngelogde gebruiker met actieve leerlingrol en een lopende, niet-afgeronde exercise run.
Betrokken schermenOefenscherm, browsernavigatie, routeguard, oefening-startpagina, live-meekijkweergave.
Gerelateerde usecasesUC-LLN-OEF-001 — Oefening-startpagina openen; UC-LLN-OEF-002 — Verder gaan met niet-afgeronde oefening; UC-LLN-OEF-004 — Vraag beantwoorden; UC-LLN-OEF-008 — Oefening afronden; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen
Primaire entiteitenExerciseRuns, ExerciseRunProgress
Secundaire entiteiten / eventsLiveViewSessionEndedByStudentExit, LiveViewProgressUpdated, LiveViewAudit
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft wat er gebeurt wanneer een leerling een lopende oefening onderbreekt door het oefenscherm te verlaten voordat de volledige exercise run is afgerond. Een leerling heeft hiervoor geen aparte pauzeknop nodig. Het verlaten van de pagina, het navigeren naar een andere route, het sluiten van het tabblad of het verlopen van de browsercontext kan functioneel allemaal leiden tot een onderbroken oefening.

OefenHub bewaart na iedere bevestigde vraag al server-side de voortgang. Daardoor hoeft bij onderbreken geen volledige nieuwe opslagactie plaats te vinden om de oefening later hervatbaar te maken. De bestaande opgeslagen voortgang blijft de bron van waarheid. Niet-bevestigde invoer in een antwoordveld wordt niet als definitieve voortgang beschouwd en hoeft niet persistent te worden opgeslagen.

De exercise run blijft administratief bestaan als niet-afgeronde run. Zij verschijnt daarom niet als afgeronde geschiedenisregel en krijgt geen eindstatistieken. De run kan later via de vervolgactie Verder gaan worden hervat zolang de leerling, oefening, module en toegangscontext dat nog toestaan.

Wanneer een ouder/voogd of docent op dat moment live meekijkt, moet het systeem de meekijkcontext informeren dat de leerling de oefencontext heeft verlaten. De live-weergave is daarmee niet langer actueel. De beëindiging van een live-meekijksessie is afgeleid van het verlaten van de oefencontext en mag niet worden verward met het afronden van de oefening.

DRY-afbakening: deze usecase beschrijft niet opnieuw hoe antwoorden worden opgeslagen, hoe een run wordt hervat of hoe live meekijken wordt gestart. Antwoordopslag blijft onderdeel van UC-LLN-OEF-004, hervatten van UC-LLN-OEF-002 en live meekijken van de rolgebonden docent-/ouderflows. Deze usecase beschrijft alleen het veilige effect van onderbreking op de leerlingrun.

3. Scope

Deze usecase omvat wel:

  • verlaten van een lopende oefening door een leerling
  • onderscheid tussen bevestigde voortgang en niet-bevestigde invoer
  • behouden van de niet-afgeronde exercise run
  • voorkomen dat de run als afgeronde geschiedenisregel verschijnt
  • voorkomen dat eindstatistieken worden berekend
  • beschikbaar houden van hervatten via Verder gaan wanneer de context nog geldig is
  • informeren of beëindigen van actieve live-meekijkcontexten
  • veilige afhandeling bij browserrefresh, routewisseling, tab sluiten of sessieverloop
  • geen mutaties aan relaties, autorisaties, profielinstellingen of berichten

Deze usecase omvat niet:

  • starten van een nieuwe oefening
  • beantwoorden of corrigeren van een vraag
  • tonen van het juiste antwoord na bevestiging
  • afronden van de oefening
  • berekenen van eindstatistieken
  • tonen van resultaatpopup of geschiedenis
  • verwijderen van een niet-afgeronde run
  • live meekijken starten door docent of ouder/voogd
  • intrekken of beheren van toegang door docent
  • accountlogout als zelfstandige accountflow

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker heeft een actieve leerlingcontext of had die bij het starten van de run.
PRE-002Er bestaat een ExerciseRuns-record voor deze leerling.
PRE-003De run is nog niet afgerond.
PRE-004De laatst bevestigde vraagvoortgang is server-side opgeslagen of er is nog geen bevestigde vraagvoortgang.
PRE-005De frontend kan het verlaten van de oefencontext functioneel detecteren of de backend kan bij latere toegang afleiden dat de run niet afgerond is.
PRE-006Eventuele live-meekijkers zijn gekoppeld aan dezelfde actuele run via hun eigen autorisatiecontext.
PRE-007Er bestaat geen verplichting om bij onderbreken een reden of bevestiging aan de leerling te vragen.

5. Post-condities

IDResultaat
POST-001De exercise run blijft bestaan als niet-afgeronde run.
POST-002ExerciseRuns.IsCompleted blijft false of equivalent niet-afgerond.
POST-003ExerciseRuns.CompletedAtUtc blijft leeg.
POST-004Bevestigde vraagvoortgang blijft bewaard.
POST-005Niet-bevestigde invoer wordt niet als definitieve vraagvoortgang opgeslagen.
POST-006De run verschijnt niet in afgeronde geschiedenis of resultaatlijsten.
POST-007De run kan later hervat worden wanneer de toegangscontext nog geldig is.
POST-008Actieve live-meekijkers worden geïnformeerd dat de leerling de oefencontext heeft verlaten of de livecontext wordt beëindigd.
POST-009Er worden geen eindstatistieken berekend.
POST-010Er worden geen relaties, autorisaties, berichten, meldingen of profielgegevens gewijzigd.

6. Trigger

De usecase start wanneer een leerling tijdens een lopende oefening het oefenscherm verlaat voordat de exercise run formeel is afgerond.

Voorbeelden van triggers zijn:

  • de leerling navigeert naar een andere pagina;
  • de leerling gebruikt de browserknop terug;
  • de leerling sluit het tabblad of de browser;
  • de leerling verliest verbinding en keert niet direct terug;
  • de sessie verloopt tijdens een lopende oefening;
  • de applicatie detecteert dat de actieve oefencomponent wordt verlaten.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefenschermWerkt aan een lopende oefening.Frontend toont actuele vraag en voortgang.Run is niet afgerond.
2LeerlingOefenscherm / browserVerlaat de oefencontext.Frontend detecteert routewisseling of componentafbraak wanneer technisch mogelijk.Geen aparte pauzeknop vereist.
3OefenHub frontendOefencomponentControleert of er niet-bevestigde invoer aanwezig is.Niet-bevestigde invoer wordt niet als definitief antwoord beschouwd.Alleen bevestigde antwoorden tellen.
4OefenHub frontendOefencomponentStuurt waar mogelijk een lichte onderbrekingsmelding naar backend.Backend ontvangt signaal dat oefencontext is verlaten.Best-effort; run blijft ook zonder signaal niet-afgerond.
5OefenHub backendRunserviceLaadt de lopende run.Systeem verifieert dat de run nog niet afgerond is.ExerciseRuns.IsCompleted = false.
6OefenHub backendRunserviceBehoudt de bestaande voortgangstoestand.Er wordt geen afronding uitgevoerd.Geen eindstatistieken.
7OefenHub backendSignalR-hubControleert actieve live-meekijkcontexten.Geautoriseerde meekijkers krijgen bericht dat de leerling de oefencontext heeft verlaten.Geen nieuwe oefenresultaten.
8OefenHub backendLive-meekijkcontextBeëindigt actieve live-meekijkregistraties voor deze run.Meekijkweergave blijft alleen-lezen en niet-actueel.LiveViewAudit.EndedAtUtc waar van toepassing.
9OefenHub frontendNieuwe route / verlaten contextToont de gekozen nieuwe pagina of sluit de context.Leerling is niet langer in de oefenweergave.Geen resultaatpopup.
10OefenHub backendRun-readmodelHoudt run beschikbaar voor hervatten.Verder gaan kan de run later tonen.UC-LLN-OEF-002.
11OefenHub backendGeschiedenis-readmodelSluit de run uit van afgeronde geschiedenis.Run verschijnt niet als afgeronde geschiedenisregel.CompletedAtUtc ontbreekt.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Browser wordt abrupt geslotenBackend ontvangt mogelijk geen directe melding; run blijft door ontbreken van afronding niet-afgerond.Niet van toepassingGeen extra mutatie vereist
ALT-0022Netwerk valt wegLaatst bevestigde server-side voortgang blijft behouden.Niet van toepassingGeen nieuwe vraagmutatie
ALT-0033Leerling heeft tekst ingevuld maar niet bevestigdNiet-bevestigde invoer wordt niet als antwoord opgeslagen.Niet van toepassingGeen
ALT-0044Onderbrekingsmelding bereikt backend nietRun blijft op basis van bestaande status niet-afgerond.Niet van toepassingGeen
ALT-0055Run is intussen al afgerond via geldige afrondflowOnderbrekingsverwerking doet niets meer.Niet van toepassingGeen nieuwe mutatie
ALT-0065Sessie is verlopenAccount-/sessieflow handelt sessie af; run blijft niet-afgerond.Niet van toepassingGeen oefenmutatie
ALT-0077Er zijn geen live-meekijkersSysteem hoeft geen livebericht te verzenden.Niet van toepassingGeen
ALT-0087SignalR-update faaltRunstatus blijft correct; live-informatie kan gemist worden.Niet van toepassingGeen wijziging aan run
ALT-0098Live-meekijksessie heeft aparte auditregistratieEindmoment van de actieve meekijkregistratie wordt gevuld.Niet van toepassingLiveViewAudit.EndedAtUtc
ALT-01010Autorisatie vervalt na onderbrekenRun blijft historisch bestaan maar mag mogelijk niet meer hervat worden.Componentmelding bij hervattenGeen mutatie in deze usecase
ALT-01110Oefening of module wordt na onderbreken inactiefHervatten wordt bij een volgend verzoek opnieuw server-side gecontroleerd.Componentmelding bij hervattenGeen mutatie in deze usecase
ALT-01211Geschiedenis wordt direct na onderbreken geopendRun wordt niet getoond tussen afgeronde resultaten.Lege of ongewijzigde geschiedenisweergaveGeen

9. Business rules

IDRegel
BR-001Een leerling hoeft een oefening niet expliciet te pauzeren om deze te kunnen onderbreken.
BR-002Een onderbroken run blijft een niet-afgeronde exercise run.
BR-003Alleen bevestigde antwoorden zijn definitieve voortgang.
BR-004Niet-bevestigde invoer in het antwoordveld hoeft niet persistent te worden opgeslagen.
BR-005Onderbreken mag IsCompleted niet op true zetten.
BR-006Onderbreken mag geen CompletedAtUtc vullen.
BR-007Onderbreken mag geen eindstatistieken berekenen.
BR-008Een onderbroken run verschijnt niet in afgeronde oefengeschiedenis.
BR-009Een onderbroken run kan later worden hervat via de laatste niet-afgeronde run, mits de context nog geldig is.
BR-010Meekijkers moeten weten dat de livecontext niet langer actief is wanneer de leerling de oefencontext verlaat.
BR-011Onderbreken wijzigt geen niveauautorisaties, relaties of oefeningconfiguratie.
BR-012Onderbreken stuurt geen systeembericht naar de leerling.
BR-013Onderbreken maakt geen resultaatpopup en geen PDF-export beschikbaar.
BR-014Abrupt verlaten zonder backendmelding mag niet leiden tot dataverlies van eerder bevestigde antwoorden.
BR-015De hervatbaarheid wordt bij latere toegang opnieuw server-side gecontroleerd.
BR-016Onderbreking is geen fouttoestand zolang de run consistent niet-afgerond blijft.

10. Datavalidatie

Veld / objectValidatie
ExerciseRunIdMoet bestaan wanneer een onderbrekingsmelding wordt verwerkt.
ExerciseRuns.UserIdMoet overeenkomen met de leerling die de oefencontext verlaat.
ExerciseRuns.IsCompletedMoet false zijn om als onderbroken run te gelden.
Laatst bevestigde vraagAlleen server-side bevestigde voortgang geldt als bewaard.
Niet-bevestigde invoerWordt niet gevalideerd als definitief antwoord.
Live-meekijkcontextAlleen gekoppelde livecontexten voor dezelfde run worden geïnformeerd.
CompletedAtUtcMag niet gevuld worden door onderbreken.
EindstatistiekenMogen niet berekend worden zonder afronding.
HervatrouteWordt later opnieuw gevalideerd via UC-LLN-OEF-002 en UC-LLN-TOEG-003.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
6Geen mutatieExerciseRunsRun blijft niet-afgerond; geen afrondingsvelden worden gezet.
7EventLiveViewSessionEndedByStudentExitLive-meekijkcontext wordt geïnformeerd dat de leerling de oefencontext heeft verlaten.
8MutatieLiveViewAuditEndedAtUtc wordt gevuld voor actieve live-meekijkregistraties die door het verlaten van deze run eindigen.
11Geen mutatieGeschiedenis-readmodelDe run wordt door bestaande status niet opgenomen in afgeronde geschiedenis.

12. Geen datamutaties

EntiteitReden
UsersOnderbreken wijzigt het account niet.
UserSettingsNiveaucontext en voorkeuren blijven ongewijzigd.
UserRolesRollen worden niet gewijzigd.
UserRelationshipsRelaties zijn niet betrokken.
StudentLevelAuthorizationsAutorisaties worden niet toegekend of ingetrokken.
ExercisesOefeningconfiguratie blijft ongewijzigd.
ExerciseModulesModulemetadata blijft ongewijzigd.
SystemMessagesOnderbreken veroorzaakt geen systeembericht.
PrivateMessageThreadsOnderbreken veroorzaakt geen privébericht.
TicketsOnderbreken maakt geen melding aan.
ExerciseRuns.CompletedAtUtcAfrondmoment wordt niet gevuld.
EindstatistiekveldenStatistieken worden pas bij afronding berekend.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Onderbreken met detecteerbare routewisseling

16.2 Abrupt verlaten zonder backendmelding

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingOnderbreken van een oefeningEr is geen domeinspecifieke popup nodig; verlaten van de oefencontext is toegestaan gedrag.

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-007-001SRS-LRN-006
AC-LRN-006
Een lopende oefening niet automatisch afronden wanneer de leerling het oefenscherm verlaat
REQ-UC-LLN-OEF-007-002SRS-LRN-003
AC-LRN-003
Eerder bevestigde antwoorden en voortgang behouden wanneer een oefening wordt onderbroken
REQ-UC-LLN-OEF-007-003SRS-LRN-003
AC-LRN-003
Niet-bevestigde invoer niet als definitief antwoord opslaan
REQ-UC-LLN-OEF-007-004SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Een onderbroken run als niet-afgerond beschikbaar houden zolang hervatten functioneel toegestaan is
REQ-UC-LLN-OEF-007-005SRS-LRN-006
AC-LRN-006
Voor een onderbroken run geen afrondmoment vullen
REQ-UC-LLN-OEF-007-006SRS-LRN-009
AC-LRN-009
Voor een onderbroken run geen eindstatistieken berekenen
REQ-UC-LLN-OEF-007-007SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Een onderbroken run niet tonen als afgeronde geschiedenisregel
REQ-UC-LLN-OEF-007-008SRS-LRN-009
SRS-LIVE-001
AC-LRN-009
AC-LIVE-001
Eventuele live-meekijkcontexten informeren of beëindigen wanneer de leerling de oefencontext verlaat
REQ-UC-LLN-OEF-007-009SRS-AUTH-001
SRS-LRN-002
SRS-LRN-007
AC-AUTH-001
AC-LRN-002
AC-LRN-007
Latere hervatting opnieuw server-side controleren op toegang en contextgeldigheid
REQ-UC-LLN-OEF-007-010SRS-TIC-002
SRS-LRN-009
SRS-NFR-SEC-001
AC-TIC-002
AC-LRN-009
AC-NFR-SEC-001
Abrupt verlaten zonder backendmelding veilig kunnen verwerken op basis van de bestaande runstatus
REQ-UC-LLN-OEF-007-011SRS-AUTH-001
SRS-ACC-003
SRS-REL-001
SRS-MSG-001
SRS-TIC-002
SRS-LRN-009
AC-AUTH-001
AC-ACC-003
AC-REL-001
AC-MSG-001
AC-TIC-002
AC-LRN-009
Bij onderbreken geen relaties, autorisaties, berichten, meldingen of profielinstellingen wijzigen
REQ-UC-LLN-OEF-007-012SRS-LRN-009
SRS-POP-001
AC-LRN-009
AC-POP-001
Onderbreken als normaal gebruik kunnen afhandelen zonder verplichte fout- of bevestigingspopup