Skip to main content

UC-DOC-OEF-004 - Oefening configureren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-OEF-004
NaamOefening configureren
DomeinDocent
SubdomeinOefeningen configureren en testen
Primaire actorDocent
Secundaire actor(en)Systeem, technische module-interface
RolcontextDocentcontext met bewerkrechten binnen het geselecteerde niveau
Betrokken schermenDocent - Nieuwe oefening, moduleconfiguratie, oefeningconfiguratieformulier
Gerelateerde usecasesUC-DOC-OEF-002, UC-DOC-OEF-003, UC-DOC-OEF-005, UC-DOC-OEF-006, UC-DOC-OEF-008
Primaire entiteitenExercises, ExerciseModules, LevelCategories, Categories
Secundaire entiteiten / eventsModuleConfigurationJsonBase64, ExerciseHistory, LevelCollaborators, module-specifieke configuratie-DTO
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een docent na selectie van een technische module de nieuwe concrete oefening configureert. De docent vult generieke oefeninggegevens in, zoals naam en icoon, en daarnaast de module-specifieke configuratievelden die door de gekozen technische module worden aangeboden.

De technische module levert de configuratiecomponent en de lokale modulevalidatie. OefenHub blijft verantwoordelijk voor de generieke contextcontrole, centrale opslag, auditregistratie en de status van de concrete oefening.

Bij succesvolle opslag ontstaat een nieuw Exercises-record met een verwijzing naar precies één ExerciseModules-record. De nieuwe oefening staat standaard In onderhoud, zodat de oefening niet direct zichtbaar of startbaar wordt voor leerlingen voordat de docent deze bewust activeert.

3. Scope

3.1 Binnen scope

  • Openen van de modulespecifieke configuratie na geldige modulekeuze.
  • Invullen van generieke oefeninggegevens zoals naam en icoon.
  • Invullen van module-specifieke configuratievelden.
  • Uitvoeren van generieke en modulespecifieke validatie.
  • Opslaan van een nieuw Exercises-record.
  • Opslaan van de moduleconfiguratie als JSON/base64-payload.
  • Vastleggen van aanmaak en configuratie in ExerciseHistory.
  • Standaard plaatsen van de nieuwe oefening in status In onderhoud.
  • Veilig afhandelen van annuleren, validatiefouten en verouderde context.

3.2 Buiten scope

  • Technische module selecteren.
  • Bestaande oefening bewerken.
  • Oefening activeren voor leerlingen.
  • Oefening testen als docent.
  • Modulemigratie of wijziging van ExerciseModules.
  • Technische modules centraal beheren of migreren.
  • Leerlingresultaten bekijken of wijzigen.
  • Niveau-autorisaties aan leerlingen toekennen of intrekken.
  • Relatie-uitnodigingen, docent-leerlingrelaties of docent-docentrelaties aanmaken.
  • Account-, profiel- of toegankelijkheidsinstellingen wijzigen.
  • Systeemnotificaties beheren of tonen.
  • Beheerderondersteuning of centrale modulebeheerflows uitvoeren.

4. Pre-condities

IDVoorwaarde
PRE-001De docent is ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003Er is een geldige docentcontext bepaald.
PRE-004Er is een geldig niveau geselecteerd.
PRE-005De docent is eigenaar van het niveau of actieve collaborator met passende bewerkrechten.
PRE-006Er is een categoriecontext beschikbaar binnen het geselecteerde niveau.
PRE-007De nieuwe-oefening-flow is geldig gestart.
PRE-008Er is precies één technische module geselecteerd.
PRE-009De gekozen technische module is nog actief en selecteerbaar.
PRE-010De module-interface kan een configuratiecomponent en validatie aanbieden.
PRE-011De docent heeft bewerkrechten binnen het niveau en de categoriecontext.

5. Post-condities

IDResultaat
POST-001Er is een nieuwe concrete oefening opgeslagen wanneer alle validatie slaagt.
POST-002De oefening verwijst naar precies één ExerciseModules-record.
POST-003De moduleconfiguratie is opgeslagen als JSON/base64-payload.
POST-004De nieuwe oefening staat standaard In onderhoud, oftewel IsActive = false.
POST-005Aanmaak en configuratie zijn auditbaar vastgelegd in ExerciseHistory.
POST-006Leerlingen zien of starten de oefening nog niet zolang deze In onderhoud staat.
POST-007Bij annuleren of validatiefout is geen half bruikbare oefening ontstaan.

6. Trigger

De docent heeft in UC-DOC-OEF-003 een technische module gekozen en gaat verder naar de configuratie van de nieuwe oefening.

De docent kiest Opslaan nadat de generieke en modulespecifieke configuratievelden zijn ingevuld.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1SysteemConfiguratieflowLaadt aanmaakcontextContext wordt opnieuw server-side gecontroleerdLevelId, CategoryId, ExerciseModuleId
2SysteemBackendControleert docentrol en bewerkrechtenAlleen bevoegde docent mag configurerenUserRoles, LevelCollaborators
3SysteemBackendControleert modulekeuzeModule moet nog actief en selecteerbaar zijnExerciseModules.IsActive
4SysteemModule-interfaceVraagt configuratiecomponent opModule levert invoervelden en lokale validatiecontextGetModuleConfigureComponent
5DocentConfiguratieformulierVult naam, icoon en configuratie inFrontend bewaart invoer tijdelijkNaam, IconKey, modulevelden
6DocentConfiguratieformulierKiest OpslaanFrontend verstuurt generieke en module-specifieke invoerFormulierdata
7SysteemBackendValideert generieke gegevensNaam, icoon, context en rechten worden gecontroleerdGenerieke validatie
8SysteemModule-interfaceValideert moduleconfiguratieModule geeft geldige configuratie-DTO of fout terugModulespecifieke validatie
9SysteemBackendSerialiseert configuratieConfiguratie wordt veilig opgeslagen als JSON/base64ModuleConfigurationJsonBase64
10SysteemDatabaseMaakt oefening aanExercises-record ontstaat met IsActive = falseExercises
11SysteemDatabaseLegt historie vastAanmaak en configuratie worden auditbaarExerciseHistory CREATE
12SysteemFrontendToont resultaatDocent keert terug naar oefeningoverzicht of detailNieuwe oefening In onderhoud

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Aanmaakcontext ontbreekt of is verlopenLeid terug naar oefeningoverzicht of modulekeuzeRouteguardGeen
ALT-0022Docent heeft geen bewerkrechten meerBlokkeer opslagToegangafhandelingGeen
ALT-0033Module is intussen inactief gemaaktBlokkeer opslag en toon dat de module niet meer beschikbaar isInline meldingGeen
ALT-0044Configuratiecomponent kan niet worden geladenBlokkeer configuratie en log technischGenerieke foutafhandelingGeen
ALT-0056Docent annuleert vóór opslagKeer terug zonder oefening aan te makenGeen popupGeen
ALT-0067Generieke validatie faaltToon veldgerichte validatieInline validatieGeen
ALT-0078Modulespecifieke validatie faaltToon modulevalidatie bij de relevante veldenInline validatieGeen
ALT-00810Opslag faalt transactioneelRollback; geen half bruikbare oefeningGenerieke foutafhandelingGeen blijvende mutatie
ALT-00911Historie kan niet worden vastgelegdOpslag wordt niet als succesvol beschouwd wanneer audit vereist isGenerieke foutafhandelingRollback

9. Business rules

IDRegel
BR-001Een concrete oefening kan pas ontstaan na geldige modulekeuze en geldige configuratie.
BR-002Een concrete oefening verwijst naar precies één ExerciseModules-record.
BR-003De module-specifieke configuratie wordt generiek opgeslagen als JSON/base64-payload.
BR-004De module is verantwoordelijk voor module-specifieke invoer en lokale validatie.
BR-005OefenHub is verantwoordelijk voor contextcontrole, opslag en audit.
BR-006Nieuwe oefeningen krijgen standaard IsActive = false.
BR-007Een oefening In onderhoud is niet zichtbaar of startbaar voor leerlingen.
BR-008Naam en icoon horen bij de concrete docent-oefening en zijn geen centrale module-eigenschappen.
BR-009Opslaan moet transactioneel zijn; er mag geen half bruikbare oefening ontstaan.
BR-010Aanmaak en configuratie moeten auditbaar zijn via ExerciseHistory.
BR-011Configureren wijzigt geen leerlingautorisaties.
BR-012Configureren maakt geen systeembericht of privébericht aan.

10. Datavalidatie

Veld / objectValidatie
LevelIdMoet bestaan en toegankelijk zijn voor de docentcontext.
CategoryIdMoet actief gekoppeld zijn aan het geselecteerde niveau.
ExerciseModuleIdMoet verwijzen naar een actieve en selecteerbare technische module.
NameVerplicht, niet leeg en passend binnen de later vastgestelde lengtebegrenzing.
IconKeyMoet verwijzen naar een toegestane oefeningicoonkeuze.
ModuleConfigurationJsonBase64Moet voortkomen uit een door de module gevalideerde configuratie-DTO.
IsActiveWordt bij nieuwe oefening standaard false gezet.
CreatedByUserIdKomt uit de server-side docentcontext.
CreatedAtUtcWordt server-side in UTC gezet.
ExerciseHistory.ActionTypeBevat minimaal CREATE en waar relevant UPDATE_CONFIGURATION.
ClientstateMag geen autorisatie of modulebeschikbaarheid bepalen.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1ReadLevels / LevelCategoriesAanmaakcontext wordt gelezen en gecontroleerd.
2ReadUserRoles / LevelCollaboratorsDocentrechten worden gecontroleerd.
3ReadExerciseModulesModulebeschikbaarheid wordt opnieuw gevalideerd.
8ReadModule-interfaceModulespecifieke validatie wordt uitgevoerd.
9TransformModuleConfigurationJsonBase64Configuratie-DTO wordt opgeslagen als JSON/base64.
10CreateExercisesNieuwe oefening wordt aangemaakt met IsActive = false.
11CreateExerciseHistoryAanmaak en configuratie worden auditbaar vastgelegd.
12EventExerciseConfiguredDomeinevent voor readmodelverversing en auditafleiding.

12. Geen datamutaties

EntiteitReden
LevelCategoriesDe categoriecontext wordt niet gewijzigd.
CategoriesCentrale categorie-identiteit wordt niet gewijzigd.
LevelsNiveaugegevens blijven ongewijzigd.
StudentAuthorizationsDeze usecase wijzigt geen leerlingtoegang.
ExerciseRunsDeze usecase start of wijzigt geen leerlingrun.
ExerciseRunProgressEr wordt geen leerlingvoortgang aangepast.
SystemMessagesEr worden geen systeemberichten aangemaakt.
PrivateMessagesEr worden geen privéberichten aangemaakt.
RelationshipInvitationsRelatievorming blijft buiten scope.
ExerciseModulesTechnische modules worden alleen gelezen, niet gewijzigd.

13. State diagram

Voor de concrete oefening ontstaat bij opslag de eerste status: In onderhoud. Dit is functioneel gelijk aan IsActive = false.

De usecase bevat daarom een beperkt state diagram voor de oefeningstatus vanaf aanmaak. De activering zelf hoort bij UC- DOC-OEF-006.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Nieuwe oefening configureren

16.2 Validatie faalt

16.3 Transactionele opslag faalt

17. Popupverwijzingen

PopupKeyMomentToelichting
Niet van toepassingDeze usecase gebruikt geen domeinspecifieke popup.Routeguard-, inline validatie- of componentafhandeling volstaat.

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

DoeldocumentAfleiding
Functioneel OntwerpEen docent configureert een concrete oefening binnen niveau en categorie.
Functioneel OntwerpNieuwe oefening is standaard In onderhoud.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Module-specifieke configuratie en validatie komen uit de technische module.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Opslag van configuratie gebeurt generiek als JSON/base64.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Aanmaak en configuratie worden auditbaar via ExerciseHistory.
Software Requirements SpecificationHet systeem moet half opgeslagen oefeningen voorkomen.
DatabaseExercises bevat moduleverwijzing, configuratiepayload, IsActive en auditvelden.
OefenmodulesModuleplatform en contract beschrijft het generieke modulecontract; Optellen & Aftrekken (simpel) is de eerste concrete module-uitwerking voor configuratie, states en payloads.

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-DOC-OEF-004-001SRS-AUTH-001
SRS-LRN-009
SRS-TCH-002
AC-AUTH-001
AC-LRN-009
AC-TCH-002
Alleen bevoegde docenten toestaan een oefening te configureren
REQ-UC-DOC-OEF-004-002SRS-AUTH-001
SRS-CAT-001
SRS-TCH-002
SRS-MOD-003
AC-AUTH-001
AC-CAT-001
AC-TCH-002
AC-MOD-003
De niveau-, categorie- en modulecontext server-side valideren
REQ-UC-DOC-OEF-004-003SRS-LRN-009
SRS-TCH-002
SRS-NFR-AUD-001
AC-LRN-009
AC-TCH-002
AC-NFR-AUD-001
Generieke oefeninggegevens kunnen vastleggen
REQ-UC-DOC-OEF-004-004SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
Module-specifieke configuratie via de gekozen technische module laten valideren
REQ-UC-DOC-OEF-004-005SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
De moduleconfiguratie als JSON/base64-payload opslaan
REQ-UC-DOC-OEF-004-006SRS-LRN-009
SRS-TCH-002
AC-LRN-009
AC-TCH-002
Een nieuwe oefening standaard met IsActive = false opslaan
REQ-UC-DOC-OEF-004-007SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
Aanmaak en configuratie in ExerciseHistory vastleggen
REQ-UC-DOC-OEF-004-008SRS-LRN-009
SRS-TCH-002
SRS-NFR-AVL-001
AC-LRN-009
AC-TCH-002
AC-NFR-AVL-001
Voorkomen dat annuleren of foutafhandeling half bruikbare oefeningen oplevert
REQ-UC-DOC-OEF-004-009SRS-AUTH-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-LRN-009
AC-TCH-001
Door configureren geen leerlingautorisaties wijzigen
REQ-UC-DOC-OEF-004-010SRS-MSG-001
SRS-TCH-001
SRS-POP-002
AC-MSG-001
AC-TCH-001
AC-POP-002
Door configureren geen berichten of systeemnotificaties aanmaken
REQ-UC-DOC-OEF-004-011SRS-AUTH-001
SRS-TCH-001
SRS-MOD-003
AC-AUTH-001
AC-TCH-001
AC-MOD-003
Een niet meer beschikbare module bij opslag opnieuw blokkeren
REQ-UC-DOC-OEF-004-012SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
Veld- en modulevalidatiefouten zonder datamutatie tonen