UC-DOC-OEF-002 - Nieuwe oefening aanmaken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-OEF-002 |
| Naam | Nieuwe oefening aanmaken |
| Domein | Docent |
| Subdomein | Oefeningen configureren en testen |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Docentcontext met toegang tot het geselecteerde niveau |
| Betrokken schermen | Docent - Oefeningoverzicht, nieuwe oefening-flow |
| Gerelateerde usecases | UC-DOC-OEF-001, UC-DOC-OEF-003, UC-DOC-OEF-004, UC-DOC-OEF-006 |
| Primaire entiteiten | Levels, LevelCategories, Categories, Exercises |
| Secundaire entiteiten / events | ExerciseModules, LevelCollaborators, ExerciseHistory |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een docent vanuit een categorie binnen een niveau de flow start om een nieuwe concrete oefening aan te maken. De usecase vormt de veilige ingang naar modulekeuze en configuratie.
De usecase maakt zelf nog geen definitief Exercises-record aan. De concrete oefening ontstaat pas wanneer de technische module is gekozen en de modulespecifieke configuratie geldig is opgeslagen.
Dit voorkomt half aangemaakte oefeningen wanneer de docent de flow annuleert of de browser sluit vóór definitieve opslag.
3. Scope
3.1 Binnen scope
- Starten van de nieuwe-oefening-flow.
- Controleren van docentrol, niveaucontext en bewerkrechten.
- Controleren van actieve categoriekoppeling.
- Voorbereiden van veilige aanmaakcontext.
- Routeren naar technische module selecteren.
- Blokkeren wanneer aanmaken niet is toegestaan.
3.2 Buiten scope
- Technische module selecteren.
- Modulespecifieke configuratie opslaan.
- Oefening activeren.
- Oefening testen.
- Modulebeheer uitvoeren.
- Leerlingresultaten bekijken of wijzigen.
- Relatie-uitnodigingen of docent-leerlingrelaties beheren.
- Account-, profiel- of toegankelijkheidsinstellingen wijzigen.
- Systeemnotificaties beheren of tonen.
- Centrale beheerderflows voor modules of categorieën uitvoeren.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De docent is ingelogd. |
| PRE-002 | De gebruiker heeft een actieve docentrol. |
| PRE-003 | Er is een geldig niveau geselecteerd. |
| PRE-004 | De docent heeft bewerkrechten binnen het niveau. |
| PRE-005 | Er is een categorie geselecteerd. |
| PRE-006 | De categorie is actief gekoppeld aan het niveau. |
| PRE-007 | De feature voor oefenbeheer is beschikbaar. |
| PRE-008 | Er is minimaal één selecteerbare technische module of een duidelijke blokkade mogelijk. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De aanmaakflow is gestart binnen geldige context. |
| POST-002 | De docent is naar modulekeuze geleid. |
| POST-003 | Er is geen definitieve oefening opgeslagen. |
| POST-004 | Er is geen configuratiepayload opgeslagen. |
| POST-005 | Er is geen leerlingzichtbaarheid ontstaan. |
| POST-006 | Ongeldige context is geblokkeerd. |
6. Trigger
De docent kiest in het oefeningoverzicht van een categorie voor Nieuwe oefening.
Een directe route naar dezelfde flow moet dezelfde server-side controles doorlopen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Oefeningoverzicht | Kiest Nieuwe oefening | Frontend start aanmaakroute | LevelId, CategoryId |
| 2 | Systeem | Backend | Controleert docentrol | Alleen actieve docentcontext mag verder | UserRoles |
| 3 | Systeem | Backend | Controleert niveau | Niveau moet toegankelijk zijn | Levels |
| 4 | Systeem | Backend | Controleert bewerkrechten | Eigenaar of collaborator met bewerkrechten mag verder | LevelCollaborators |
| 5 | Systeem | Backend | Controleert categoriekoppeling | Categorie moet actief gekoppeld zijn | LevelCategories |
| 6 | Systeem | Backend | Controleert modulebeschikbaarheid | Vervolgflow is mogelijk of wordt geblokkeerd | ExerciseModules |
| 7 | Systeem | Backend | Bouwt aanmaakcontext | Context wordt niet als domeinrecord opgeslagen | Tijdelijke flowcontext |
| 8 | Systeem | Frontend | Opent modulekeuze | Docent ziet de volgende stap | UC-DOC-OEF-003 |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Geen actieve docentrol | Blokkeer aanmaakroute | Routeguard | Geen |
| ALT-002 | 3 | Niveau bestaat niet of is niet toegankelijk | Leid terug naar oefenaanbod | Inline melding | Geen |
| ALT-003 | 4 | Geen bewerkrechten | Blokkeer Nieuwe oefening | Toegangafhandeling | Geen |
| ALT-004 | 5 | Categorie is niet gekoppeld | Blokkeer flow | Inline melding | Geen |
| ALT-005 | 6 | Geen selecteerbare modules | Toon dat aanmaken niet mogelijk is | Inline melding | Geen |
| ALT-006 | 8 | Docent annuleert vóór modulekeuze | Keer terug naar oefeningoverzicht | Geen popup | Geen |
| ALT-007 | 8 | Browser sluit vóór opslag | Geen half record ontstaat | Niet van toepassing | Geen |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen docenten met bewerkrechten mogen een nieuwe-oefening-flow starten. |
| BR-002 | Een nieuwe oefening hoort altijd bij één niveau en één categorie. |
| BR-003 | De categorie moet actief aan het niveau gekoppeld zijn. |
| BR-004 | De flow mag geen half bruikbaar Exercises-record aanmaken. |
| BR-005 | Nieuwe oefeningen worden bij definitieve opslag standaard In onderhoud. |
| BR-006 | Starten van de flow maakt niets zichtbaar voor leerlingen. |
| BR-007 | Aanmaakcontext wordt opnieuw valideerbaar gehouden. |
| BR-008 | Clientstate is niet leidend voor autorisatie. |
| BR-009 | De flow verstuurt geen systeemberichten. |
| BR-010 | Er ontstaat geen aparte aanmaakstatusentiteit. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| UserId | Komt uit server-side sessiecontext. |
| Docentrol | Moet actief zijn. |
| LevelId | Moet toegankelijk zijn. |
| CategoryId | Moet actief gekoppeld zijn. |
| Bewerkrechten | Moeten uit eigenaarschap of collaboratorcontext komen. |
| Modulebeschikbaarheid | Minimaal één module moet selecteerbaar zijn of de flow blokkeert. |
| Aanmaakcontext | Moet opnieuw server-side valideerbaar zijn. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 2 | Read | UserRoles / Roles | Docentrol wordt gecontroleerd. |
| 3 | Read | Levels | Niveau wordt gelezen. |
| 4 | Read | LevelCollaborators | Bewerkrechten worden gecontroleerd. |
| 5 | Read | LevelCategories | Categoriekoppeling wordt gecontroleerd. |
| 6 | Read | ExerciseModules | Beschikbaarheid wordt gecontroleerd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Exercises | Nog geen definitieve opslag. |
| ExerciseHistory | Nog geen oefeningwijziging. |
| ExerciseModules | Alleen beschikbaarheid lezen. |
| ModuleConfigurationJsonBase64 | Geen configuratie opgeslagen. |
| ExerciseRuns | Geen run gestart. |
| StudentAuthorizations | Geen leerlingtoegang gewijzigd. |
| SystemMessages | Geen communicatie. |
13. State diagram
Geen persistent state diagram. De flow start een aanmaakproces, maar de oefeningstatus ontstaat pas bij geldige configuratieopslag.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Nieuwe oefening-flow starten
16.2 Geen bewerkrechten
17. Popupverwijzingen
| PopupKey | Moment | Toelichting |
|---|---|---|
| Niet van toepassing | Deze usecase gebruikt geen domeinspecifieke popup. | Routeguard-, inline validatie- of componentafhandeling volstaat. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Nieuwe oefening start vanuit categorie binnen niveau. |
| Functioneel Ontwerp | Definitieve oefening ontstaat pas na modulekeuze en configuratie. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Flowcontext wordt opnieuw server-side gevalideerd. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Geen half aangemaakte oefening bij annuleren. |
| Software Requirements Specification | Alleen bevoegde docenten mogen de flow starten. |
| Database | Geen aparte aanmaakstatusentiteit. |
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-OEF-002-001 | SRS-LRN-009 SRS-TCH-002 AC-LRN-009 AC-TCH-002 | Bied Nieuwe oefening alleen aan bij bewerkrechten |
REQ-UC-DOC-OEF-002-002 | SRS-AUTH-001 SRS-CAT-006 SRS-TCH-002 AC-AUTH-001 AC-CAT-006 AC-TCH-002 | Controleer docentrol en niveaucontext server-side |
REQ-UC-DOC-OEF-002-003 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Controleer actieve categoriekoppeling |
REQ-UC-DOC-OEF-002-004 | SRS-TCH-001 SRS-MOD-003 AC-TCH-001 AC-MOD-003 | Leid naar modulekeuze bij geldige context |
REQ-UC-DOC-OEF-002-005 | SRS-LRN-001 SRS-TCH-002 AC-LRN-001 AC-TCH-002 | Maak nog geen definitieve oefening aan bij starten van de flow |
REQ-UC-DOC-OEF-002-006 | SRS-LRN-009 SRS-TCH-002 AC-LRN-009 AC-TCH-002 | Voorkom half aangemaakte oefeningen bij afbreken |
REQ-UC-DOC-OEF-002-007 | SRS-TCH-001 SRS-MOD-003 AC-TCH-001 AC-MOD-003 | Blokkeer de flow wanneer geen module selecteerbaar is |
REQ-UC-DOC-OEF-002-008 | SRS-LRN-001 SRS-TCH-001 AC-LRN-001 AC-TCH-001 | Maak niets zichtbaar voor leerlingen door alleen de flow te starten |
REQ-UC-DOC-OEF-002-009 | SRS-AUTH-001 SRS-LRN-009 SRS-TCH-001 AC-AUTH-001 AC-LRN-009 AC-TCH-001 | Wijzig geen leerlingtoegang of communicatie |
REQ-UC-DOC-OEF-002-010 | SRS-TCH-001 SRS-POP-001 AC-TCH-001 AC-POP-001 | Gebruik geen domeinspecifieke popup voor deze route |