UC-BEH-SET-005 — Instellingstype en invoervorm afdwingen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-SET-005 |
| Naam | Instellingstype en invoervorm afdwingen |
| Domein | Beheerder / Systeeminstellingen en beheerlogging |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, instellingcatalogus, validatiecomponent |
| 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-002 |
| Primaire entiteiten | SystemSettings, instellingcatalogus |
| Secundaire entiteiten / events | Niet van toepassing |
| Gerelateerde popups | POP-BEH-SET-SAVE-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe de beheerinterface en backend per bestaande systeeminstelling afdwingen welk invoertype, waardetype en waardebereik geldig zijn. Het type wordt niet door de beheerder gekozen en komt niet uit clientstate, maar uit de codegedreven instellingcatalogus bij de SettingKey.
De usecase vormt een ondersteunende validatie- en weergaveflow voor het overzicht en de wijzigflow. Zij slaat zelf geen nieuwe waarde op, schrijft geen historie en ververst geen cache; dat gebeurt uitsluitend wanneer UC-BEH-SET-002 de wijziging succesvol verwerkt.
Uitgangspunten
- Per
SettingKeyis het toegestane type in code vastgelegd. - De frontend toont een invoervorm die uit de server-side catalogus is afgeleid.
- De backend valideert het type opnieuw bij opslaan; frontendvalidatie is ondersteunend.
- Clientstate mag geen datatype, valueveld of sleutel afdwingen.
3. Scope
Deze usecase beschrijft:
- Afleiden van de juiste invoervorm per bestaande
SettingKey. - Tonen van type, beschrijving, waardegrenzen en beheerbare waarde.
- Blokkeren van onbekende of type-inconsistente instellingen.
- Server-side validatieregels die door de wijzigflow worden gebruikt.
- Duidelijk onderscheiden van beheerbare waardevelden en read-only technische velden.
Deze usecase beschrijft niet:
- De instelling daadwerkelijk opslaan.
- History of beheerlog schrijven.
- Configuratiecache verversen.
- Nieuwe SettingKeys, datatypes of invoervormen via de GUI definiëren.
- Featuretoggles beheren.
3.1 Afbakening met aangrenzende usecases
| Onderdeel | Afbakening |
|---|---|
| UC-BEH-SET-001 | Gebruikt de catalogus om het overzicht typeveilig te tonen. |
| UC-BEH-SET-002 | Gebruikt deze validatieregels en slaat bij akkoord de instelling op. |
| UC-BEH-SET-003 | Ververst cache nadat een geldige mutatie is opgeslagen. |
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 instelling bestaat als bekende SettingKey in de instellingcatalogus. |
| PRE-004 | De instellingcatalogus bevat type, invoervorm, waardebegrenzing en beheerbaarheid. |
| PRE-005 | Clientstate, querystringwaarden of zichtbare UI-elementen bepalen het datatype niet zelfstandig. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De beheerder ziet alleen de invoervorm die past bij de geselecteerde SettingKey. |
| POST-002 | Onbekende of type-inconsistente instellingen worden niet regulier bewerkbaar gemaakt. |
| POST-003 | De backend beschikt over dezelfde validatieregels voor de wijzigflow. |
| POST-004 | Er is geen instelling opgeslagen en geen history geschreven binnen deze usecase. |
| POST-005 | Er is geen configuratiecache ververst. |
6. Trigger
De usecase start wanneer de beheerder een bestaande systeeminstelling bekijkt of wijzigt en de applicatie de invoervorm en validatieregels voor die instelling moet bepalen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Instellingenoverzicht | Selecteert een bestaande instelling. | De frontend vraagt detail- en type-informatie op. | SettingKey. |
| 2 | Backend | Autorisatiecomponent | Controleert beheerdercontext. | Alleen beheerders krijgen type- en detailinformatie. | Server-side autorisatie. |
| 3 | Backend | Instellingcatalogus | Leest type, invoervorm, beheerbaarheid en grenzen. | Catalogusdata wordt gekoppeld aan de actuele SystemSettings-waarde. | Codegedreven catalogus. |
| 4 | Backend | Validatiecomponent | Controleert of de opgeslagen waarde past bij het catalogustype. | Inconsistente waarden worden als foutstatus teruggegeven. | Typevalidatie. |
| 5 | Frontend | Invoerweergave | Toont passende invoervorm. | De beheerder kan alleen het beheerbare waardeveld invoeren. | Geen mutatie. |
| 6 | Frontend | Invoerweergave | Toont read-only technische velden. | SettingKey, datatype en codegedreven grenzen zijn niet wijzigbaar. | Read-only metadata. |
| 7 | Backend | Wijzigflow | Gebruikt dezelfde regels bij opslaan. | Ongeldige invoer wordt geblokkeerd voordat UC-BEH-SET-002 opslaat. | Server-side validatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | SettingKey is onbekend in de catalogus. | De instelling wordt niet regulier bewerkbaar gemaakt. | Niet van toepassing. | Geen. |
| ALT-002 | 4 | Opgeslagen waarde past niet bij het catalogustype. | De frontend toont foutstatus en blokkeert regulier opslaan. | POP-BEH-SET-SAVE-FAILED bij poging tot opslaan. | Geen. |
| ALT-003 | 5 | Frontend probeert datatype of valueveld te manipuleren. | De backend negeert clienttype en gebruikt uitsluitend catalogusregels. | POP-BEH-SET-SAVE-FAILED bij poging tot opslaan. | Geen. |
| ALT-004 | 5 | Waarde overschrijdt sleutelgebonden grens. | De invoer wordt afgewezen voordat opslag kan plaatsvinden. | POP-BEH-SET-SAVE-FAILED bij poging tot opslaan. | Geen. |
| ALT-005 | 6 | Instelling is read-only. | De frontend toont de waarde zonder bewerkactie. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | De beheerder mag het datatype van een instelling niet kiezen of wijzigen. |
| BR-002 | Per SettingKey is exact één waardetype functioneel leidend. |
| BR-003 | Type- en waarderegels komen uit de server-side catalogus. |
| BR-004 | Frontendvalidatie is ondersteunend; backendvalidatie is beslissend. |
| BR-005 | Onbekende sleutels worden niet stilzwijgend beheerbaar gemaakt. |
| BR-006 | Niet-leidende valuevelden mogen niet als bron van waarheid worden gebruikt. |
| BR-007 | Deze usecase schrijft geen instellingwaarde, geschiedenis of cachewijziging. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | SettingKey moet bekend zijn in de instellingcatalogus. |
| VAL-002 | Waarde moet passen bij het codegedreven datatype. |
| VAL-003 | ValueText mag maximaal 500 tekens zijn. |
| VAL-004 | Numerieke waarden moeten binnen sleutelgebonden minimum- en maximumgrenzen vallen. |
| VAL-005 | Datumwaarden worden geïnterpreteerd volgens de sleutelgebonden tijdzone- en UTC-regel. |
| VAL-006 | Read-only metadata zoals SettingKey, datatype en grenzen mag niet door clientinput wijzigen. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | Geen functionele mutatie | Deze usecase bepaalt invoervorm en validatieregels, maar slaat geen waarde op. |
| MUT-002 | Geen domeinevent | Er ontstaat pas een event wanneer een muterende usecase daadwerkelijk opslaat. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | SystemSettings | De waarde blijft ongewijzigd binnen deze usecase. |
| NO-002 | SystemSettingHistory | Validatie en invoervormweergave schrijven geen history. |
| NO-003 | Configuratiecache | Geen cacheverversing zonder succesvolle mutatie. |
| NO-004 | SiteFeatureToggles | Featuretoggles blijven buiten deze typeflow. |
| NO-005 | Identity provider | Geen authenticatie- of credentialwijziging. |
13. State diagram
Niet van toepassing. Deze usecase wijzigt geen persistent statusobject en slaat geen instelling op. De beslislogica voor type en invoervorm staat in de decision flow.
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-SAVE-FAILED | Terugkoppeling wanneer type- of waarderegels bij een opslagpoging worden geschonden. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Document | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft dat de beheerder per instelling alleen de passende invoervorm ziet. |
| Technisch Ontwerp | Technisch Ontwerp: logging en foutafhandeling, security en configuratie en beheer en operatie beschrijven de technische uitwerking. Vraagt een server-side instellingcatalogus met type, invoervorm, grenzen en beheerbaarheid per sleutel. |
| Software Requirements Specification | Levert eisen voor type-afleiding, server-side validatie en blokkeren van clientmanipulatie. |
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-005-REQ-001 | SRS-AUTH-001 SRS-RDM-001 SRS-CAT-001 SRS-ADM-007 SRS-ADM-001 AC-AUTH-001 AC-RDM-001 AC-CAT-001 AC-ADM-007 AC-ADM-001 | Per SettingKey de invoervorm afleiden uit een server-side catalogus |
UC-BEH-SET-005-REQ-002 | SRS-AUTH-001 SRS-ADM-001 AC-AUTH-001 AC-ADM-001 | Type-inconsistente invoer server-side blokkeren |
UC-BEH-SET-005-REQ-003 | SRS-ADM-007 SRS-ADM-001 AC-ADM-007 AC-ADM-001 | De beheerder het datatype of technische valueveld niet laten kiezen |
UC-BEH-SET-005-REQ-004 | SRS-ADM-001 AC-ADM-001 | Onbekende sleutels niet regulier beheerbaar maken |
UC-BEH-SET-005-REQ-005 | SRS-ADM-002 SRS-ADM-007 SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-002 AC-ADM-007 AC-ADM-001 AC-NFR-AUD-001 | Door type- en invoervormcontrole geen waarde, history of cache wijzigen |
UC-BEH-SET-005-REQ-006 | SRS-ADM-001 AC-ADM-001 | Read-only metadata beschermen tegen clientmanipulatie |