Skip to main content

UC-BEH-MOD-003 — Modulegegevens wijzigen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-MOD-003
NaamModulegegevens wijzigen
DomeinBeheerder / Modules beheren
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, modulebeheercomponent, historiecomponent, strategy-interface
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenContent > Modules beheren
Gerelateerde usecasesUC-BEH-MOD-001, UC-BEH-MOD-002, UC-BEH-MOD-004, UC-BEH-MOD-005, UC-BEH-MOD-006, UC-BEH-MOD-007, UC-BEH-MOD-008, UC-BEH-MOD-009, UC-BEH-MOD-010
Primaire entiteitenExerciseModules, Exercises, ExerciseHistory, ExerciseModuleMigrations, ExerciseRuns, Users
Secundaire entiteiten / eventsTeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, UserRoles, modulebeheer-readmodels, strategy-interface
Gerelateerde popupsPOP-BEH-MOD-UPDATE-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een beheerder beheerbare modulegegevens wijzigt in de sectie Module van de detailweergave.

De beheerbare gegevens zijn beperkt. DisplayName mag als leesbare naam worden gewijzigd. CodeReference blijft read-only omdat deze de strategy-interface naar code raakt. Version is read-only of technisch beheerd en wordt niet als vrije inhoudelijke tekst van een concrete oefening behandeld.

Elke inhoudelijke wijziging vereist bevestiging met verplichte reden en wordt auditbaar vastgelegd op modulebeheer- of beheerauditniveau. De wijziging verandert geen concrete oefeningconfiguratiepayloads.

Uitgangspunten

  • Technische modules worden administratief beheerd in ExerciseModules en niet runtime ontdekt uit assemblies of codepaden.
  • Een concrete oefening verwijst altijd naar precies één ExerciseModules-record.
  • Modulebeheer wijzigt centrale modulemetadata en onderhoudsacties, niet de inhoudelijke docentconfiguratie van oefeningen.
  • Historische runs behouden hun oorspronkelijke modulecontext.
  • Popupinhoud blijft bronhoudend in het centrale popupregister.

3. Scope

Deze usecase beschrijft:

  • Wijzigen van DisplayName van de technische module.
  • Tonen van CodeReference als read-only technische referentie.
  • Tonen van Version als read-only of technisch beheerde versiereferentie.
  • Bevestigen van wijzigingen met verplichte reden.
  • Vastleggen van actor, tijdstip, oude waarde en nieuwe waarde.
  • Afhandelen van conflicten en ongeldige invoer.

Deze usecase beschrijft niet:

  • Concrete docent-oefeningen configureren of de modulespecifieke configuratiepayload bewerken; dat blijft bronhoudend in docentflows of docentondersteuning.
  • Leerlingruns, resultaten, geschiedenis of gedeelde oefeningen herschrijven; historische runs behouden hun oorspronkelijke modulecontext.
  • Nieuwe technische modulecode leveren of implementeren; modulecode blijft onderdeel van de technische codebase.
  • Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
  • CodeReference vrij wijzigen via de GUI.
  • Version als vrije contenttekst wijzigen wanneer deze technisch beheerd is.
  • Module actief of inactief maken; dit hoort bij UC-BEH-MOD-004.
  • Test-zichtbaarheid wijzigen; dit hoort bij UC-BEH-MOD-005.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Docent / Oefeningen configurerenDocenten kiezen en configureren concrete oefeningen op basis van beschikbare modules; centrale technische module-identiteit wordt hier beheerd.
Beheerder / DocentondersteuningSupport kan concrete docentstructuren en oefeningen inspecteren, maar centrale modulemetadata en migraties worden hier beheerd.
Leerling / Oefenen en resultatenLeerlingruns blijven historische uitvoeringen en worden niet herschreven door modulebeheer.
Database-informatieExerciseModules, ExerciseModuleMigrations en ExerciseHistory dragen de technische module-identiteit, migratieaudit en oefeninghistorie.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd in OefenHub.
PRE-002De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft.
PRE-003De beheerder bevindt zich binnen de beheeromgeving via Content > Modules beheren.
PRE-004De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie of module-identiteit.
PRE-005De beheerder heeft de detailweergave van één module geopend.
PRE-006De sectie Module is zichtbaar.
PRE-007De actuele modulemetadata is geladen.

5. Post-condities

IDResultaat
POST-001DisplayName is gewijzigd wanneer alle validaties slagen.
POST-002UpdatedByUserId en UpdatedAtUtc zijn bijgewerkt.
POST-003De wijziging is auditbaar vastgelegd met oude en nieuwe waarde en reden.
POST-004CodeReference en Version zijn niet door deze GUI-flow gewijzigd.
POST-005Concrete oefeningen, payloads, runs en modulemigraties blijven ongewijzigd.

6. Trigger

De usecase start wanneer de beheerder in de sectie Module een beheerbaar veld aanpast en Opslaan kiest.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderSectie ModuleWijzigt DisplayName.De frontend markeert de wijziging als nog niet opgeslagen.DisplayName.
2FrontendSectie ModuleToont CodeReference en Version als read-only.De beheerder kan deze velden niet vrij wijzigen.CodeReference, Version.
3BeheerderSectie ModuleKiest Opslaan.De frontend vraagt bevestiging met reden.PopupKey POP-BEH-MOD-UPDATE-CONFIRM.
4BeheerderBevestigingspopupBevestigt met reden.De backend verwerkt de wijziging.Reason verplicht.
5BackendAutorisatiecomponentControleert beheerdercontext opnieuw.Clientstate is niet leidend.Server-side autorisatie.
6BackendModuleServiceValideert DisplayName.Naam moet verplicht, uniek genoeg en binnen lengtegrenzen zijn.ExerciseModules.DisplayName.
7BackendModuleServicePast ExerciseModules aan.UpdatedByUserId en UpdatedAtUtc worden gezet.ExerciseModules.
8BackendHistoriecomponentRegistreert de wijziging.Oude en nieuwe waarde, actor, tijdstip en reden worden vastgelegd.Beheeraudit / modulehistory.
9FrontendSectie ModuleToont de bijgewerkte modulegegevens.De detailtitel wordt bijgewerkt.Actueel readmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Beheerder annuleert.De wijziging wordt niet opgeslagen en de oude waarde blijft leidend.POP-BEH-MOD-UPDATE-CONFIRM.Geen.
ALT-0024Reden ontbreekt.De bevestiging wordt geweigerd.POP-BEH-MOD-UPDATE-CONFIRM.Geen.
ALT-0035Gebruiker is geen beheerder meer.De backend weigert de wijziging.Niet van toepassing.Geen.
ALT-0046DisplayName is leeg of te lang.Opslaan wordt geweigerd met veldfout.Niet van toepassing.Geen.
ALT-0056DisplayName conflicteert functioneel met een andere moduleversie.Opslaan wordt geweigerd of vraagt expliciete correctie volgens uniciteitsregel.Niet van toepassing.Geen.
ALT-0067Module is intussen gewijzigd.De backend detecteert conflict en vraagt herladen vóór opslaan.Niet van toepassing.Geen.

9. Business rules

IDBusiness rule
BR-001DisplayName is de leesbare module-identiteit voor beheer- en selectielijsten.
BR-002CodeReference is een technische strategy-sleutel en blijft read-only in deze flow.
BR-003Version is read-only of technisch beheerd en wordt niet als vrij contentveld behandeld.
BR-004Wijziging van DisplayName verandert geen ExerciseModuleId van bestaande oefeningen.
BR-005Wijziging van modulemetadata herschrijft geen historische ExerciseRuns.
BR-006Iedere inhoudelijke modulewijziging vereist een verplichte reden.
BR-007Oude en nieuwe waarde moeten auditbaar blijven.

10. Datavalidatie

IDValidatie
VAL-001DisplayName is verplicht.
VAL-002DisplayName is maximaal 150 tekens.
VAL-003DisplayName mag geen uitsluitend witruimte bevatten.
VAL-004CodeReference uit clientpayload wordt genegeerd of geweigerd wanneer het als wijziging wordt aangeboden.
VAL-005Version uit clientpayload wordt geweigerd wanneer dit veld niet als technisch wijzigbaar is gemarkeerd.
VAL-006Reason is verplicht en maximaal 500 tekens.
VAL-007De module moet bij opslaan nog bestaan en niet gelijktijdig conflicterend gewijzigd zijn.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Update ExerciseModulesDisplayName, UpdatedByUserId en UpdatedAtUtc worden bijgewerkt.
MUT-002Beheeraudit / modulehistoryWijziging wordt vastgelegd met veldnaam, oude waarde, nieuwe waarde, actor, tijdstip en reden.

12. Geen datamutaties

IDGeen mutatieReden
NO-001CodeReferenceWordt niet via deze GUI-flow gewijzigd.
NO-002VersionWordt niet als vrije tekst gewijzigd.
NO-003ExercisesExerciseModuleId en configuratiepayloads blijven ongewijzigd.
NO-004ExerciseRunsHistorische runcontext blijft ongewijzigd.
NO-005ExerciseModuleMigrationsMetadatawijziging maakt geen migratie aan.

13. State diagram

Niet van toepassing. Deze usecase wijzigt modulemetadata, maar introduceert geen zelfstandig statusobject. De toegestane route wordt uitgewerkt in de decision flow en de data lifecycle.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-BEH-MOD-UPDATE-CONFIRMBevestiging van modulemetadatawijziging met verplichte reden.

De popupinhoud, knopteksten, inputlabels en themakeuze blijven bronhoudend in het popupregister en popup-themes.

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

DocumentAfleiding
Functioneel OntwerpModulegegevensbeheer is beperkt tot beheerbare metadata en houdt technische referenties gescheiden van concrete oefeningen.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Update raakt ExerciseModules en een audit-/historylaag; CodeReference en Version blijven read-only in de GUI-flow.
Software Requirements SpecificationSRS moet lengte, verplichte reden, read-only velden en conflictcontrole afdwingen.
DatabaseGebruikt ExerciseModules; geen mutatie op Exercises, ExerciseRuns of ExerciseModuleMigrations.

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-BEH-MOD-003-001SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
DisplayName van een technische module door beheerders kunnen laten wijzigen
REQ-BEH-MOD-003-002SRS-ADM-001
AC-ADM-001
CodeReference read-only tonen in de beheer-GUI
REQ-BEH-MOD-003-003SRS-ADM-001
AC-ADM-001
Version read-only of technisch beheerd tonen
REQ-BEH-MOD-003-004SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
Een verplichte reden vragen vóór opslaan van modulemetadata
REQ-BEH-MOD-003-005SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
Oude en nieuwe waarde auditbaar vastleggen
REQ-BEH-MOD-003-006SRS-CAT-003
SRS-LRN-009
SRS-ADM-001
AC-CAT-003
AC-LRN-009
AC-ADM-001
Door een metadatawijziging geen concrete oefeningconfiguratiepayload wijzigen
REQ-BEH-MOD-003-007SRS-ADM-001
SRS-NFR-SEC-001
AC-ADM-001
AC-NFR-SEC-001
Gelijktijdige wijzigingen veilig detecteren of afhandelen