Skip to main content

UC-DOC-OEF-005 - Oefening bewerken

1. Kerngegevens

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

2. Omschrijving

Deze usecase beschrijft hoe een docent een bestaande concrete oefening binnen de eigen docentcontext bewerkt. Het gaat om gegevens die bij de concrete oefening horen, zoals naam, icoon en de module-specifieke configuratiepayload.

De technische module zelf wordt niet gewijzigd en de oefening wordt niet naar een andere module gemigreerd. Een oefening blijft verwijzen naar hetzelfde ExerciseModules-record; modulemigratie is een beheerderflow.

Bewerken is auditgevoelig omdat wijzigingen invloed kunnen hebben op toekomstige leerlingruns. Historische runs blijven echter herleidbaar op basis van hun opgeslagen runcontext en worden niet inhoudelijk herschreven.

3. Scope

3.1 Binnen scope

  • Openen van een bestaande oefening in bewerkmodus.
  • Controleren van docentrol, niveaucontext en bewerkrechten.
  • Laden van bestaande generieke oefeninggegevens.
  • Laden van modulespecifieke bewerkconfiguratie via de technische module.
  • Wijzigen van naam, icoon en moduleconfiguratie voor toekomstige runs.
  • Uitvoeren van generieke en modulespecifieke validatie.
  • Opslaan van gewijzigde oefeninggegevens.
  • Auditbaar vastleggen van gewijzigde velden in ExerciseHistory.
  • Behouden van historische runs zonder herschrijven.

3.2 Buiten scope

  • Nieuwe oefening aanmaken.
  • Oefening naar een andere technische module migreren.
  • Oefening activeren of in onderhoud zetten.
  • Bestaande leerlingruns, resultaten of geschiedenis herschrijven.
  • Centrale categorie-identiteit wijzigen.
  • 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 bestaande oefening bestaat.
PRE-008De oefening hoort bij de geselecteerde categorie- en niveaucontext.
PRE-009De docent heeft bewerkrechten voor de oefeningcontext.
PRE-010De gekoppelde technische module is voldoende beschikbaar om de bewerkconfiguratie te laden of er is een veilige blokkade mogelijk.
PRE-011De actuele configuratiepayload kan worden gelezen.

5. Post-condities

IDResultaat
POST-001De oefening is gewijzigd wanneer alle validatie slaagt.
POST-002Alleen de toegestane concrete oefeninggegevens zijn aangepast.
POST-003De oefening blijft gekoppeld aan hetzelfde ExerciseModules-record.
POST-004Wijzigingen zijn auditbaar vastgelegd in ExerciseHistory.
POST-005Historische exercise runs en resultaten zijn niet herschreven.
POST-006Leerlingzichtbaarheid volgt nog steeds uit IsActive en de bestaande toegangregels.
POST-007Bij annuleren of validatiefout blijven bestaande waarden ongewijzigd.

6. Trigger

De docent kiest vanuit het oefeningoverzicht of oefeningdetail voor Bewerken.

De docent kiest Opslaan nadat generieke of module-specifieke wijzigingen zijn aangebracht.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentOefeningoverzichtKiest BewerkenFrontend opent bewerkrouteExerciseId
2SysteemBackendControleert docentrol en contextAlleen bevoegde docent mag verderUserRoles, Levels
3SysteemBackendControleert oefeningcontextOefening moet bij niveau en categorie horenExercises, LevelCategories
4SysteemBackendControleert bewerkrechtenEigenaar of collaborator met bewerkrechten mag verderLevelCollaborators
5SysteemBackendLaadt oefeninggegevensNaam, icoon, status en moduleverwijzing worden gelezenExercises
6SysteemModule-interfaceLaadt bewerkcomponentModule vertaalt bestaande payload naar bewerkcontextGetModuleEditConfigureComponent
7DocentBewerkformulierWijzigt toegestane veldenFrontend toont gewijzigde waardenName, IconKey, modulevelden
8DocentBewerkformulierKiest OpslaanFrontend verstuurt wijzigingenFormulierdata
9SysteemBackendValideert generieke veldenNaam, icoon en context worden gecontroleerdGenerieke validatie
10SysteemModule-interfaceValideert moduleconfiguratieModule geeft geldige payload of fouten terugModulevalidatie
11SysteemBackendBepaalt verschillenOude en nieuwe waarden worden vastgesteldDiff voor historie
12SysteemDatabaseSlaat wijzigingen opExercises wordt bijgewerktUpdatedByUserId, UpdatedAtUtc
13SysteemDatabaseLegt historie vastPer relevante wijziging ontstaat historieExerciseHistory
14SysteemFrontendToont bijgewerkte oefeningDocent ziet opgeslagen wijzigingenReadmodel ververst

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Geen actieve docentrolBlokkeer bewerkrouteRouteguardGeen
ALT-0023Oefening bestaat niet of hoort niet bij contextToon niet-beschikbaarafhandelingInline meldingGeen
ALT-0034Geen bewerkrechtenOpen eventueel read-only of blokkeerToegangafhandelingGeen
ALT-0046Module-interface kan bestaande payload niet ladenBlokkeer bewerking en log technischGenerieke foutafhandelingGeen
ALT-0057Docent wijzigt nietsOpslaan is niet nodig of wordt zonder mutatie genegeerdGeen popupGeen
ALT-0069Generieke validatie faaltToon veldgerichte validatieInline validatieGeen
ALT-00710Modulevalidatie faaltToon modulespecifieke validatiefoutenInline validatieGeen
ALT-00812Gelijktijdige wijziging gedetecteerdLaat docent opnieuw laden of bevestigen volgens latere concurrencykeuzeInline meldingGeen of rollback
ALT-00913Historie kan niet worden vastgelegdWijziging wordt niet als succesvol beschouwd wanneer audit vereist isGenerieke foutafhandelingRollback
ALT-01014Oefening is actief tijdens bewerkingWijziging geldt voor toekomstige runs; bestaande runs blijven intactGeen popupExercises bijgewerkt

9. Business rules

IDRegel
BR-001Alleen bevoegde docenten mogen een concrete oefening bewerken.
BR-002Een docent bewerkt concrete oefeninggegevens, geen centrale modulegegevens.
BR-003Een bestaande oefening wordt niet via deze usecase naar een andere module gemigreerd.
BR-004De module-specifieke configuratie blijft eigendom van de modulevalidatie, maar opslag is generiek.
BR-005Wijzigingen aan naam, icoon en configuratie worden auditbaar vastgelegd.
BR-006Historische exercise runs worden niet herschreven door oefeningbewerking.
BR-007PDF-export en geschiedenis gebruiken historische runcontext waar van toepassing.
BR-008Bewerken van een actieve oefening heeft effect op toekomstige nieuwe runs, niet op afgeronde runs.
BR-009Clientstate mag niet bepalen welke oefening bewerkt mag worden.
BR-010Een wijziging zonder effectieve verschillen hoeft geen ExerciseHistory-regel op te leveren.
BR-011Wanneer auditregistratie verplicht is, hoort opslag en historie in één transactie.
BR-012Bewerken verandert niet automatisch de IsActive-status.

10. Datavalidatie

Veld / objectValidatie
ExerciseIdMoet bestaan en binnen de toegankelijke docentcontext vallen.
LevelId / CategoryIdMoeten overeenkomen met de oefeningcontext.
NameVerplicht wanneer gewijzigd en passend binnen lengtebegrenzing.
IconKeyMoet verwijzen naar een toegestane oefeningicoonkeuze.
ExerciseModuleIdBlijft ongewijzigd in deze usecase.
ModuleConfigurationJsonBase64Moet door de technische module valideerbaar zijn.
UpdatedByUserIdKomt uit server-side docentcontext.
UpdatedAtUtcWordt server-side in UTC gezet.
ExerciseHistory.OldValue / NewValueMoet relevante oude en nieuwe waarde per wijziging bevatten.
ConcurrencyMoet veilig omgaan met gelijktijdige wijzigingen of verouderde formulieren.
IsActiveWordt alleen gelezen; statuswijziging hoort bij UC-DOC-OEF-006.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
2ReadUserRoles / LevelCollaboratorsDocentrechten worden gecontroleerd.
3ReadExercises / LevelCategoriesOefeningcontext wordt gevalideerd.
6ReadModule-interfaceBewerkcomponent en DTO worden geladen.
10ReadModule-interfaceModulespecifieke validatie wordt uitgevoerd.
11TransformDiffOude en nieuwe waarden worden vastgesteld.
12UpdateExercisesNaam, icoon, configuratiepayload en auditvelden worden bijgewerkt.
13CreateExerciseHistoryWijzigingen worden auditbaar vastgelegd.
14EventExerciseUpdatedDomeinevent voor readmodelverversing en auditafleiding.

12. Geen datamutaties

EntiteitReden
ExerciseModulesDe modulekoppeling wordt niet gewijzigd.
ExerciseRunsBestaande runs blijven intact.
ResultaatstatistiekenHistorische statistieken worden niet herberekend.
LevelCategoriesDe categoriecontext blijft ongewijzigd.
StudentAuthorizationsDeze usecase wijzigt geen leerlingtoegang.
ExerciseRunProgressEr wordt geen leerlingvoortgang aangepast.
SystemMessagesEr worden geen systeemberichten aangemaakt.
PrivateMessagesEr worden geen privéberichten aangemaakt.
RelationshipInvitationsRelatievorming blijft buiten scope.

13. State diagram

Deze usecase wijzigt de inhoudelijke configuratie van een oefening, maar niet de status Actief/In onderhoud. De status blijft bestaan en wordt alleen via UC-DOC-OEF-006 gewijzigd.

Wanneer de oefening actief was, blijft zij actief tenzij de docent via de aparte statusflow kiest voor In onderhoud.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Oefening bewerken

16.2 Geen bewerkrechten

16.3 Historische runs blijven intact

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 OntwerpDocent kan concrete oefeninggegevens en configuratie wijzigen binnen eigen context.
Functioneel OntwerpModulewisseling is geen docentbewerkactie maar beheerdermigratie.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Bewerkconfiguratie gebruikt GetModuleEditConfigureComponent.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Oude en nieuwe waarden worden in ExerciseHistory vastgelegd.
Software Requirements SpecificationHistorische runs mogen niet worden herschreven door oefeningbewerking.
DatabaseExercises wordt bijgewerkt; ExerciseHistory registreert wijzigingen.

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-005-001SRS-LRN-009
SRS-TCH-002
AC-LRN-009
AC-TCH-002
Bestaande oefeningen alleen in geldige docentcontext bewerkbaar maken
REQ-UC-DOC-OEF-005-002SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Bewerkrechten server-side controleren
REQ-UC-DOC-OEF-005-003SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
De bestaande moduleconfiguratie via de technische module kunnen openen
REQ-UC-DOC-OEF-005-004SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
Generieke en modulespecifieke validatie uitvoeren vóór opslag
REQ-UC-DOC-OEF-005-005SRS-TCH-001
SRS-MOD-003
AC-TCH-001
AC-MOD-003
De ExerciseModuleId ongewijzigd laten bij gewone docentbewerking
REQ-UC-DOC-OEF-005-006SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
Wijzigingen aan naam, icoon en configuratie auditbaar vastleggen
REQ-UC-DOC-OEF-005-007SRS-TCH-001
AC-TCH-001
Oude en nieuwe waarden of herleidbare verschillen registreren waar dat functioneel relevant is
REQ-UC-DOC-OEF-005-008SRS-LRN-009
SRS-TCH-001
AC-LRN-009
AC-TCH-001
Historische exercise runs en resultaten intact laten
REQ-UC-DOC-OEF-005-009SRS-TCH-001
AC-TCH-001
Statuswijzigingen gescheiden houden van inhoudelijke bewerking
REQ-UC-DOC-OEF-005-010SRS-TCH-001
SRS-GUA-001
SRS-NFR-SEC-001
AC-TCH-001
AC-GUA-001
AC-NFR-SEC-001
Gelijktijdige of verouderde bewerkingen veilig afhandelen
REQ-UC-DOC-OEF-005-011SRS-AUTH-001
SRS-MSG-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-MSG-001
AC-LRN-009
AC-TCH-001
Door bewerken geen leerlingautorisaties of berichten wijzigen
REQ-UC-DOC-OEF-005-012SRS-AUTH-001
SRS-TCH-001
SRS-MOD-003
SRS-NFR-SEC-001
AC-AUTH-001
AC-TCH-001
AC-MOD-003
AC-NFR-SEC-001
Module-editorfouten veilig blokkeren zonder corrupte opslag