Skip to main content

UC-DOC-OEF-007 - Oefening kopiëren vanuit open niveau

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-OEF-007
NaamOefening kopiëren vanuit open niveau
DomeinDocent
SubdomeinOefeningen configureren en testen
Primaire actorDocent
Secundaire actor(en)Systeem
RolcontextDocentcontext met bewerkrechten binnen het geselecteerde niveau
Betrokken schermenDocent - Oefenaanbod, open niveau, oefeningdetail, kopieeractie, doelcontextkeuze
Gerelateerde usecasesUC-DOC-AANB-001, UC-DOC-AANB-002, UC-DOC-AANB-005, UC-DOC-OEF-001, UC-DOC-OEF-004, UC-DOC-OEF-005, UC-DOC-OEF-006
Primaire entiteitenExercises, ExerciseModules, Levels, Categories, LevelCategories
Secundaire entiteiten / eventsParentExerciseId, ModuleConfigurationJsonBase64, ExerciseHistory, LevelCollaborators, open/privé-niveaucontext
Gerelateerde popupsPOP-DOC-OEF-COPY-CONFIRM, POP-DOC-OEF-COPY-SUCCESS, POP-DOC-OEF-COPY-BLOCKED
PopupregisterPopup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een docent een bestaande oefening uit een open niveau als uitgangspunt gebruikt voor een eigen concrete oefening. De docent wijzigt de bron niet, maar laat OefenHub een zelfstandige kopie maken in een doelcontext waarbinnen de docent bewerkrechten heeft.

De kopie krijgt een ParentExerciseId-verwijzing naar de bronoefening. Daardoor blijft zichtbaar dat de nieuwe oefening is afgeleid van een bestaande oefening, terwijl latere wijzigingen in de kopie de bron niet beïnvloeden en latere wijzigingen in de bron de kopie niet stilzwijgend overschrijven.

De nieuwe kopie staat na aanmaak in onderhoud. Daarmee wordt voorkomen dat een gekopieerde oefening direct zichtbaar of startbaar wordt voor leerlingen voordat de docent naam, icoon, configuratie en status bewust heeft gecontroleerd.

3. Scope

3.1 Binnen scope

  • Selecteren van een kopieerbare oefening uit een open niveau.
  • Controleren of de docent de bron mag bekijken en de doelcontext mag bewerken.
  • Kiezen van het doelniveau en de doelcategorie voor de kopie.
  • Aanmaken van een zelfstandige Exercises-kopie met ParentExerciseId naar de bronoefening.
  • Kopiëren van naam, icoon, technische moduleverwijzing en moduleconfiguratie als startpunt.
  • Standaard plaatsen van de kopie in onderhoud.
  • Vastleggen van de kopieeractie in ExerciseHistory.
  • Blokkeren van kopiëren wanneer bron, doel of modulecontext ongeldig is.

3.2 Buiten scope

  • De bronoefening inhoudelijk wijzigen.
  • Bron- en kopieconfiguraties automatisch gesynchroniseerd houden.
  • Leerlingruns, resultaten of geschiedenis kopiëren.
  • Een open niveau aanmaken of wijzigen.
  • Doelcategorieën centraal beheren of migreren.
  • De gekopieerde oefening direct activeren zonder aparte statusactie.
  • Een modulemigratie uitvoeren tijdens het kopiëren.
  • Centrale modulebeheerflows uitvoeren.
  • Modulemigratie of technische moduleversies beheren.
  • Leerlingautorisaties toekennen of intrekken.
  • Relatie-uitnodigingen, docent-leerlingrelaties of docent-docentrelaties aanmaken.
  • Leerlingresultaten aanpassen of verwijderen.
  • Systeemnotificaties beheren of tonen.
  • Beheerderondersteuning of centrale contentbeheerflows uitvoeren.

4. Pre-condities

IDVoorwaarde
PRE-001De docent is ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003Er is een geldige docentcontext bepaald.
PRE-004De bronoefening bevindt zich in een niveau dat voor de docent als open niveau zichtbaar is.
PRE-005De bronoefening is kopieerbaar volgens de actuele zichtbaarheid en modulebeschikbaarheid.
PRE-006De docent heeft een doelniveau geselecteerd of kan een geldig doelniveau kiezen.
PRE-007De docent is eigenaar van het doelniveau of actieve collaborator met bewerkrechten.
PRE-008De doelcategorie bestaat binnen het doelniveau of wordt via een bestaande categoriekoppeling gekozen.
PRE-009De gekoppelde technische module van de bron is nog beschikbaar voor gebruik of kopie volgens de modulebeschikbaarheidsregels.

5. Post-condities

IDResultaat
POST-001Er is een nieuwe zelfstandige concrete oefening in de doelcontext aangemaakt wanneer alle controles slagen.
POST-002De nieuwe oefening verwijst via ParentExerciseId naar de bronoefening.
POST-003De nieuwe oefening verwijst naar een ExerciseModules-record dat volgens de actuele regels gebruikt mag worden.
POST-004De gekopieerde moduleconfiguratie is als startconfiguratie opgeslagen op de nieuwe oefening.
POST-005De kopie staat standaard In onderhoud, oftewel IsActive = false.
POST-006De kopieeractie is auditbaar vastgelegd in ExerciseHistory met ActionType COPY_FROM_PARENT.
POST-007De bronoefening, bronconfiguratie, bronhistorie en bestaande leerlingruns zijn ongewijzigd gebleven.
POST-008Bij blokkade of annulering ontstaat geen nieuwe oefening.

6. Trigger

De docent opent een kopieerbare oefening in een open niveau en kiest de actie om deze oefening als uitgangspunt te gebruiken voor een eigen oefening.

De docent bevestigt de kopieeractie nadat bron, doelniveau en doelcategorie zijn gecontroleerd.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentOpen niveau / oefeningdetailKiest een oefening om te kopiërenFrontend start kopieerflowSourceExerciseId
2SysteemBackendControleert bronzichtbaarheidBron moet via open niveau zichtbaar zijnLevels.Visibility = Open
3SysteemBackendControleert bronstatus en modulecontextBron moet veilig als startpunt gebruikt kunnen wordenExercises, ExerciseModules
4SysteemDoelcontextkeuzeLaadt doelniveaus en categorieënAlleen bewerkbare docentcontexten worden getoondLevels, LevelCategories
5DocentDoelcontextkeuzeKiest doelniveau en doelcategorieKeuze wordt server-side opnieuw gevalideerdTargetLevelId, TargetCategoryId
6DocentKopieeractieBevestigt kopiërenSysteem start transactionele aanmaakPOP-DOC-OEF-COPY-CONFIRM
7SysteemBackendMaakt kopiegegevens gereedNaam, icoon, module en configuratie worden als startpunt overgenomenExercise snapshot
8SysteemDatabaseMaakt nieuwe oefening aanNieuwe Exercises-record ontstaat in doelcontextExercises.ParentExerciseId
9SysteemDatabaseZet status in onderhoudKopie wordt niet direct zichtbaar voor leerlingenIsActive = false
10SysteemDatabaseLegt historie vastKopieeractie wordt auditbaar geregistreerdExerciseHistory COPY_FROM_PARENT
11SysteemFrontendToont nieuwe kopieDocent kan kopie controleren, bewerken of later activerenPOP-DOC-OEF-COPY-SUCCESS

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Bronniveau is niet langer open of niet meer zichtbaarBlokkeer kopiërenPOP-DOC-OEF-COPY-BLOCKEDGeen
ALT-0023Bronoefening is verwijderd, inactief of niet kopieerbaarBlokkeer kopiëren met veilige meldingPOP-DOC-OEF-COPY-BLOCKEDGeen
ALT-0033Gekoppelde module is niet meer beschikbaar voor nieuwe kopieënBlokkeer kopiëren; bron blijft historisch beschikbaarPOP-DOC-OEF-COPY-BLOCKEDGeen
ALT-0044Docent heeft geen bewerkbaar doelniveauToon dat kopiëren niet kan zonder doelcontextPOP-DOC-OEF-COPY-BLOCKEDGeen
ALT-0055Doelcategorie hoort niet bij doelniveauBlokkeer opslag en vraag geldige doelcontextInline validatieGeen
ALT-0066Docent annuleert bevestigingSluit flow zonder kopiePOP-DOC-OEF-COPY-CONFIRMGeen
ALT-0078Transactionele opslag faaltRollback; geen gedeeltelijke kopieGenerieke foutafhandelingGeen blijvende mutatie
ALT-00810Historie kan niet worden vastgelegdKopie wordt niet als succesvol afgerond beschouwdGenerieke foutafhandelingRollback

9. Business rules

IDRegel
BR-001Kopiëren vanuit een open niveau wijzigt de bronoefening niet.
BR-002Een gekopieerde oefening wordt een zelfstandige concrete oefening in de doelcontext.
BR-003De kopie krijgt een ParentExerciseId-verwijzing naar de bronoefening.
BR-004De kopie krijgt standaard IsActive = false.
BR-005Latere wijzigingen in de kopie beïnvloeden de bron niet.
BR-006Latere wijzigingen in de bron beïnvloeden bestaande kopieën niet automatisch.
BR-007Leerlingruns, resultaten en geschiedenis worden nooit meegekopieerd.
BR-008De docent moet de doelcontext kunnen bewerken op het moment van kopiëren.
BR-009De technische moduleverwijzing mag alleen worden overgenomen wanneer dit volgens modulebeschikbaarheid veilig is.
BR-010De kopieeractie moet auditbaar zijn met ActionType COPY_FROM_PARENT.
BR-011Kopiëren is geen modulemigratie en wijzigt ExerciseModules niet.
BR-012De kopie mag pas leerlingzichtbaar worden na een aparte activeringsflow.

10. Datavalidatie

Veld / objectValidatie
SourceExerciseIdMoet verwijzen naar een bestaande bronoefening in een zichtbaar open niveau.
SourceLevelIdMoet de open-zichtbaarheidsregel ondersteunen voor de docentcontext.
TargetLevelIdMoet bestaan en bewerkbaar zijn voor de docent als eigenaar of actieve collaborator.
TargetCategoryIdMoet actief gekoppeld zijn aan het doelniveau.
ExerciseModuleIdMoet volgens de actuele modulebeschikbaarheidsregels voor een nieuwe kopie gebruikt mogen worden.
ParentExerciseIdWordt server-side gezet op de bronoefening en is niet clientgestuurd.
ModuleConfigurationJsonBase64Wordt als startconfiguratie gekopieerd zonder inhoudelijke herinterpretatie door de frontend.
IsActiveWordt bij de kopie server-side false gezet.
CreatedByUserIdKomt uit de server-side docentcontext.
ExerciseHistory.ActionTypeMoet COPY_FROM_PARENT bevatten voor de kopieeractie.
ClientstateMag bronzichtbaarheid, doelrechten of modulebeschikbaarheid niet bepalen.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1ReadExercisesBronoefening wordt gelezen.
2ReadLevelsOpen zichtbaarheid van het bronniveau wordt gecontroleerd.
3ReadExerciseModulesModulebeschikbaarheid wordt gecontroleerd.
4ReadLevels / LevelCategoriesBewerkbare doelcontexten worden geladen.
8CreateExercisesNieuwe oefening wordt aangemaakt in de doelcontext.
8SetExercises.ParentExerciseIdVerwijzing naar de bronoefening wordt gezet.
9SetExercises.IsActiveNieuwe kopie wordt In onderhoud geplaatst.
10CreateExerciseHistoryCOPY_FROM_PARENT wordt vastgelegd.
11EventExerciseCopiedFromParentDomeinevent voor readmodelverversing en auditafleiding.

12. Geen datamutaties

EntiteitReden
Bron-Exercises-recordDe bronoefening wordt niet gewijzigd.
ExerciseRunsRuns en resultaten worden niet gekopieerd.
ExerciseRunProgressVoortgangsregels worden niet gekopieerd.
CategoriesCentrale categorie-identiteit wordt niet gewijzigd.
ExerciseModulesTechnische moduledefinities worden alleen gelezen.
StudentAuthorizationsDeze usecase kent geen leerlingtoegang toe en trekt geen leerlingtoegang in.
SystemMessagesDeze usecase maakt geen systeembericht aan.
PrivateMessagesDeze usecase maakt geen privébericht aan.
RelationshipInvitationsRelatievorming blijft buiten scope.
Roles / UserRolesRollen en roltoekenningen worden niet gewijzigd.

13. State diagram

Deze usecase raakt geen apart statusmodel, maar zet wel de gebruiksstatus van de nieuwe kopie expliciet op In onderhoud via Exercises.IsActive = false. De statuswijziging naar Actief hoort bij UC-DOC-OEF-006.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

Normale kopieerroute

Geblokkeerde kopieerroute

17. Popupverwijzingen

PopupKeyMomentDoel
POP-DOC-OEF-COPY-CONFIRMVóór definitief aanmaken van de kopieBevestigen dat een zelfstandige kopie wordt gemaakt.
POP-DOC-OEF-COPY-SUCCESSNa succesvolle kopieTerugkoppelen dat de kopie in onderhoud is aangemaakt.
POP-DOC-OEF-COPY-BLOCKEDWanneer bron-, doel- of modulecontext ongeldig isUitleggen dat kopiëren niet mogelijk is.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft dat docenten open oefeningen alleen via een expliciete kopieeractie als startpunt gebruiken en dat de bron niet wijzigt.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en testuitvoering en background jobs beschrijven de technische uitwerking. Beschrijf transactionele aanmaak van de kopie, ParentExerciseId, IsActive=false en ExerciseHistory COPY_FROM_PARENT.
Software Requirements SpecificationLeg eisen vast voor broncontrole, doelcontextcontrole, geen runkopie, audit en standaard In onderhoud.
Database-informatieControleer Exercises.ParentExerciseId, ExerciseHistory.ActionType COPY_FROM_PARENT en modulebeschikbaarheidsregels.
OntwerpbronnenBeschrijven business rules, command-register, event-register, popup-register en matrices bij.

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
REQ-UC-DOC-OEF-007-001SRS-CAT-006
SRS-LRN-009
SRS-TCH-002
AC-CAT-006
AC-LRN-009
AC-TCH-002
Een docent toestaan een kopieerbare oefening uit een open niveau als zelfstandige oefening in een eigen doelcontext te kopiëren
REQ-UC-DOC-OEF-007-002SRS-AUTH-001
SRS-CAT-006
SRS-LRN-009
SRS-TCH-002
AC-AUTH-001
AC-CAT-006
AC-LRN-009
AC-TCH-002
Vóór kopiëren server-side controleren of de bronoefening via een open niveau zichtbaar is
REQ-UC-DOC-OEF-007-003SRS-CAT-001
SRS-TCH-002
AC-CAT-001
AC-TCH-002
Vóór kopiëren controleren of de docent het doelniveau en de doelcategorie mag bewerken
REQ-UC-DOC-OEF-007-004SRS-LRN-009
SRS-TCH-002
AC-LRN-009
AC-TCH-002
Een gekopieerde oefening aanmaken met ParentExerciseId naar de bronoefening
REQ-UC-DOC-OEF-007-005SRS-LRN-009
SRS-TCH-002
AC-LRN-009
AC-TCH-002
Een gekopieerde oefening standaard In onderhoud plaatsen
REQ-UC-DOC-OEF-007-006SRS-LRN-003
SRS-TCH-002
AC-LRN-003
AC-TCH-002
Leerlingruns, voortgang of resultaten niet kopiëren bij het kopiëren van een oefening
REQ-UC-DOC-OEF-007-007SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
De kopieeractie auditbaar vastleggen in ExerciseHistory
REQ-UC-DOC-OEF-007-008SRS-AUTH-001
SRS-TCH-001
SRS-MOD-003
AC-AUTH-001
AC-TCH-001
AC-MOD-003
Kopiëren blokkeren wanneer bron, doelcontext of modulebeschikbaarheid ongeldig is
REQ-UC-DOC-OEF-007-009SRS-LRN-009
SRS-TCH-002
AC-LRN-009
AC-TCH-002
De bronoefening ongewijzigd laten bij het aanmaken van een kopie
REQ-UC-DOC-OEF-007-010SRS-TCH-001
AC-TCH-001
De kopie zelfstandig wijzigbaar maken zonder automatische synchronisatie met de bron