Skip to main content

UC-LLN-RES-003 — Oefening opnieuw maken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-RES-003
NaamOefening opnieuw maken
DomeinLeerling / Resultaten, statistieken, geschiedenis en PDF-export
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, technische oefenmodule, database
RolcontextIngelogde leerling die een afgeronde eigen exercise run opnieuw wil maken.
Betrokken schermenResultaatpopup, geschiedenisdetail, oefenscherm, oefeningpagina.
Gerelateerde usecasesUC-LLN-RES-001 — Resultaat na afronding bekijken; UC-LLN-HIS-003 — Resultaatdetail vanuit geschiedenis openen; UC-LLN-OEF-003 — Nieuwe oefening starten; UC-LLN-OEF-004 — Vraag beantwoorden; UC-LLN-OEF-008 — Oefening afronden; UC-LLN-DEL-004 — Gedeelde oefening opnieuw maken
Primaire entiteitenExerciseRuns, nieuwe duplicate exercise run, vraag- en antwoordpayload
Secundaire entiteiten / eventsExercises, ExerciseModules, bronvraagpayload, nieuwe vraagpayload
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWShould

2. Omschrijving

Deze usecase beschrijft hoe een leerling vanuit een resultaatweergave of geschiedenisdetail dezelfde oefening opnieuw maakt. De nieuwe run gebruikt dezelfde vragen als de bronrun, maar mag de volgorde wijzigen. De nieuwe run is een zelfstandige exercise run met eigen voortgang, eigen antwoorden, eigen afrondmoment en eigen statistieken.

De relatie met de bronrun wordt administratief vastgelegd via DuplicateOf of een gelijkwaardige verwijzing. De bronrun wordt niet gewijzigd en de resultaten van de bronrun worden niet overschreven. De nieuwe run is alleen een nieuwe uitvoering op basis van dezelfde vraaginhoud.

Wanneer de gekoppelde technische module niet meer beschikbaar of niet meer uitvoerbaar is, is de actie niet beschikbaar. Een leerling mag historische resultaten dan nog bekijken en als PDF downloaden, maar niet meer opnieuw maken wanneer de uitvoeringscontext ontbreekt.

DRY-afbakening: het starten van een volledig nieuwe oefening op basis van actuele configuratie hoort bij UC-LLN-OEF-003. Deze usecase gaat specifiek over opnieuw maken vanuit een bestaande afgeronde bronrun. Gedeelde oefeningen opnieuw maken wordt in het subdomein Gedeelde oefeningen verder uitgewerkt.

3. Scope

Deze usecase omvat wel:

  • tonen of beschikbaar maken van de actie Maak deze oefening opnieuw
  • controleren dat de bronrun afgerond en toegankelijk is
  • controleren dat de bronrun hermaakbaar is
  • controleren dat de technische module uitvoerbaar is
  • aanmaken van een nieuwe zelfstandige exercise run
  • overnemen van dezelfde vraaginhoud uit de bronrun
  • bepalen van de toegestane vraagvolgorde voor de nieuwe run
  • vullen van DuplicateOf of equivalente bronverwijzing
  • openen van het oefenscherm met de nieuwe run
  • waarborgen dat bronresultaten ongewijzigd blijven
  • veilige blokkade wanneer herhalen niet mogelijk is

Deze usecase omvat niet:

  • tonen van het resultaat zelf
  • PDF-export
  • delen met vrienden
  • wijzigen van de oefeningconfiguratie
  • opnieuw genereren op basis van actuele oefeningconfiguratie zonder bronrun
  • docent-testmodus
  • herberekenen van oude statistieken
  • herstel van verwijderde modules
  • intrekken of wijzigen van leerlingautorisaties

4. Pre-condities

IDVoorwaarde
PRE-001De leerling is ingelogd.
PRE-002De bronrun bestaat.
PRE-003De bronrun is afgerond.
PRE-004De leerling mag de bronrun bekijken.
PRE-005De bronrun bevat voldoende opgeslagen vraaginhoud om opnieuw te maken.
PRE-006De gekoppelde technische module of noodzakelijke render-/controlelogica is beschikbaar.
PRE-007De oefening is niet zodanig verwijderd of onbruikbaar dat opnieuw maken functioneel geblokkeerd moet worden.
PRE-008De backend kan een nieuwe zelfstandige run aanmaken.

5. Post-condities

IDResultaat
POST-001Er is een nieuwe zelfstandige exercise run aangemaakt.
POST-002De nieuwe run verwijst naar de bronrun via DuplicateOf of equivalente bronverwijzing.
POST-003De bronrun is ongewijzigd gebleven.
POST-004De nieuwe run bevat dezelfde vraaginhoud als de bronrun.
POST-005De vraagvolgorde mag afwijken wanneer dat is toegestaan.
POST-006De leerling wordt naar het oefenscherm van de nieuwe run geleid.
POST-007De nieuwe run heeft eigen voortgang en eigen resultaten zodra de leerling deze afrondt.
POST-008Bij blokkade ontstaat geen gedeeltelijke nieuwe run.

6. Trigger

De usecase start wanneer de leerling in de resultaatweergave of in een resultaatdetail vanuit geschiedenis kiest voor Maak deze oefening opnieuw.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingResultaatpopup of resultaatdetailBekijkt een afgeronde run.Resultaatacties worden bepaald.UC-LLN-RES-001 of UC-LLN-HIS-003.
2OefenHub backendResultaatserviceControleert of opnieuw maken functioneel mogelijk is.Actie wordt beschikbaar gemaakt.Module en brondata beschikbaar.
3OefenHub frontendResultaatactiesToont Maak deze oefening opnieuw.Leerling kan actie kiezen.Alleen wanneer toegestaan.
4LeerlingResultaatactiesKiest Maak deze oefening opnieuw.Frontend vraagt nieuwe duplicate run aan.Bronrun-id.
5OefenHub backendRouteguardControleert sessie en leerlingrol.Alleen geldige leerling gaat door.Server-side context.
6OefenHub backendDuplicatieserviceControleert dat de bronrun bestaat.Onbekende bron wordt geblokkeerd.ExerciseRuns.Id.
7OefenHub backendDuplicatieserviceControleert dat de bronrun afgerond is.Alleen afgeronde runs zijn hermaakbaar.CompletedAtUtc.
8OefenHub backendDuplicatieserviceControleert eigenaar of toegestane inzagecontext.Onbevoegde herhaling wordt geblokkeerd.Eigen run.
9OefenHub backendDuplicatieserviceControleert module- en oefencontext.Hermaakbaarheid wordt bevestigd.Module beschikbaar.
10OefenHub backendDuplicatieserviceLeest bronvraaginhoud en noodzakelijke metadata.Vraagset kan worden gekopieerd.Historische runpayload.
11OefenHub backendDuplicatieserviceBepaalt nieuwe vraagvolgorde.Nieuwe run krijgt dezelfde inhoud met toegestane volgorde.Shuffle of bronvolgorde volgens regel.
12OefenHub backendRunserviceMaakt nieuwe ExerciseRuns-record aan.Nieuwe zelfstandige run ontstaat.Nieuwe run-id.
13OefenHub backendRunserviceVult bronverwijzing.DuplicateOf verwijst naar de bronrun.Auditbare herkomst.
14OefenHub backendRunserviceSlaat nieuwe vraagpayload/voortgangsstructuur op.Nieuwe run is startklaar.Eigen voortgang.
15OefenHub backendDatabaseCommit nieuwe run transactioneel.Geen half aangemaakte duplicate.Transactie.
16OefenHub backendRunserviceRondt de hermaaktransactie af.Nieuwe run is herleidbaar via DuplicateOf.Geen aparte auditlaag.
17OefenHub frontendNavigatieSluit resultaatweergave of routeert naar oefenscherm.Leerling ziet eerste vraag van nieuwe run.UC-LLN-OEF-004 volgt.
18LeerlingOefenschermStart beantwoording van de nieuwe run.Nieuwe voortgang wordt onafhankelijk opgeslagen.Eigen antwoorden en statistieken.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Module is verwijderd of niet uitvoerbaarActie wordt niet getoond of uitgeschakeld.Tooltip/componentmeldingGeen
ALT-0024Leerling dubbelkliktBackend voorkomt dubbele duplicate-runs of behandelt idempotent volgens request.Niet van toepassingMaximaal één geldige run per request
ALT-0035Sessie verlopenRouteguard verwijst naar login.RouteguardafhandelingGeen
ALT-0046Bronrun bestaat nietNieuwe run wordt niet aangemaakt.Niet-beschikbaarmeldingGeen
ALT-0057Bronrun is niet afgerondNieuwe run wordt geblokkeerd.ComponentmeldingGeen
ALT-0068Bronrun hoort niet bij leerlingBackend weigert hermaakactie.Toegang geweigerdGeen
ALT-0079Oefeningcontext is niet meer uitvoerbaarActie wordt geblokkeerd.ComponentmeldingGeen
ALT-00810Vraagpayload is beschadigd of onvolledigNieuwe run wordt niet aangemaakt.ComponentmeldingGeen
ALT-00911Nieuwe volgorde kan niet bepaald wordenSysteem gebruikt bronvolgorde wanneer functioneel toegestaan of blokkeert veilig.Componentmelding bij blokkadeGeen of geldige run
ALT-01012Database faalt bij aanmakenTransactie wordt teruggedraaid.ComponentmeldingGeen blijvende run
ALT-01114Voortgangsstructuur kan niet worden opgeslagenTransactie wordt teruggedraaid.ComponentmeldingGeen gedeeltelijke run
ALT-01217Navigatie naar oefenscherm faaltNieuwe run bestaat; leerling kan via verdergaan of oefeningpagina hervatten wanneer toegestaan.ComponentmeldingNieuwe run blijft bestaan
ALT-0139Actuele leerlingtoegang tot oorspronkelijke oefening is vervallenSysteem bepaalt volgens centrale toegangsregel of historisch opnieuw maken nog mag; bij blokkade ontstaat geen run.ComponentmeldingGeen bij blokkade
ALT-0144Bronrun is ontvangen gedeelde oefeningSpecifieke regels voor gedeelde oefeningen gelden in UC-LLN-DEL-004.Niet van toepassingBuiten deze usecase

9. Business rules

IDRegel
BR-001Alleen afgeronde runs kunnen via Maak deze oefening opnieuw opnieuw worden gemaakt.
BR-002De nieuwe run is altijd een zelfstandige exercise run.
BR-003De bronrun wordt nooit overschreven of aangepast door opnieuw maken.
BR-004De nieuwe run verwijst administratief naar de bronrun via DuplicateOf of equivalente verwijzing.
BR-005De nieuwe run gebruikt dezelfde vraaginhoud als de bronrun.
BR-006De vraagvolgorde mag worden gewijzigd wanneer dit volgens de oefenregels is toegestaan.
BR-007De nieuwe run krijgt eigen voortgang, eigen antwoorden, eigen afrondmoment en eigen statistieken.
BR-008Wanneer de technische module niet meer beschikbaar is, is opnieuw maken niet beschikbaar.
BR-009Opnieuw maken mag geen oude geschiedenis of oude resultaten wijzigen.
BR-010Opnieuw maken mag geen relaties, autorisaties, berichten, meldingen of profielinstellingen wijzigen.
BR-011Opnieuw maken vanuit gedeelde oefeningen gebruikt de regels van het deel-subdomein.
BR-012Een fout tijdens aanmaken mag geen half bruikbare run opleveren.
BR-013Technische identifiers worden niet aan de leerling getoond als functionele uitleg.
BR-014De nieuwe run is vanaf start een normale lopende run binnen oefen- en voortgangsflows.
BR-015Als toegang tot de oefencontext vervallen is, moet server-side worden bepaald of historisch opnieuw maken nog is toegestaan.
BR-016Duplicaatrelaties blijven analyseerbaar in resultaatweergave en geschiedenis.

10. Datavalidatie

Veld / objectValidatie
Bron ExerciseRunIdMoet bestaan, afgerond en toegankelijk zijn.
Bronrun-eigenaarMoet overeenkomen met leerling of expliciet toegestane context.
CompletedAtUtcMoet gevuld zijn voor hermaakbaarheid.
VraagpayloadMoet alle noodzakelijke vraaginhoud bevatten.
OefeningcontextMoet voldoende uitvoerbaar zijn.
ModulecontextMoet beschikbaar zijn voor rendering en antwoordcontrole.
Nieuwe run-idWordt server-side aangemaakt.
DuplicateOfMoet verwijzen naar de bronrun.
VraagvolgordeMag alleen geldige vraagposities bevatten.
Startstatus nieuwe runMoet lopend en niet afgerond zijn.
Transactionele verwerkingNieuwe run en vraagstructuur moeten samen consistent worden opgeslagen.

11. Datamutaties en events

StapTypeEntiteit / gegevensbronMutatie
10ReadBron ExerciseRunsBronvraaginhoud en metadata worden gelezen.
12InsertNieuwe ExerciseRunsNieuwe zelfstandige run wordt aangemaakt.
13Update bij insertNieuwe ExerciseRunsDuplicateOf wordt gevuld met bronrun-id.
14InsertNieuwe voortgang/payloadVraaginhoud en startvoortgang worden opgeslagen.
15CommitDatabaseNieuwe run wordt transactioneel vastgelegd.

De hermaakactie is functioneel herleidbaar via de nieuwe run en de DuplicateOf-verwijzing naar de bronrun. Er wordt geen apart functioneel event verondersteld voor deze usecase.

12. Geen datamutaties

EntiteitReden
Bron ExerciseRunsDe bronrun blijft ongewijzigd.
BronvraagpayloadDe broninhoud wordt gelezen maar niet aangepast.
Oude statistiekveldenOude resultaten blijven historisch.
ExercisesOefeningconfiguratie wordt niet gewijzigd.
ExerciseModulesModulemetadata wordt niet gewijzigd.
UsersAccountgegevens blijven ongewijzigd.
UserSettingsVoorkeuren blijven ongewijzigd.
UserRelationshipsRelaties blijven ongewijzigd.
SystemMessagesEr wordt geen systeembericht aangemaakt.
PrivateMessageThreadsEr wordt geen privébericht aangemaakt.
TicketsEr wordt geen melding aangemaakt.
PDF-bestandPDF-export staat los van opnieuw maken.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Oefening opnieuw maken

16.2 Opnieuw maken geblokkeerd

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingOpnieuw makenBlokkades worden als resultaat-/componentmelding verwerkt, niet als popupregister-popup.

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

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft geschiedenis, filters, resultaatdetail, statistieken, opnieuw maken en PDF-download vanuit leerlingcontext.
Technisch OntwerpTechnisch Ontwerp: oefenruns en resultaten, PDF-export, readmodels en tellers, frontend-resultaatweergave en privacy/retentie 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 resultaten, geschiedenis, statistieken, PDF-export en autorisatie op historische data.
Database-informatieDatabase-informatie blijft bron voor runresultaten, voortgangsrecords, snapshots en exportbrondata; normale PDF-downloads introduceren geen permanente PDF-tabel.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor resultaatweergave, geschiedenis, statistieken en exportrepresentatie.

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-RES-003-001SRS-LRN-009
AC-LRN-009
Een afgeronde eigen exercise run opnieuw kunnen laten maken wanneer de run hermaakbaar is
REQ-UC-LLN-RES-003-002SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
De bronrun server-side valideren op bestaan, afronding en toegang
REQ-UC-LLN-RES-003-003SRS-AUTH-001
SRS-LRN-009
SRS-MOD-003
AC-AUTH-001
AC-LRN-009
AC-MOD-003
De actie blokkeren wanneer de technische module of brondata niet uitvoerbaar is
REQ-UC-LLN-RES-003-004SRS-LRN-009
AC-LRN-009
Bij opnieuw maken een nieuwe zelfstandige exercise run aanmaken
REQ-UC-LLN-RES-003-005SRS-LRN-009
AC-LRN-009
De nieuwe run laten verwijzen naar de bronrun via DuplicateOf of gelijkwaardige verwijzing
REQ-UC-LLN-RES-003-006SRS-LRN-009
AC-LRN-009
Dezelfde vraaginhoud gebruiken als de bronrun
REQ-UC-LLN-RES-003-007SRS-LRN-009
AC-LRN-009
De vraagvolgorde wijzigen wanneer dit functioneel toegestaan is
REQ-UC-LLN-RES-003-008SRS-LRN-009
AC-LRN-009
De bronrun en bronresultaten niet wijzigen
REQ-UC-LLN-RES-003-009SRS-LRN-003
AC-LRN-003
De nieuwe run eigen voortgang, antwoorden en statistieken laten hebben
REQ-UC-LLN-RES-003-010SRS-LRN-009
AC-LRN-009
De leerling na succesvolle aanmaak naar het oefenscherm van de nieuwe run leiden
REQ-UC-LLN-RES-003-011SRS-LRN-009
AC-LRN-009
Voorkomen dat een fout leidt tot een half aangemaakte duplicate run
REQ-UC-LLN-RES-003-012SRS-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 opnieuw maken geen relaties, autorisaties, berichten, meldingen of profielinstellingen wijzigen