Skip to main content

Statusmodellen

Dit document beschrijft statuswaarden en statusovergangen voor domeinen waarin statusgedrag belangrijk is.

Tabelstructuur statusmodel

Statusmodel-IDDomeinEntiteitStatus / functionele stateBetekenisOvergang naarTrigger / command
SM-REL-001RelatiesRelationshipInvitationsPendingUitnodiging is aangemaakt maar nog niet verwerkt.Accepted / Rejected / Expired / CancelledAcceptatie, afwijzing, termijnverloop of intrekken
SM-REL-002RelatiesRelationshipInvitationsPending met ToUserId gevuldUitnodiging is gericht aan een bestaande OefenHub-gebruiker.Accepted / Rejected / Expired / CancelledOntvanger verwerkt uitnodiging via systeembericht of termijn verloopt
SM-REL-003RelatiesRelationshipInvitationsPending met ToEmail gevuld en ToUserId = nullUitnodiging is gericht aan een nog niet geregistreerd e-mailadres.Pending met ToUserId gevuld / Expired / CancelledRegistratie binnen 7 dagen, termijnverloop of intrekken
SM-REL-004RelatiesRelationshipInvitationsPending met ontbrekende doelrolkeuzeOntvanger is bekend maar moet de doelrol nog bewust kiezen of activeren voordat acceptatie afgerond kan worden.Accepted / Rejected / ExpiredRolkeuze + acceptatie, afwijzing of termijnverloop
SM-REL-005RelatiesRelationshipInvitationsAcceptedOntvanger heeft geaccepteerd; UserRelationships is aangemaakt of geactiveerd.EindstatusAcceptatie via UC-GEN-REL-005
SM-REL-006RelatiesRelationshipInvitationsRejectedOntvanger heeft afgewezen; er wordt geen relatie aangemaakt.EindstatusAfwijzing via UC-GEN-REL-005
SM-REL-007RelatiesRelationshipInvitationsExpiredUitnodiging is verlopen en niet meer accepteerbaar.EindstatusGeplande taak of runtime-vervalcontrole
SM-REL-008RelatiesRelationshipInvitationsCancelledUitnodiging is ingetrokken door de uitnodiger voordat deze is verwerkt.EindstatusIntrekactie door uitnodiger
SM-REL-009RelatiesUserRelationshipsActiefRelatie is geldig en kan relatieafhankelijke functionaliteit ontsluiten.InactiefOntkoppelen, beheeractie of domeinregel
SM-REL-010RelatiesUserRelationshipsInactiefRelatie is soft-gedeactiveerd en geeft geen toekomstige relatieafhankelijke toegang meer.Eindstatus of nieuw relatieprocesOntkoppeling via UC-GEN-REL-004
SM-REL-011RelatiesOntkoppelverzoekIn behandelingEr is een verzoek om de relatie te beëindigen, maar de relatie is nog niet direct gedeactiveerd.Geaccepteerd / afgewezen / vervallenVervolgafhandeling volgens relatieflow: acceptatie, afwijzing, verval of bevoegde deactivatie
SM-MSG-001BerichtenSystemMessagesOngelezenReadAtUtc is leeg en het systeembericht telt mee voor de gebruikergebonden ongelezenteller.GelezenOpenen via UC-GEN-MSG-003 of markeren als gelezen via UC-GEN-MSG-001
SM-MSG-002BerichtenSystemMessagesGelezenReadAtUtc is gevuld en het systeembericht telt niet als ongelezen.OngelezenMarkeren als ongelezen via UC-GEN-MSG-001
SM-MSG-003BerichtenPrivateMessageThreadParticipantsZichtbaar in mailboxDeletedAtUtc is leeg en de thread mag in het eigen berichtenoverzicht verschijnen.Uit eigen mailbox verwijderdVerwijderen privéthread via UC-GEN-MSG-005
SM-MSG-004BerichtenPrivateMessageThreadParticipantsUit eigen mailbox verwijderdDeletedAtUtc is gevuld; de thread blijft voor andere deelnemers en historie bestaan.Eindstatus voor deze mailboxzichtbaarheidGebruikergebonden mailboxverwijdering
SM-MSG-005BerichtenPrivéthread-readstateOngelezenEr bestaan nieuwe berichten of thread-events na de laatst bekende leespositie van deze deelnemer.GelezenOpenen via UC-GEN-MSG-003, openen van threadpagina met inline antwoordblok of markeren als gelezen via UC-GEN-MSG-001
SM-MSG-006BerichtenPrivéthread-readstateGelezenDe deelnemer heeft de relevante bericht- en thread-eventpositie gelezen.OngelezenMarkeren als ongelezen of nieuwe bericht-/thread-eventactiviteit via onder meer UC-GEN-MSG-002 en UC-GEN-MSG-004
SM-MSG-007BerichtenAntwoordverwerking privéthreadInvoer bezigGebruiker typt in het inline antwoordblok en heeft nog niet verzonden of geannuleerd.Verzonden / geannuleerd / geblokkeerdUC-GEN-MSG-004
SM-MSG-008BerichtenAntwoordverwerking privéthreadVerzondenNieuw privébericht is transactioneel opgeslagen en threadmetadata/readstate zijn bijgewerkt.Eindstatus voor deze verzendactieUC-GEN-MSG-004
SM-MSG-009BerichtenAntwoordverwerking privéthreadGeblokkeerdVerzenden is geweigerd door validatie, autorisatie, featurestatus of relatiecontext.Invoer bezig of eindstatus zonder opslagUC-GEN-MSG-004
SM-MSG-010BerichtenNieuw-privéberichtverwerkingInvoer bezigGebruiker heeft opstelpagina geopend en nog niet verzonden of geannuleerd.Verzonden / geannuleerd / geblokkeerdUC-GEN-MSG-002
SM-MSG-011BerichtenNieuw-privéberichtverwerkingVerzondenThreadcontext, participants, bericht en readstate zijn transactioneel opgeslagen.Eindstatus voor deze verzendactieUC-GEN-MSG-002
SM-MSG-012BerichtenNieuw-privéberichtverwerkingGeblokkeerdVerzenden is geweigerd door validatie, autorisatie, featurestatus of relatiecontext.Invoer bezig of eindstatus zonder opslagUC-GEN-MSG-002
SM-MSG-013BerichtenPrivéthread-verwijderverwerkingBevestiging gevraagdGebruiker heeft verwijderactie gekozen en de bevestigingspopup is zichtbaar.Verwijderd voor participant / geannuleerd / geblokkeerdUC-GEN-MSG-005
SM-MSG-014BerichtenPrivéthread-verwijderverwerkingVerwijderd voor participantEigen participantregel is gemarkeerd als uit de mailbox verwijderd.Eindstatus voor deze mailboxzichtbaarheidUC-GEN-MSG-005
SM-MSG-015BerichtenPrivéthread-verwijderverwerkingGeblokkeerdVerwijderen is geweigerd door objecttype, autorisatie, reeds verwijderde context of technische fout.Geen mutatie of bestaande eindstatusUC-GEN-MSG-005
SM-TIC-001MeldingenTicketsNieuwMelding is aangemaakt en nog niet opgepakt.In behandeling / Wacht op gebruiker / GeslotenAssignment, beheerreactie of sluitactie
SM-EXE-001OefenenExerciseRunsLopendRun is gestart en nog niet afgerond.Afgerond / OnderbrokenLaatste vraag afgerond of gebruiker verlaat run

Meldingen — ticketstatus en gebruikersstatus

Status / toestandTechnische bronBetekenisOvergang / triggerAudit
NewTickets.StatusMelding is aangemaakt en heeft geen actieve beheerderkoppeling.UC-GEN-TIC-001; UC-GEN-TIC-014 na beheerderheropenenTicketHistory
InProgressTickets.Status + actieve TicketAssignmentsMinimaal één beheerder behandelt de melding.UC-GEN-TIC-010; gebruikersreactie op WaitingForUser; heropenen met actieve assignmentTicketHistory
WaitingForUserTickets.StatusBeheer wacht op reactie van de melder.UC-GEN-TIC-011 wanneer externe informatie wordt gevraagdTicketHistory en systeembericht
ClosedTickets.Status + TicketClosuresMelding is formeel gesloten of opgelost.UC-GEN-TIC-005, UC-GEN-TIC-013, UC-GEN-TIC-015TicketClosures, TicketHistory
OpgelostAfgeleid uit actuele TicketClosures.ReopenDeadlineUtcGebruikersgerichte toestand zolang heropenen nog mogelijk is.Formele oplossing met heropentermijnGeen aparte statusrij
GeslotenAfgeleidGebruikersgerichte toestand na acceptatie, verlopen heropentermijn of sluiting zonder heropenmogelijkheid.UC-GEN-TIC-005, UC-GEN-TIC-006 of periodieke verwerking van verlopen termijn via UC-GEN-TIC-016TicketHistory waar van toepassing

Regel: externe beheercommunicatie, oplossen/sluiten en doorzetten naar docent vereisen een actieve behandelcontext. Een melding met status New moet daarom eerst via beheerderkoppeling behandelbaar worden gemaakt.

Regel: verlopen heropentermijnen worden niet door een afzonderlijke schedulerjob per melding verwerkt, maar door een periodieke TickerQ-verwerking die minimaal iedere 12 uur op actuele databasecriteria controleert welke gesloten meldingen gebruikersgericht definitief Gesloten zijn.

Profiel, voorkeuren en toegankelijkheid

ToestandTechnische bronBetekenisOvergang / triggerAudit
Profiel volledigApplicatieprofielDe verplichte profielcontext, waaronder niveau waar verplicht, is aanwezig.Profielgegevens wijzigen of verplicht niveau instellenProfielhistory/logging waar ingericht
Niveau ontbreektApplicatieprofielDe gebruiker mist een verplicht niveau en wordt naar profielcontext geleid.Eerste login of openen van beschermde context zonder niveauLogging waar nodig
Toegankelijkheid actiefFeaturetoggle + UserSettingsToegankelijkheidsinstellingen worden aangeboden en toegepast.Feature staat aan; gebruiker wijzigt eigen instellingenInstellingwijziging
Toegankelijkheid uitgeschakeldFeaturetogglePagina/bediening wordt niet aangeboden; bestaande waarden blijven bewaard maar worden niet toegepast.Beheer zet feature uitBeheerhistory
Voorkeur actiefUserSettingsVoorkeur beïnvloedt presentatiegedrag binnen de toegestane context.Gebruiker wijzigt voorkeurInstellingwijziging

Systeemnotificaties

ToestandTechnische bronBetekenisOvergang / triggerAudit
GeplandUTC-startmoment in toekomstNotificatie bestaat maar is nog niet zichtbaar.Tijdvenster bereikt startmomentBeheerhistory, geen gebruikersmutatie
ActiefUTC-startmoment bereikt en eindmoment leeg of toekomstNotificatie kan worden getoond aan passende doelgroep.UC-GEN-NOT-001Geen server-side gezienlog
Bijna verlopenAfgeleid: eindmoment minder dan 24 uur in toekomstBeheerindicatie; geen aparte technische trigger.Tijd verstrijktGeen aparte statusmutatie
VerlopenUTC-eindmoment in verledenNotificatie wordt niet meer getoond.Tijd verstrijkt of handmatig uitschakelenBeheerhistory
Gesloten in huidige reeksRuntime UI-stateNotificatie is door gebruiker gesloten en wordt niet direct opnieuw in dezelfde reeks getoond.UC-GEN-NOT-002Geen persistente status
Gemarkeerd in browserBrowsermarkerOncePerBrowser-notificatie is in deze browser verwerkt.UC-GEN-NOT-002 / UC-GEN-NOT-003Geen server-side registratie
Statusmodel-IDDomeinEntiteitStatus / functionele stateBetekenisOvergang naarTrigger / command
SM-ACC-001AccountUsers + identity-providercontextGeen intern accountDe identity provider heeft een gebruiker geauthenticeerd, maar OefenHub kent nog geen intern account voor de ExternalId.Actief intern account / provisioning geblokkeerdUC-GEN-ACC-001
SM-ACC-002AccountUsersActief intern accountHet interne account bestaat en Users.IsActive = true.Gedeactiveerd/geanonimiseerdAccountverwijdering, beheeractie of anonimisering
SM-ACC-003AccountUsersGedeactiveerd of geanonimiseerdHet account mag geen reguliere OefenHub-toegang meer krijgen.Eindtoestand of beheerherstel buiten deze usecasesUC-GEN-ACC-002, UC-GEN-ACC-004, UC-GEN-ACC-005
SM-ACC-004AccountcontextAfgeleide sessiecontextGeen actieve rolcontextDe gebruiker is geauthenticeerd en actief, maar heeft geen bruikbare actieve rolcontext.Beperkte context zonder rol / roltoekenning via aparte flowUC-GEN-ACC-003
SM-ACC-005AccountcontextAfgeleide sessiecontextOnvolledige verplichte contextEen verplichte profiel- of niveaucontext ontbreekt.Reguliere context na bestaande profiel- of niveauflowUC-GEN-ACC-003
SM-ACC-006SessieverwerkingTechnische applicatiesessieOefenHub-sessie actiefDe gebruiker heeft een geldige lokale applicatiecontext.Sessie beëindigd / verlopenUC-GEN-ACC-006
SM-ACC-007SessieverwerkingTechnische applicatiesessieOefenHub-sessie beëindigdLokale applicatiecontext is beëindigd of ongeldig.Nieuwe sessie na loginUC-GEN-ACC-006

Leerling- en docentstatuscontexten

Exercise run lifecycle

Functionele toestanden van een exercise run:

  • Created / aangemaakt;
  • InProgress / bezig of hervatbaar;
  • Interrupted / niet afgerond maar verlaten, functioneel afgeleid uit ontbrekend afrondmoment en opgeslagen voortgang;
  • Completed / afgerond met opgeslagen totalen en statistieken;
  • TestRun / docenttest, herkenbaar via testvlag en uitgesloten van normale leerlinggeschiedenis.

Deze toestanden worden primair afgeleid uit bestaande runvelden zoals startmoment, afrondmoment, testvlag en voortgang. Er wordt geen aparte zware statusmachine vereist voor normale leerlingruns.

Oefeningstatus

Concrete oefeningen kennen minimaal de functionele toestand In onderhoud (IsActive = false) en Actief (IsActive = true). Alleen actieve oefeningen zijn beschikbaar voor normaal leerlinggebruik. Wijziging van status vereist bevoegde docent- of beheercontext en auditregistratie.

Gedeelde oefening

Een ontvangen gedeelde oefening kan zichtbaar, gestart, afgerond via eigen run, opnieuw gemaakt of uit het eigen overzicht verwijderd zijn. Verwijdering uit het overzicht verwijdert geen afgeronde runs uit geschiedenis.

Collaboratorstatus

Collaboratorkoppelingen zijn actief of inactief. Inactieve collaborators behouden historie maar leveren geen actuele bewerkrechten meer op. Eigenaarschapsoverdracht gebruikt een eigen overdrachtsregistratie en is geen collaboratorstatus.

Live-meekijksessie

Een live-meekijksessie kent functioneel de toestanden beschikbaar, gestart, actief, beëindigd door gebruiker, beëindigd door leerlingcontext of beëindigd door verbindingsverlies. Historische vastlegging gebeurt via start- en eindmomenten in LiveViewAudit of gelijkwaardige audit.

Invulregels

OnderwerpRegel
Afgeleide statusBenoem wanneer een status niet als losse waarheid wordt opgeslagen maar runtime wordt afgeleid.
TriggerElke overgang moet een functionele trigger of command hebben.
HistorieBenoem of een overgang history/audit moet opleveren.
Functionele stateGebruik een functionele state wanneer dezelfde technische status aanvullende betekenis krijgt door velden zoals ToUserId, ToEmail of doelrolkeuze.
Geen UI-statusLeg hier domeinstatus vast, geen stylingstatus.

Beheerder- en ouder-/voogdcontexten

Statusmodel-IDDomeinEntiteitStatus / functionele stateBetekenisOvergang naarTrigger / command
SM-BEH-NOT-001SysteemnotificatiesSiteNotificationsGeplandStartmoment ligt in de toekomst.Actief / UitgeschakeldTijdverloop of uitschakelen
SM-BEH-NOT-002SysteemnotificatiesSiteNotificationsActiefStartmoment bereikt en geen verlopen eindmoment.Bijna verlopen / Verlopen / UitgeschakeldTijdverloop of uitschakelen
SM-BEH-NOT-003SysteemnotificatiesSiteNotificationsBijna verlopenEindmoment ligt minder dan 24 uur in de toekomst.Verlopen / UitgeschakeldTijdverloop of uitschakelen
SM-BEH-NOT-004SysteemnotificatiesSiteNotificationsVerlopenEindmoment ligt in het verleden.EindstatusTijdverloop
SM-BEH-CAT-001CategoriebeheerCategoriesActiefCategorie is zichtbaar/selecteerbaar volgens contextregels.Uitgefaseerd / InactiefStatuswijziging of migratie
SM-BEH-CAT-002CategoriebeheerCategoriesUitgefaseerdCategorie blijft historisch herleidbaar maar is niet langer kiesbaar voor nieuwe koppelingen.Inactief / HersteldStatuswijziging
SM-BEH-CAT-003CategoriebeheerCategoryMigrationVoorbereidBroncategorie, doelcategorie en impact zijn gecontroleerd.Uitgevoerd / Geannuleerd / GeblokkeerdMigratiebevestiging of validatiefout
SM-BEH-CAT-004CategoriebeheerCategoryMigrationUitgevoerdKoppelingen zijn naar doelcategorie overgezet en history is vastgelegd.EindstatusMigrateCategory
SM-BEH-MOD-001ModulebeheerExerciseModulesActiefModule is inzetbaar voor nieuwe of bestaande concrete oefeningen.Inactief / Alleen testzichtbaarStatuswijziging
SM-BEH-MOD-002ModulebeheerExerciseModulesInactiefModule is niet inzetbaar voor nieuwe configuraties.ActiefStatuswijziging
SM-BEH-MOD-003ModulebeheerExerciseModulesTestzichtbaarModule is zichtbaar voor TestDocent-context, los van normale inzetbaarheid.Niet testzichtbaarTestzichtbaarheid wijzigen
SM-BEH-MOD-004ModulebeheerExerciseModuleMigrationProefEén oefening wordt gecontroleerd gemigreerd.Goedgekeurd / GeblokkeerdProefmigratiecontrole
SM-BEH-MOD-005ModulebeheerExerciseModuleMigrationUitgevoerdScope is gemigreerd en audit is vastgelegd.EindstatusModulemigratie
SM-BEH-ACC-001AccountbeheerUsersActiefAccount kan reguliere OefenHub-context krijgen.Gedeactiveerd / GeanonimiseerdBeheerderactie of accountverwijdering
SM-BEH-ACC-002AccountbeheerUsersGedeactiveerdAccount is tijdelijk geblokkeerd maar historie blijft bestaan.Actief / GeanonimiseerdHeractiveren of anonimisering
SM-BEH-ACC-003AccountbeheerUsersGeanonimiseerdActuele persoonsgegevens en toegang zijn beëindigd.EindstatusAnonimisering
SM-OVG-LIVE-001Ouder/voogd liveLiveViewAuditActiefOuder/voogd kijkt live mee met actieve oefenrun.Beëindigd / VerbrokenStopactie, sessie-einde of verbindingsverlies
SM-OVG-LIVE-002Ouder/voogd liveLiveViewAuditBeëindigdMeekijksessie is normaal afgesloten.EindstatusEndGuardianLiveView
SM-OVG-LIVE-003Ouder/voogd liveLiveViewAuditVerbrokenMeekijksessie is beëindigd door verbindingsverlies of leerlingcontext-einde.EindstatusReconnect mislukt of run beëindigd

Ouder-/voogdresultaten en live meekijken

IDDomeinObject / contextStatus / toestandBetekenisVolgende toestandTrigger
SM-OVG-RES-001Ouder/voogd resultatenResultaatraadplegingGeautoriseerdActieve ouder-/voogdrelatie bestaat en de run hoort bij het gekoppelde kind.Read-only getoondDetail-, filter- of exportverzoek
SM-OVG-RES-002Ouder/voogd resultatenResultaatraadplegingGeweigerdRelatie ontbreekt, is beëindigd of route/run hoort niet bij de relatie.EindstatusServer-side autorisatiecontrole
SM-OVG-LIVE-004Ouder/voogd liveBrowse-modusBrowseMeekijker bekijkt lokaal een andere vraag dan de actuele livevraag.LiveTerug naar actuele livevraag
SM-OVG-LIVE-005Ouder/voogd liveReconnectHerstelpogingenRealtimeverbinding probeert maximaal vijf keer te herstellen.Live / VerbrokenSignalR-disconnect

Read-only overzichts-, selectie-, filter-, resultaat- en PDF-exportflows wijzigen geen persistent statusobject. Alleen daadwerkelijke live-meekijksessies hebben een auditbare lifecycle via LiveViewAudit met start- en eindmoment.