UC-BEH-SET-002 — Systeeminstelling wijzigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-SET-002 |
| Naam | Systeeminstelling wijzigen |
| Domein | Beheerder / Systeeminstellingen en beheerlogging |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, beheerlogcomponent |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Site Instellingen > Technische instellingen / Systeeminstellingen |
| Gerelateerde usecases | UC-BEH-SET-001, UC-BEH-SET-003, UC-BEH-SET-005 |
| Primaire entiteiten | SystemSettings, SystemSettingHistory, Users |
| Secundaire entiteiten / events | SystemSettingChanged, ConfigurationCacheRefreshed |
| Gerelateerde popups | POP-BEH-SET-CHANGE-CONFIRM, POP-BEH-SET-SAVED, POP-BEH-SET-SAVE-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft het wijzigen van een bestaande niet-booleaanse systeeminstelling, zoals PDF-bestandsnaamopbouw, bewaartermijn van privéberichten of een technische cache-instelling.
De wijziging blijft beperkt tot bestaande SystemSettings of de expliciet benoemde configuratiebron. Nieuwe sleutels worden niet via de GUI aangemaakt.
Na een geldige wijziging moet de runtimeconfiguratie opnieuw beschikbaar komen voor de applicatie zodat de nieuwe waarde zonder herstart consistent gebruikt wordt.
Uitgangspunten
- Per SettingKey is het toegestane type in code vastgelegd.
- SystemSettings wordt gecachet voor runtimegebruik.
- Alle wijzigingen zijn beheeracties en moeten herleidbaar zijn.
- Clientstate mag geen type of sleutel afdwingen.
3. Scope
Deze usecase beschrijft:
- Selecteren van een bestaande instelling.
- Past de waarde aan in de invoervorm die bij het waardetype hoort.
- Server-side type- en waardevalidatie.
- Auditbaar vastleggen van oude en nieuwe waarde.
- Cacheverversing of cache-invalidatie na succesvolle mutatie.
- Begrenzen van waarden per sleutel.
Deze usecase beschrijft niet:
- Nieuwe SettingKeys aanmaken.
- Featuretoggles wijzigen, behalve waar expliciet als AccessibilityEnabled benoemd.
- Domeindata zoals berichten of PDF-bestanden aanpassen.
- Identity-providerinstellingen wijzigen.
3.1 Afbakening met aangrenzende usecases
| Onderdeel | Afbakening |
|---|---|
| UC-BEH-SET-001 | Levert het overzicht en de selectie van de instelling. |
| UC-BEH-SET-003 | Beschrijft de cacheverversing na succesvolle configuratiemutatie. |
| UC-BEH-SET-005 | Beschrijft de typegestuurde invoervorm. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd in OefenHub. |
| PRE-002 | De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft. |
| PRE-003 | De Site Instellingen-route is beschikbaar via de beheerdernavigatie. |
| PRE-004 | Clientstate, querystringwaarden of zichtbare UI-elementen bepalen niet zelfstandig de autorisatie. |
| PRE-005 | De instelling bestaat en is bekend in de instellingcatalogus. |
| PRE-006 | De beheerder heeft de instelling geselecteerd vanuit het overzicht. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De instelling is gewijzigd wanneer alle validaties slagen. |
| POST-002 | Oude en nieuwe waarde zijn auditbaar vastgelegd. |
| POST-003 | De configuratiecache is vernieuwd of ongeldig gemaakt. |
| POST-004 | De beheerder ziet de actuele waarde in het overzicht. |
| POST-005 | Er is geen nieuwe sleutel aangemaakt. |
6. Trigger
De usecase start wanneer de beheerder kiest voor systeeminstelling wijzigen bij een bestaande instelling.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Instellingenoverzicht | Selecteert een bestaande instelling. | De frontend toont de passende invoervorm. | UC-BEH-SET-005. |
| 2 | Beheerder | Invoerweergave | Past de waarde aan in de invoervorm die bij het waardetype hoort. | De frontend voert basisvalidatie uit. | Typegestuurde invoer. |
| 3 | Beheerder | Bevestiging | Bevestigt de wijziging. | De frontend verstuurt SettingKey en nieuwe waarde. | PopupKey. |
| 4 | Backend | Autorisatiecomponent | Controleert beheerdercontext opnieuw. | Alleen actieve beheerders mogen opslaan. | Server-side autorisatie. |
| 5 | Backend | Validatie | Controleert SettingKey, type en waardebereik. | Ongeldige waarden worden geweigerd. | Catalogus. |
| 6 | Backend | Database-transactie | Werkt uitsluitend het valueveld bij dat bij het codegedreven instellingstype hoort; niet-leidende valuevelden worden niet als bron van waarheid gebruikt. | De oude en nieuwe waarde worden verwerkt. | SystemSettings. |
| 7 | Backend | Historie | Schrijft systeeminstellingenhistorie of beheerlog. | Actor, tijdstip, veld, oude en nieuwe waarde zijn herleidbaar. | Audit. |
| 8 | Backend | Cache | Ververst of invalideert configuratiecache. | Nieuwe waarde is runtime beschikbaar. | UC-BEH-SET-003. |
| 9 | Frontend | Overzicht | Toont opgeslagen waarde en laatste wijziging. | De beheerder krijgt resultaatmelding. | PopupKey. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | Instelling bestaat niet meer. | De backend blokkeert wijziging en ververst het overzicht. | Foutpopup. | Geen. |
| ALT-002 | 4 | Beheerdercontext is vervallen. | De mutatie wordt geweigerd. | Foutpopup. | Geen. |
| ALT-003 | 5 | Typevalidatie faalt. | De wijziging wordt niet opgeslagen. | Foutpopup. | Geen. |
| ALT-004 | 6 | Opslaan of history schrijven faalt. | De transactie wordt teruggedraaid. | Foutpopup. | Geen gedeeltelijke mutatie. |
| ALT-005 | 8 | Cache refresh faalt na opslag. | Het systeem markeert de configuratie als niet consistent verwerkt en toont een fout; herstelactie moet beheerbaar zijn. | Foutpopup. | SystemSettings mogelijk opgeslagen; cache niet actief. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | Nieuwe SettingKeys worden niet via de GUI aangemaakt. |
| BR-002 | Per sleutel is exact één waardetype functioneel leidend. |
| BR-003 | Booleaanse featuretoggles horen niet in SystemSettings. |
| BR-004 | Wijzigingen aan instellingen moeten auditbaar zijn. |
| BR-005 | Na een wijziging moet configuratiecache worden vernieuwd of ongeldig gemaakt. |
| BR-006 | Clientstate mag het type of de sleutel niet bepalen. |
| BR-007 | Een wijziging werkt sitebreed en niet alleen voor de huidige beheerder. |
| BR-008 | Historische records zoals bestaande PDF’s of bestaande privéberichten worden niet herschreven door een nieuwe instelling. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | SettingKey moet bekend en wijzigbaar zijn. |
| VAL-002 | Waarde moet passen bij het in code vastgelegde type. |
| VAL-003 | ValueText mag maximaal 500 tekens zijn. |
| VAL-004 | Numerieke waarden moeten binnen sleutelgebonden grenzen vallen. |
| VAL-005 | Datumwaarden worden technisch in UTC verwerkt wanneer zij tijdgebonden gedrag aansturen. |
| VAL-006 | Oude en nieuwe waarde moeten in history veilig weergeefbaar zijn. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | SystemSettings update | Werkt uitsluitend het valueveld bij dat bij het codegedreven instellingstype hoort; niet-leidende valuevelden worden niet als bron van waarheid gebruikt. |
| MUT-002 | SystemSettingHistory of beheerlog insert | Veld, oude waarde, nieuwe waarde, actor en tijdstip worden vastgelegd. |
| MUT-003 | ConfigurationCacheRefreshed event | Cacheverversing of invalidatie wordt geregistreerd. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | SettingKey | De technische sleutel blijft ongewijzigd. |
| NO-002 | Andere SystemSettings | Niet-geselecteerde instellingen blijven ongewijzigd. |
| NO-003 | SiteFeatureToggles | Featuretoggles worden niet gewijzigd. |
| NO-004 | Domeinrecords | Bestaande berichten, PDF’s, resultaten en gebruikersrecords worden niet aangepast. |
| NO-005 | Identity provider | Geen Keycloak- of credentialwijziging. |
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.
| PopupKey | Gebruik |
|---|---|
| POP-BEH-SET-CHANGE-CONFIRM | Zie popupregister voor tekst en knopgedrag. |
| POP-BEH-SET-SAVED | Zie popupregister voor tekst en knopgedrag. |
| POP-BEH-SET-SAVE-FAILED | Zie popupregister voor tekst en knopgedrag. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Document | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft wijzigbare bestaande systeeminstellingen en groepen. |
| Technisch Ontwerp | Technisch Ontwerp: logging en foutafhandeling, security en configuratie en beheer en operatie beschrijven de technische uitwerking. Vraagt typecatalogus, transactionele update, audit en cacheverversing. |
| Software Requirements Specification | Levert eisen voor typevalidatie, cachegedrag en beheeraudit. |
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-afleiding | Dekt | Usecasecontext |
|---|---|---|
UC-BEH-SET-002-REQ-001 | SRS-ADM-007 SRS-ADM-001 AC-ADM-007 AC-ADM-001 | Bestaande niet-booleaanse systeeminstellingen wijzigbaar maken voor beheerders |
UC-BEH-SET-002-REQ-002 | SRS-ADM-001 AC-ADM-001 | Sleutelgebonden waarderegels toepassen voordat de wijziging wordt opgeslagen |
UC-BEH-SET-002-REQ-003 | SRS-ADM-007 SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-007 AC-ADM-001 AC-NFR-AUD-001 | Systeeminstellingwijzigingen auditbaar vastleggen |
UC-BEH-SET-002-REQ-004 | SRS-ADM-001 AC-ADM-001 | Na succesvolle wijziging de configuratiecache vernieuwen of ongeldig maken |
UC-BEH-SET-002-REQ-005 | SRS-ADM-001 AC-ADM-001 | Geen nieuwe SettingKey via de GUI aanmaken |