Skip to main content

UC-BEH-FEAT-002 — Featuretoggle wijzigen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-FEAT-002
NaamFeaturetoggle wijzigen
DomeinBeheerder / Features en systeemnotificaties
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, beheerlogcomponent
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenSite Instellingen > Features > tab Features
Gerelateerde usecasesUC-BEH-FEAT-001, UC-BEH-SET-004
Primaire entiteitenSiteFeatureToggles, SiteFeatureToggleHistory, Users
Secundaire entiteiten / eventsFeatureToggleChanged, FeatureToggleChangeRejected
Gerelateerde popupsPOP-BEH-FEAT-TOGGLE-CONFIRM, POP-BEH-FEAT-TOGGLE-SAVED, POP-BEH-FEAT-TOGGLE-FAILED
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft het wijzigen van een bestaande sitebrede featuretoggle. De beheerder wijzigt uitsluitend de booleaanse status van een vooraf bekende FeatureKey.

De mutatie werkt SiteFeatureToggles bij en legt de oude en nieuwe waarde vast in SiteFeatureToggleHistory. De wijziging is direct functioneel relevant voor onderliggende domeinflows, maar die flows blijven verantwoordelijk voor eigen server-side controles.

Voorbeelden zijn het uitschakelen van nieuwe registraties, nieuwe privéberichtacties, live meekijken, oefeningdelen, test-oefeningen, meldingen indienen en toegankelijkheidsbediening.

Uitgangspunten

  • Alleen bestaande en bekende featurekeys zijn wijzigbaar.
  • Een wijziging is sitebreed en geldt niet alleen voor de huidige sessie.
  • De beheerder bevestigt de wijziging expliciet.
  • Domeindata blijft bestaan wanneer een feature wordt uitgezet.

3. Scope

Deze usecase beschrijft:

  • Wijzigen van IsEnabled voor een bestaande SiteFeatureToggle.
  • Vastleggen van actor, tijdstip, oude waarde en nieuwe waarde.
  • Tonen van bevestiging en resultaat.
  • Voorkomen van vrije sleutelwijziging of nieuwe featureaanmaak.
  • Direct beschikbaar maken van de nieuwe status voor server-side featurecontroles.

Deze usecase beschrijft niet:

  • Nieuwe featurekeys toevoegen.
  • Domeinspecifieke gevolgen zoals privéberichten verwijderen of meldingen sluiten.
  • Niet-booleaanse instellingen wijzigen.
  • Toegankelijkheidsinstellingen van individuele gebruikers aanpassen.

3.1 Afbakening met aangrenzende usecases

OnderdeelAfbakening
UC-BEH-FEAT-001Levert het overzicht waaruit de beheerder een toggle kiest.
UC-BEH-SET-004Beschrijft specifiek gedrag van AccessibilityEnabled.
Onderliggende domeinenRespecteren de status bij hun eigen acties, maar wijzigen de feature niet.

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 Site Instellingen-route is beschikbaar via de beheerdernavigatie.
PRE-004Clientstate, querystringwaarden of zichtbare UI-elementen bepalen niet zelfstandig de autorisatie.
PRE-005De gekozen FeatureKey bestaat en is beheerbaar.
PRE-006De gewenste nieuwe waarde verschilt van de actuele waarde of wordt als geen-wijziging afgehandeld.

5. Post-condities

IDResultaat
POST-001SiteFeatureToggles.IsEnabled is bijgewerkt wanneer de mutatie geldig is.
POST-002UpdatedAtUtc en UpdatedByUserId zijn bijgewerkt.
POST-003SiteFeatureToggleHistory bevat oude en nieuwe waarde.
POST-004Onderliggende domeinflows kunnen de nieuwe featurestatus gebruiken.
POST-005Er is geen domeindata verwijderd.

6. Trigger

De usecase start wanneer de beheerder in het features-overzicht een bestaande featuretoggle aan- of uitzet en de wijziging bevestigt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderFeatures-tabWijzigt een bestaande toggle.De frontend toont bevestigingspopup op basis van PopupKey.POP-BEH-FEAT-TOGGLE-CONFIRM.
2BeheerderBevestigingspopupBevestigt de wijziging.De frontend verstuurt FeatureKey en gewenste booleaanse waarde.Geen vrije sleutelinput.
3BackendAutorisatiecomponentControleert beheerdercontext opnieuw.Bij ontbreken van rechten wordt de mutatie geweigerd.Server-side autorisatie.
4BackendFeaturevalidatieControleert of FeatureKey bekend en beheerbaar is.Onbekende of read-only sleutel wordt geblokkeerd.Centrale sleutelset.
5BackendDatabase-transactieLeest actuele togglewaarde.OldValue wordt bepaald vóór update.SiteFeatureToggles.
6BackendDatabase-transactieWerkt IsEnabled, UpdatedAtUtc en UpdatedByUserId bij.De wijziging wordt atomair opgeslagen.UTC-tijdstip.
7BackendHistorieSchrijft SiteFeatureToggleHistory.OldValue, NewValue, actor en tijdstip worden vastgelegd.Audit.
8BackendFeaturestatusMaakt nieuwe status beschikbaar voor runtime-controles.Afhankelijk van implementatie via cache invalidatie of directe herlezing.Configuratiegedrag.
9FrontendFeatures-tabToont resultaat en ververst de regel.De beheerder ziet de nieuwe status en laatste wijzigingsgegevens.POP-BEH-FEAT-TOGGLE-SAVED.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Beheerder annuleert de bevestiging.De toggle blijft ongewijzigd en de oorspronkelijke waarde blijft zichtbaar.Bevestigingspopup sluiten.Geen.
ALT-0023Sessierechten zijn vervallen.De backend weigert de mutatie en toont veilige foutafhandeling.POP-BEH-FEAT-TOGGLE-FAILED.Geen.
ALT-0034FeatureKey is onbekend of niet beheerbaar.De wijziging wordt geweigerd; de GUI mag de sleutel niet toevoegen.POP-BEH-FEAT-TOGGLE-FAILED.Geen.
ALT-0045Actuele waarde is inmiddels door een andere beheerder gewijzigd.De backend controleert de actuele waarde en verwerkt de nieuwe mutatie op basis van actuele databasewaarheid.POP-BEH-FEAT-TOGGLE-FAILED of bevestiging opnieuw.Alleen bij geldige herbevestiging.
ALT-0056Opslaan faalt.De transactie wordt teruggedraaid; er ontstaat geen gedeeltelijke history.POP-BEH-FEAT-TOGGLE-FAILED.Geen.

9. Business rules

IDBusiness rule
BR-001Featuremutaties zijn altijd server-side geautoriseerd.
BR-002Alleen IsEnabled is via deze flow wijzigbaar.
BR-003FeatureKey is read-only en mag niet via de GUI worden gewijzigd.
BR-004Bij iedere succesvolle wijziging wordt history vastgelegd met oude en nieuwe waarde.
BR-005Een uitgeschakelde feature blokkeert nieuwe acties, maar verwijdert geen bestaande gegevens.
BR-006Onderliggende domeinflows mogen niet vertrouwen op alleen verborgen UI; zij controleren de featurestatus zelf.
BR-007Toegankelijkheid uitschakelen bewaart UserSettings en verhindert alleen aanbieden/toepassen zolang de feature uit staat.

10. Datavalidatie

IDValidatie
VAL-001FeatureKey moet exact overeenkomen met een bekende sleutel.
VAL-002Nieuwe waarde moet boolean zijn.
VAL-003De actor moet een actieve beheerder zijn.
VAL-004UpdatedAtUtc wordt als UTC-tijdstip vastgelegd.
VAL-005OldValue en NewValue moeten beide vastgelegd kunnen worden in history.
VAL-006De mutatie moet transactioneel zijn: update en history slagen samen of niet.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001SiteFeatureToggles updateIsEnabled, UpdatedAtUtc en UpdatedByUserId worden bijgewerkt.
MUT-002SiteFeatureToggleHistory insertOude waarde, nieuwe waarde, actor en tijdstip worden vastgelegd.
MUT-003FeatureToggleChanged eventApplicatielogica kan de gewijzigde status publiceren voor runtime-controles.

12. Geen datamutaties

IDGeen mutatieReden
NO-001FeatureKeyDe technische sleutel blijft ongewijzigd.
NO-002SystemSettingsNiet-booleaanse instellingen worden niet aangepast.
NO-003UserSettingsGebruikerswaarden blijven bestaan.
NO-004DomeinrecordsPrivéberichten, meldingen, oefeningen, relaties en resultaten worden niet verwijderd.
NO-005Identity providerLogincredentials en Keycloakstatus worden niet rechtstreeks gewijzigd.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

Deze usecase verwijst uitsluitend naar PopupKey. Popupteksten, knopteksten, inputlabels en themakeuzes blijven bronhoudend in het popupregister en popup-themes.

PopupKeyGebruik
POP-BEH-FEAT-TOGGLE-CONFIRMBevestigt wijziging van een sitebrede featuretoggle.
POP-BEH-FEAT-TOGGLE-SAVEDTerugkoppeling na succesvolle wijziging.
POP-BEH-FEAT-TOGGLE-FAILEDVeilige foutmelding bij validatie- of opslagfout.

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

DocumentAfleiding
Functioneel OntwerpLegt vast dat Features alleen echte sitebrede toggles wijzigen.
Technisch OntwerpTechnisch Ontwerp: communicatie en systeemnotificaties, readmodels en badges en frontendstate beschrijven de technische uitwerking. Vraagt transactionele update plus history en server-side hercontrole van autorisatie.
Software Requirements SpecificationLevert eisen voor booleaanse mutatie, audit, sleutelvalidatie en dataretentie bij uitschakelen.

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
UC-BEH-FEAT-002-REQ-001SRS-ADM-001
SRS-POP-003
AC-ADM-001
AC-POP-003
Alleen bestaande bekende featuretoggles wijzigbaar maken
UC-BEH-FEAT-002-REQ-002SRS-ADM-001
SRS-POP-003
AC-ADM-001
AC-POP-003
FeatureKey read-only houden
UC-BEH-FEAT-002-REQ-003SRS-ADM-001
SRS-POP-003
SRS-NFR-AUD-001
AC-ADM-001
AC-POP-003
AC-NFR-AUD-001
Iedere featurewijziging transactioneel opslaan met auditgeschiedenis
UC-BEH-FEAT-002-REQ-004SRS-ADM-005
SRS-ADM-001
AC-ADM-005
AC-ADM-001
Bij uitschakelen geen bestaande domeindata verwijderen
UC-BEH-FEAT-002-REQ-005SRS-AUTH-001
SRS-ADM-002
SRS-ADM-001
SRS-POP-003
AC-AUTH-001
AC-ADM-002
AC-ADM-001
AC-POP-003
Onderliggende domeinflows verplicht server-side featurestatus laten controleren
UC-BEH-FEAT-002-REQ-006SRS-ADM-002
SRS-ADM-001
SRS-NFR-AVL-001
AC-ADM-002
AC-ADM-001
AC-NFR-AVL-001
Bij mislukte opslag rollback uitvoeren
UC-BEH-FEAT-002-REQ-007SRS-ADM-001
AC-ADM-001
De beheerder na succesvolle wijziging de actuele status en laatste wijziging tonen