Skip to main content

UC-BEH-MOD-004 — Module-actiefstatus wijzigen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-MOD-004
NaamModule-actiefstatus 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-003, 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-ACTIVE-STATUS-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een beheerder de reguliere actiefstatus van een technische module wijzigt.

IsActive bepaalt of de moduleversie regulier beschikbaar is voor docenten bij het aanmaken of aanpassen van oefeningen. Een module mag pas inactief worden gemaakt wanneer er geen actieve concrete oefeningen of actieve oefenkoppelingen meer bestaan die naar die module verwijzen.

De statuswijziging staat los van IsVisibleForTesting. Test-zichtbaarheid wordt afzonderlijk beheerd en mag niet impliciet worden gewijzigd door het uitschakelen of inschakelen van de reguliere actiefstatus.

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:

  • Inschakelen of uitschakelen van IsActive.
  • Blokkeren van uitschakelen bij actieve Exercises die naar de module verwijzen.
  • Bevestiging met verplichte reden.
  • Auditbaar vastleggen van statuswijziging.
  • Gescheiden houden van IsActive en IsVisibleForTesting.

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.
  • Test-zichtbaarheid wijzigen; dit hoort bij UC-BEH-MOD-005.
  • Modulemigratie uitvoeren om afhankelijkheden op te ruimen; dit hoort bij UC-BEH-MOD-007 en UC-BEH-MOD-008.
  • Hard verwijderen van technische moduleversies.

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 actuele impactwaarden voor actieve oefeningen zijn server-side beschikbaar.
PRE-007De sectie Module toont de huidige IsActive-status.

5. Post-condities

IDResultaat
POST-001IsActive is gewijzigd wanneer alle voorwaarden geldig waren.
POST-002UpdatedByUserId en UpdatedAtUtc zijn bijgewerkt.
POST-003De statuswijziging is auditbaar vastgelegd met reden.
POST-004IsVisibleForTesting is niet impliciet gewijzigd.
POST-005Bij actieve afhankelijkheden is geen statuswijziging uitgevoerd.

6. Trigger

De usecase start wanneer de beheerder de reguliere actiefstatus van de module wijzigt en de actie bevestigt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderSectie ModuleKiest actiefstatus wijzigen.De frontend vraagt actuele afhankelijkheden op.IsActive doelwaarde.
2BackendAutorisatiecomponentControleert beheerdercontext.Alleen beheerder mag status wijzigen.Server-side autorisatie.
3BackendImpactcontroleControleert actieve concrete oefeningen.Uitschakelen wordt geblokkeerd zolang Exercises naar deze module verwijzen.Exercises.ExerciseModuleId.
4BackendImpactcontroleControleert actieve oefenkoppelingen.Uitschakelen wordt geblokkeerd zolang actieve koppelingen via deze module bestaan.TeacherLevelCategoryExercises, Exercises.
5FrontendPopupToont bevestiging met verplichte reden.De beheerder bevestigt bewust de statuswijziging.PopupKey POP-BEH-MOD-ACTIVE-STATUS-CONFIRM.
6BeheerderPopupBevestigt met reden.De backend verwerkt de statuswijziging.Reason verplicht.
7BackendModuleServiceWijzigt IsActive.Alleen IsActive en auditvelden worden aangepast.ExerciseModules.IsActive.
8BackendHistoriecomponentRegistreert statuswijziging.Actor, tijdstip, oude waarde, nieuwe waarde en reden worden vastgelegd.Beheeraudit / modulehistory.
9FrontendSectie ModuleToont nieuwe status en actiebeperkingen.Beschikbare acties worden herberekend.Detailreadmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Gebruiker is geen beheerder.De backend weigert de statuswijziging.Niet van toepassing.Geen.
ALT-0023Er bestaan actieve concrete oefeningen.Uitschakelen wordt geblokkeerd met uitleg dat eerst migratie of loskoppeling nodig is.Niet van toepassing.Geen.
ALT-0034Er bestaan actieve oefenkoppelingen.Uitschakelen wordt geblokkeerd.Niet van toepassing.Geen.
ALT-0045Beheerder annuleert.De status blijft ongewijzigd.POP-BEH-MOD-ACTIVE-STATUS-CONFIRM.Geen.
ALT-0056Reden ontbreekt.De bevestiging wordt geweigerd.POP-BEH-MOD-ACTIVE-STATUS-CONFIRM.Geen.
ALT-0067Module is intussen gewijzigd.De backend herlaadt de module en voert geen verouderde statusovergang uit.Niet van toepassing.Geen.

9. Business rules

IDBusiness rule
BR-001IsActive bepaalt reguliere beschikbaarheid voor docenten.
BR-002Een technische module mag pas inactief worden gemaakt wanneer geen actieve concrete oefeningen naar deze module verwijzen.
BR-003Uitschakelen mag historische ExerciseRuns niet verwijderen of wijzigen.
BR-004IsActive en IsVisibleForTesting zijn gescheiden statusvelden.
BR-005Wijzigen van IsActive maakt geen modulemigratie aan.
BR-006Een statuswijziging vereist verplichte reden en auditregistratie.
BR-007Hard verwijderen van ExerciseModules is niet toegestaan via deze beheerflow.

10. Datavalidatie

IDValidatie
VAL-001ExerciseModuleId is verplicht en moet bestaan.
VAL-002De gewenste IsActive-doelwaarde moet verschillen van de actuele waarde.
VAL-003Bij uitschakelen moet het aantal actieve Exercises op deze module nul zijn.
VAL-004Bij uitschakelen moet het aantal actieve oefenkoppelingen via deze module nul zijn.
VAL-005Reason is verplicht en maximaal 500 tekens.
VAL-006De beheerderrol wordt vlak vóór opslaan opnieuw gevalideerd.
VAL-007Gelijktijdige statuswijzigingen moeten veilig worden gedetecteerd.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Update ExerciseModulesIsActive, UpdatedByUserId en UpdatedAtUtc worden aangepast.
MUT-002Beheeraudit / modulehistoryStatuswijziging wordt vastgelegd met oude waarde, nieuwe waarde, actor, tijdstip en reden.

12. Geen datamutaties

IDGeen mutatieReden
NO-001IsVisibleForTestingWordt niet impliciet gewijzigd.
NO-002ExercisesExerciseModuleId en IsActive van oefeningen blijven ongewijzigd.
NO-003ExerciseRunsHistorische runs blijven ongewijzigd.
NO-004ExerciseModuleMigrationsGeen migratie wordt aangemaakt.
NO-005ExerciseHistoryGeen oefeninghistory wordt geschreven door statuswijziging op module.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-BEH-MOD-ACTIVE-STATUS-CONFIRMBevestiging van actiefstatuswijziging 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 OntwerpEen module mag pas inactief worden gemaakt wanneer geen oefeningen meer naar die moduleversie verwijzen.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Statuswijziging raakt ExerciseModules.IsActive en audit; geen migratie of runwijziging.
Software Requirements SpecificationSRS moet blokkeren bij actieve Exercises en actieve oefenkoppelingen.
DatabaseGebruikt ExerciseModules, Exercises en eventueel TeacherLevelCategoryExercises voor impactcontrole.

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-004-001SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
IsActive van een module alleen door beheerders laten wijzigen
REQ-BEH-MOD-004-002SRS-AUTH-001
SRS-LRN-009
SRS-ADM-004
SRS-ADM-005
SRS-ADM-001
SRS-MOD-003
AC-AUTH-001
AC-LRN-009
AC-ADM-004
AC-ADM-005
AC-ADM-001
AC-MOD-003
Uitschakelen blokkeren zolang actieve concrete oefeningen naar de module verwijzen
REQ-BEH-MOD-004-003SRS-AUTH-001
SRS-ADM-004
SRS-ADM-005
SRS-ADM-001
SRS-MOD-003
AC-AUTH-001
AC-ADM-004
AC-ADM-005
AC-ADM-001
AC-MOD-003
Uitschakelen blokkeren zolang actieve oefenkoppelingen via de module bestaan
REQ-BEH-MOD-004-004SRS-ADM-001
AC-ADM-001
IsVisibleForTesting niet impliciet wijzigen door een IsActive-wijziging
REQ-BEH-MOD-004-005SRS-ADM-001
AC-ADM-001
Een verplichte reden vragen vóór statuswijziging
REQ-BEH-MOD-004-006SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
De statuswijziging auditbaar vastleggen
REQ-BEH-MOD-004-007SRS-LRN-009
SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-LRN-009
AC-ADM-004
AC-ADM-001
AC-MOD-003
Geen historische runs verwijderen of herschrijven door een module uit te schakelen