UC-DOC-AANB-004 — Niveaukerngegevens wijzigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-AANB-004 |
| Naam | Niveaukerngegevens wijzigen |
| Domein | Docent |
| Subdomein | Oefenaanbod, niveaus en categorieën |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Ingelogde gebruiker met actieve rol Docent, als actuele eigenaar van het niveau |
| Betrokken schermen | Oefenaanbod, niveaukerngegevens, formulier niveau bewerken |
| Gerelateerde usecases | UC-DOC-AANB-002 — Niveau selecteren; UC-DOC-AANB-003 — Nieuw niveau aanmaken; UC-DOC-SAM-005 — Eigenaarschap overdragen |
| Primaire entiteiten | Levels |
| Secundaire entiteiten / events | LevelHistory, LevelCollaborators, StudentLevelAuthorizations |
| Gerelateerde popups | Niet van toepassing; inline validatie |
| Popupregister | Niet van toepassing |
| MoSCoW | Should |
2. Omschrijving
Deze usecase beschrijft hoe een docent de kerngegevens van een bestaand niveau wijzigt.
Kerngegevens zijn gegevens die de identiteit en basiswerking van het niveau bepalen, zoals naam, beschrijving en zichtbaarheid. Omdat een niveau de onderwijscontext vormt voor categorieën, oefeningen, leerlingautorisaties en samenwerking, mag wijziging van kerngegevens alleen plaatsvinden door de actuele eigenaar van het niveau. Collaborators mogen binnen het niveau aan categorieën, oefeningen en configuraties werken, maar krijgen niet automatisch recht om de kerngegevens of zichtbaarheid van het niveau te wijzigen.
De usecase wijzigt geen categorieën, oefeningen, leerlingtoegang of collaborators. Die onderdelen blijven in aparte usecases bronhoudend.
3. Scope
Binnen scope:
- openen van de bewerkmodus voor niveaukerngegevens;
- controleren of de docent actuele eigenaar is;
- wijzigen van naam, beschrijving en zichtbaarheid;
- server-side valideren van wijzigingen;
- opslaan van gewijzigde niveaukerngegevens;
- vastleggen van wijzigingsmetadata en history;
- opnieuw laden van de niveaucontext.
Buiten scope:
- eigenaarschap overdragen;
- collaborators beheren;
- categorieën koppelen of ontkoppelen;
- oefeningen aanmaken of wijzigen;
- leerlingautorisaties beheren;
- centrale categorie-identiteit aanpassen;
- beheerderondersteuning;
- frontpagecontent aanpassen.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd met actieve docentrol. |
| PRE-002 | Er is een niveau geselecteerd als actuele context. |
| PRE-003 | De gebruiker is actuele eigenaar van het niveau. |
| PRE-004 | Het niveau bestaat en is niet administratief verwijderd of ongeldig. |
| PRE-005 | De bewerkactie is zichtbaar of bereikbaar volgens autorisatieregels. |
| PRE-006 | Invoer wordt server-side gevalideerd. |
| PRE-007 | Wijzigingsmetadata kan worden vastgelegd. |
| PRE-008 | Eventuele leerlingtoegang wordt niet impliciet gewijzigd door het wijzigen van kerngegevens. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De niveaukerngegevens zijn gewijzigd of ongewijzigd gebleven bij annuleren/fout. |
| POST-002 | De wijziging is alleen opgeslagen wanneer de docent actuele eigenaar was. |
| POST-003 | UpdatedByUserId en UpdatedAtUtc zijn bijgewerkt bij succesvolle wijziging. |
| POST-004 | De wijziging is auditbaar of historisch herleidbaar. |
| POST-005 | Bestaande categorieën en oefeningen blijven gekoppeld. |
| POST-006 | Bestaande leerlingautorisaties blijven bestaan, maar hun effect kan door zichtbaarheid en toegangsregels worden beïnvloed. |
| POST-007 | Bestaande collaborators blijven ongewijzigd. |
| POST-008 | De pagina toont de actuele niveaugegevens na opslaan. |
| POST-009 | Er zijn geen systeemberichten verstuurd door alleen niveaukerngegevens te wijzigen. |
6. Trigger
De usecase start wanneer de actuele eigenaar van een niveau binnen Oefenaanbod kiest voor het wijzigen van niveaukerngegevens.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Oefenaanbod | Opent geselecteerd niveau. | Systeem toont niveaukerngegevens. | UC-DOC-AANB-002. |
| 2 | Docent | Niveaukerngegevens | Kiest bewerken. | Systeem controleert eigenaarschap. | Alleen actuele eigenaar. |
| 3 | Systeem | Applicatieservice | Valideert bewerkrecht. | Bewerken toegestaan. | Levels.OwnerUserId. |
| 4 | Docent | Formulier | Wijzigt naam. | Invoer wordt lokaal in het formulier bijgehouden. | Naamvalidatie volgt server-side. |
| 5 | Docent | Formulier | Wijzigt beschrijving. | Invoer wordt lokaal in het formulier bijgehouden. | Veilige tekst. |
| 6 | Docent | Formulier | Wijzigt zichtbaarheid. | Keuze Open of Privé wordt aangeboden. | Visibility. |
| 7 | Docent | Formulier | Slaat op. | Systeem valideert input server-side. | Validatie. |
| 8 | Systeem | Applicatieservice | Slaat wijzigingen op. | Levels wordt bijgewerkt. | UpdatedAtUtc, UpdatedByUserId. |
| 9 | Systeem | Applicatieservice | Legt history vast. | Wijzigingen zijn herleidbaar. | LevelHistory of audit. |
| 10 | Systeem | Oefenaanbod | Laadt actuele niveaucontext. | Nieuwe kerngegevens worden getoond. | Readmodel. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Gebruiker is collaborator maar geen eigenaar. | Bewerken van kerngegevens wordt geblokkeerd. | Inline of toegangafhandeling. | Geen. |
| ALT-002 | 3 | Eigenaarschap is intussen overgedragen. | Bewerking wordt geweigerd. | Inline melding. | Geen. |
| ALT-003 | 7 | Naam ontbreekt. | Opslaan wordt geblokkeerd. | Inline validatie. | Geen. |
| ALT-004 | 7 | Zichtbaarheid onbekend. | Opslaan wordt geblokkeerd. | Inline validatie. | Geen. |
| ALT-005 | 7 | Beschrijving bevat onveilige inhoud. | Opslaan wordt geblokkeerd of inhoud wordt veilig verwerkt. | Inline validatie. | Geen of gesanitized. |
| ALT-006 | 8 | Gelijktijdige wijziging door eigenaar of beheerder. | Systeem detecteert conflict of overschrijft volgens concurrencyregel. | Inline melding. | Geen of gecontroleerde update. |
| ALT-007 | 8 | Opslagfout. | Transactie wordt teruggedraaid. | Inline foutmelding. | Geen gedeeltelijke update. |
| ALT-008 | 6 | Zichtbaarheid wijzigt van open naar privé. | Bestaande autorisaties blijven, maar nieuwe leerlingtoegang volgt privéniveauregels. | Inline toelichting aanbevolen. | Levels.Visibility gewijzigd. |
| ALT-009 | 6 | Zichtbaarheid wijzigt van privé naar open. | Niveau kan breder beschikbaar worden volgens open-niveau-regels. | Inline toelichting aanbevolen. | Levels.Visibility gewijzigd. |
| ALT-010 | 1 | Docent annuleert. | Formulier sluit zonder wijziging. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen de actuele eigenaar mag niveaukerngegevens wijzigen. |
| BR-002 | Een actieve collaborator mag categorieën en oefeningen binnen niveau beheren waar toegestaan, maar niet automatisch niveaukerngegevens wijzigen. |
| BR-003 | Naam en zichtbaarheid zijn kerngegevens van een niveau. |
| BR-004 | Wijziging van zichtbaarheid verandert geen bestaande relaties. |
| BR-005 | Wijziging van zichtbaarheid maakt geen leerlingautorisaties aan of ongedaan. |
| BR-006 | Een privé-niveau blijft afhankelijk van expliciete leerlingautorisaties. |
| BR-007 | Een open niveau wordt volgens open-niveau-regels beschikbaar, maar alleen actieve oefeningen zijn relevant voor leerlingweergave. |
| BR-008 | Wijzigingen moeten auditbaar zijn. |
| BR-009 | Wijziging van niveaukerngegevens verstuurt standaard geen systeembericht. |
| BR-010 | De eigenaar mag niet via dit formulier worden gewijzigd; dat hoort bij eigendomsoverdracht. |
| BR-011 | Kerngegevens wijzigen geen categorie-identiteit. |
| BR-012 | Kerngegevens wijzigen geen technische module of oefenconfiguratie. |
| BR-013 | De wijziging wordt server-side gevalideerd, ook wanneer de UI al beperkingen toont. |
| BR-014 | Een oude bewerkpagina mag geen wijziging opslaan wanneer de gebruiker intussen geen eigenaar meer is. |
| BR-015 | History moet minimaal actor, tijdstip, gewijzigd veld en oude/nieuwe waarde kunnen reconstrueren wanneer relevant. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| LevelId | Moet bestaan en eigendom zijn van de huidige docent. |
| Naam | Verplicht, niet leeg, veilige tekst. |
| Beschrijving | Veilige tekst, lengte volgens de geldende SRS-grens. |
| Zichtbaarheid | Alleen toegestane waarden Open en Private. |
| OwnerUserId | Mag niet via dit formulier worden gewijzigd. |
| UpdatedByUserId | Wordt server-side gezet op huidige docent. |
| UpdatedAtUtc | Wordt server-side in UTC gezet. |
| Concurrency | Systeem moet kunnen omgaan met gewijzigde of verouderde data. |
| Formulierinput | Geen actieve HTML of scriptinhoud. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 8 | Update | Levels | Naam, beschrijving en/of zichtbaarheid worden gewijzigd. |
| 8 | Auditvelden | Levels | UpdatedByUserId en UpdatedAtUtc worden bijgewerkt. |
| 9 | Audit | LevelHistory / audit | Oude en nieuwe waarden worden historisch vastgelegd. |
| 9 | Event | TeacherLevelCoreDataChanged | Domeinevent voor wijziging van niveaukerngegevens. |
| 10 | Read | Oefenaanbodreadmodel | Gewijzigde niveaucontext wordt opnieuw geladen. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| LevelCollaborators | Collaborators worden niet gewijzigd. |
| StudentLevelAuthorizations | Leerlingautorisaties blijven staan. |
| LevelCategoryLinks | Categorieën blijven gekoppeld. |
| Exercises | Oefeningen blijven ongewijzigd. |
| UserRelationships | Relaties worden niet aangepast. |
| SystemMessages | Geen bericht door standaard kerngegevenswijziging. |
| ExerciseRuns | Historische runs blijven ongewijzigd. |
| FrontpageContent | Frontpagebeheer staat los van niveaukerngegevens. |
13. State diagram
Niet van toepassing als persistent statusmodel.
De zichtbaarheid Open of Privé is een eigenschap van het niveau, maar geen lifecycle-statusobject met eigen overgangsmodel.
De wijziging van zichtbaarheid is wel een domeinmutatie en moet auditbaar zijn.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Niveaukerngegevens wijzigen
16.2 Collaborator probeert kerngegevens te wijzigen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Kerngegevens wijzigen | Deze usecase gebruikt inline validatie en routeguard-afhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Vastleggen dat de eigenaar niveaukerngegevens zoals naam, beschrijving en zichtbaarheid kan wijzigen. |
| Functioneel Ontwerp | Vastleggen dat collaborators niet automatisch niveaukerngegevens mogen wijzigen. |
| Technisch Ontwerp | Autorisatie, policies en server-side contextcontrole beschrijft de owner-/docentcontextcontrole vóór wijziging. |
| Technisch Ontwerp | Oefencatalogus, niveaus, categorieën, oefeningen en modules beschrijft audit/history van wijzigingen aan niveaukerngegevens. |
| Software Requirements Specification | Beschrijft dat alleen actuele eigenaar kerngegevens mag wijzigen. |
| Software Requirements Specification | Beschrijft dat zichtbaarheid alleen toegestane waarden mag hebben. |
| Database-informatie | Levels en LevelHistory/audit sluiten aan op de database-informatiebaseline. |
| Ontwerpbronnen | Business rules en command/event-register bevatten de bijbehorende regels, command en events. |
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 |
|---|---|---|
REQ-UC-DOC-AANB-004-001 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Niveaukerngegevens alleen wijzigbaar maken voor de actuele eigenaar van het niveau |
REQ-UC-DOC-AANB-004-002 | SRS-AUTH-001 SRS-CAT-001 SRS-TCH-006 AC-AUTH-001 AC-CAT-001 AC-TCH-006 | Collaborators blokkeren voor het wijzigen van niveaukerngegevens tenzij een aparte ontwerpregel dit expliciet toestaat |
REQ-UC-DOC-AANB-004-003 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | Wijzigingen aan naam, beschrijving en zichtbaarheid server-side valideren |
REQ-UC-DOC-AANB-004-004 | SRS-TCH-001 AC-TCH-001 | Alleen toegestane zichtbaarheidwaarden accepteren |
REQ-UC-DOC-AANB-004-005 | SRS-TCH-001 AC-TCH-001 | UpdatedByUserId en UpdatedAtUtc bij succesvolle wijziging bijwerken |
REQ-UC-DOC-AANB-004-006 | SRS-CAT-001 SRS-TCH-002 SRS-NFR-AUD-001 AC-CAT-001 AC-TCH-002 AC-NFR-AUD-001 | Wijzigingen aan niveaukerngegevens auditbaar vastleggen |
REQ-UC-DOC-AANB-004-007 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-009 SRS-TCH-006 AC-AUTH-001 AC-CAT-001 AC-LRN-009 AC-TCH-006 | Bij wijziging van kerngegevens geen categorieën, oefeningen, leerlingautorisaties of collaborators wijzigen |
REQ-UC-DOC-AANB-004-008 | SRS-TCH-007 AC-TCH-007 | Eigenaarschap niet via het kerngegevensformulier wijzigen |
REQ-UC-DOC-AANB-004-009 | SRS-AUTH-001 SRS-TCH-001 SRS-GUA-001 SRS-NFR-SEC-001 AC-AUTH-001 AC-TCH-001 AC-GUA-001 AC-NFR-SEC-001 | Verouderde of ongeautoriseerde bewerkpogingen veilig blokkeren |
REQ-UC-DOC-AANB-004-010 | SRS-CAT-006 SRS-TCH-002 AC-CAT-006 AC-TCH-002 | Na succesvolle wijziging de actuele niveaucontext tonen |