Skip to main content

Leerling-, docent-, ouder-/voogd- en beheerderflows technisch

11.1 Doel van dit hoofdstuk

Dit hoofdstuk beschrijft hoe de rolgebonden OefenHub-flows technisch worden samengesteld uit de eerder beschreven modules, services, autorisatiecontroles, readmodels en UI-compositie. Het hoofdstuk introduceert geen nieuwe functionele eisen, maar vertaalt de functionele rolflows naar technische flowpatronen binnen de middel-zware modulaire monoliet.

De rolflows zijn geen zelfstandige datalaag en geen aparte module. Zij zijn een technische compositielaag over bestaande domeinmodules zoals Identity, Authorization, Catalog, Practice, Relationships, Communication, Support, LiveMonitoring, Admin, Reporting en Scheduling.

11.2 Scope en afbakening

Dit hoofdstuk beschrijft:

  • de technische opbouw van rolgebonden routes, schermflows en service-aanroepen;
  • de scheiding tussen UI-compositie en domeinlogica;
  • de vaste server-side contextcontrole per rol;
  • de belangrijkste leerling-, docent-, ouder-/voogd- en beheerderflows;
  • de technische omgang met combinatierollen;
  • het verschil tussen lege toestanden, fouttoestanden en autorisatieafwijzingen;
  • hoe cross-module workflows binnen rolflows worden gecoördineerd.

Dit hoofdstuk beschrijft niet opnieuw:

  • de volledige functionele scherminhoud;
  • alle requirements en acceptatiecriteria;
  • de databasekolommen per tabel;
  • de volledige Blazor-componentstructuur;
  • de detailuitwerking van individuele domeinmodules.

Voor die onderdelen gelden de betreffende Functioneel Ontwerp, Software Requirements Specification, schermdocumentatie, database-informatie en de betreffende hoofdstukken van het Technisch Ontwerp als bron.

11.3 Ontwerpuitgangspunten

Voor alle rolflows gelden de volgende technische uitgangspunten.

UitgangspuntTechnische regel
Server-side context is leidendDe actieve gebruiker, accountstatus, rollen, relaties, autorisaties en objecttoegang worden server-side bepaald.
UI is nooit autorisatiebewijsRoutes, querystrings, browserstate, zichtbare knoppen, geselecteerde tabs of eerder geladen schermdata mogen toegang niet afdwingen.
Rolflows introduceren geen brondataBrondata blijft eigendom van de domeinmodules. Rolflows combineren alleen bestaande modulefunctionaliteit.
Web bevat geen domeinlogicaOefenHub.Web composeert pagina’s en viewmodels via publieke modulecontracten.
Iedere command hercontroleert contextStarten, wijzigen, exporteren, live meekijken, accepteren, verwijderen of sluiten voert opnieuw server-side autorisatie uit.
Iedere query is gescopedQuery’s worden server-side beperkt tot de toegestane dataset voor de actuele rolcontext.
Leeg is niet hetzelfde als verbodenGeen resultaten, geen gekoppelde kinderen, geen online leerlingen of geen open meldingen zijn geldige lege toestanden.
Foutafhandeling lekt geen dataToegangsfouten tonen geen objectnamen, kindnamen, runinhoud, antwoorden, tokens of technische payloads wanneer toegang ontbreekt.

11.4 Technische positie van rolflows

Rolflows worden technisch opgebouwd vanuit OefenHub.Web en publieke contracten van de modules. De route of pagina bepaalt alleen welke flow wordt gestart; de daadwerkelijke toegangscontrole ligt in Authorization en de domeinmodule die eigenaar is van het object.

Het diagram is een vereenvoudigde flowkaart. Het betekent niet dat Web directe toegang heeft tot DbContexts, entities of module-interne implementaties. Iedere pijl staat voor publieke contracts, query-services, command-services of page-composition-aanroepen.

11.5 Generiek flowpatroon

Iedere rolflow volgt hetzelfde technische basispatroon.

StapTechnische verwerking
1. Route openenOefenHub.Web ontvangt de route en laadt alleen minimale routeparameters.
2. Sessiecontext lezenIdentity- en Authorization-context worden server-side opgehaald.
3. Rolcontext bepalenAuthorization bepaalt of de gevraagde rolcontext beschikbaar is.
4. Objecttoegang controlerenDe eigenaar-module valideert objecttoegang via publieke contracts.
5. Readmodel opbouwenQuery-services leveren alleen gescopete data terug.
6. UI tonenWeb toont viewmodels, acties en lege toestanden op basis van de server-side uitkomst.
7. Command uitvoerenBij iedere mutatie of export wordt stap 2 t/m 4 opnieuw uitgevoerd.
8. Logging/correlationIedere command, relevante query en foutafhandeling draagt dezelfde correlation-context.

11.6 Rolcontext en routecontext

De actieve rolcontext wordt niet afgeleid uit een URL-segment of browserselectie. Een route zoals /docent/... of /ouder/... kan alleen een gevraagde context aanduiden. De server bepaalt of die context daadwerkelijk geldig is.

ContextTechnische bron
Ingelogde gebruikerExterne identity provider plus intern Identity-account.
Account actiefIdentity controleert interne accountstatus.
Beschikbare rollenAuthorization leest interne roltoekenningen.
Actieve rolcontextAuthorization bepaalt de actuele context volgens rolregels en gevraagde route.
ObjecttoegangDomeinmodule valideert toegang tot leerling, kind, run, ticket, relatie, bericht of beheerobject.

De rol Leerling is niet combineerbaar met ouder/voogd, docent of beheerder. Ouder/voogd, docent en beheerder kunnen wel gecombineerd voorkomen. Bij gecombineerde frontpages geldt de prioriteit beheerder, daarna docent, daarna ouder/voogd. Binnen specifieke routes blijft de gekozen rolcontext strikt gescheiden.

11.7 Leerlingflows

Leerlingflows draaien primair om oefenen, voortgang, resultaten, geschiedenis, gedeelde oefeningen, berichten, meldingen en profiel-/voorkeursinstellingen. De leerlingcontext wordt altijd server-side bepaald en gekoppeld aan het actieve niveau en de toegankelijke cataloguscontext.

11.7.1 Technische modules per leerlingflow

FlowPrimaire moduleBelangrijke betrokken modules
Leerling-frontpagePractice / CatalogAuthorization, Communication, Support
Oefenaanbod tonenCatalogAuthorization, Practice
Oefening startenPracticeAuthorization, Catalog, ExerciseModuleHost
Oefening hervattenPracticeAuthorization, Catalog
Vraag beantwoordenPracticeExerciseModuleHost, LiveMonitoring
Resultaat tonenPracticeExerciseModuleHost, Reporting
Geschiedenis bekijkenPracticeAuthorization, Reporting
PDF downloadenReportingPractice, Authorization, ExerciseModuleHost
Oefening delenPracticeRelationships, Communication, Authorization
Ontvangen gedeelde oefeningenPracticeRelationships, Communication
BerichtenCommunicationAuthorization
MeldingenSupportCommunication, Authorization

11.7.2 Leerling-frontpage

De leerling-frontpage is een readmodelcompositie. Zij mag geen oefenruns, relaties, berichten of autorisaties wijzigen.

Technische regels:

  • Web vraagt gescopete frontpagegegevens op via publieke query-services.
  • Catalog levert alleen categorieën en oefeningen die binnen de actuele leerling-, niveau- en autorisatiecontext zichtbaar zijn.
  • Practice levert recente oefeningen, populaire categorieën, statistiekblokken en eventueel een hervatbare run.
  • Communication en Support leveren badges of actie-indicaties, maar de zichtbaarheid daarvan kan tijdens een actieve oefening worden onderdrukt.
  • Tellerwaarden zijn readmodels en geen brondata.

11.7.3 Oefening starten

Bij het starten van een oefening wordt geen vertrouwen gesteld in de route, de zichtbare knop of het eerder geladen oefeningstartscherm.

De kritieke bronmutatie ligt in Practice: de nieuwe run, runcontext, snapshotvelden en initiële vraagpayload worden samen consistent opgeslagen. Communicatie- of badge-effecten zijn alleen onderdeel van dezelfde transaction boundary wanneer de specifieke workflow dat functioneel vereist.

11.7.4 Oefening beantwoorden

Na ieder bevestigd antwoord verwerkt Practice de vraagvoortgang server-side.

Technische regels:

  • ExerciseModuleHost wordt gebruikt voor module-specifieke antwoordcontrole.
  • Practice bewaart de uniforme voortgang, totalen en vraagstatus.
  • LiveMonitoring ontvangt of leest voortgang als transport-/weergavegegeven, maar wijzigt de run niet.
  • SignalR-updates zijn niet de bron van waarheid.
  • De leerling-oefencontext onderdrukt afleidende badges, systeemnotificaties en actie-indicaties in de UI.

11.7.5 Resultaten, geschiedenis en PDF

Resultaatweergave, geschiedenis en PDF-export gebruiken dezelfde historische runbron.

OnderdeelTechnische bron
SamenvattingPractice runvelden en snapshots.
VraagdetailsPractice voortgang/payload.
Statistiekenopgeslagen uniforme statistiekvelden.
PDF-exportmodelpubliek contract van Practice.
PDF-renderingReporting met module-specifieke representatie via modulecontract.
Bestandsopslagtijdelijke output, geen brondata.

11.8 Docentflows

Docentflows draaien om oefenaanbod, niveaus, categorieën, oefeningen, testflows, leerlingautorisaties, resultaten binnen docentcontext en live meekijken.

11.8.1 Technische modules per docentflow

FlowPrimaire moduleBelangrijke betrokken modules
Docent-frontpageCatalog / PracticeAuthorization, Relationships, Support
Niveau beherenCatalogAuthorization, Admin waar nodig
Categorie koppelen/aanmakenCatalogAuthorization, Admin bij beheeractie
Oefening configurerenCatalogExerciseModuleHost, Modules.Abstractions
Testoefening startenPracticeCatalog, ExerciseModuleHost
LeerlingenoverzichtRelationships / PracticeAuthorization
Niveauautorisaties beherenAuthorization / CatalogRelationships, Communication
Geschiedenis bekijkenPracticeAuthorization, Reporting
Online leerlingenLiveMonitoringRelationships, Practice, Authorization
Live meekijkenLiveMonitoringPractice, Authorization

11.8.2 Oefenaanbod beheren

Catalog is eigenaar van de catalogusbrondata. Docentflows mogen catalogusobjecten alleen wijzigen via publieke cataloguscontracts.

Technische regels:

  • De docentcontext wordt bij iedere beheeractie server-side gecontroleerd.
  • Eigenaarschap, collaboratorstatus en niveaucontext worden door Catalog en Authorization beoordeeld.
  • Moduleconfiguratie wordt gevalideerd via ExerciseModuleHost en het technische modulecontract.
  • Oefeningmetadata en configuratiepayload blijven catalogusdata.
  • Wijzigingen worden in catalogushistorie vastgelegd binnen het catalogusdomein.

11.8.3 Testoefeningen

Docenttestoefeningen mogen technisch gebruikmaken van Practice, maar worden als testcontext gemarkeerd.

AspectTechnische regel
Persistente geschiedenisTestoefeningen verschijnen niet in reguliere leerling-/docentgeschiedenis.
RunopslagTijdelijke runstructuur is toegestaan zolang IsTestRun of equivalente testmarkering aanwezig is.
OpruimingAchtergebleven testdata wordt via Scheduling opgeruimd.
AutorisatieAlleen docenten met geldige catalogus-/testcontext mogen een test starten.

11.8.4 Leerlingautorisaties

Docentautorisaties zijn geen losse UI-status, maar server-side autorisatiegegevens.

Technische regels:

  • De leerling moet binnen een geldige docent-leerlingrelatie vallen.
  • Bulk- en individuele mutaties gebruiken dezelfde server-side controles.
  • Intrekken van niveauautorisatie wijzigt toekomstige toegang, maar herschrijft geen historische runs.
  • Systeemcommunicatie aan leerlingen wordt via Communication verwerkt wanneer de workflow dat vereist.
  • Systeemberichten kunnen kritiek zijn wanneer zij de enige bruikbare ingang of noodzakelijke terugkoppeling vormen.

11.8.5 Docentgeschiedenis en live meekijken

Docentgeschiedenis en live meekijken zijn strikt beperkt tot de eigen docentcontext.

OnderdeelTechnische grens
GeschiedenisAlleen runs binnen de docentcontext en geautoriseerde niveaus.
ResultaatdetailRun-ID is nooit voldoende; Practice en Authorization hercontroleren toegang.
PDF-exportReporting gebruikt dezelfde autorisatiecontext als resultaatdetail.
Online-overzichtLiveMonitoring toont alleen toegestane leerlingen.
Live meekijkenAlleen bij actieve run binnen docentautorisatie.

11.9 Ouder-/voogdflows

Ouder-/voogdflows zijn read-only ten opzichte van oefeningen, antwoorden, voortgang en resultaten. De actieve GuardianStudent-relatie is de primaire autorisatiebron.

11.9.1 Technische modules per ouder-/voogdflow

FlowPrimaire moduleBelangrijke betrokken modules
Ouder-/voogd-frontpagePractice / RelationshipsAuthorization, Communication, Support
KinderenoverzichtRelationshipsIdentity, Authorization
KindinformatieRelationships / PracticeAuthorization
ResultatensamenvattingPracticeAuthorization, Relationships
GeschiedenisPracticeAuthorization, Reporting
ResultaatdetailPracticeAuthorization, Reporting
PDF-exportReportingPractice, Authorization
Online kinderenLiveMonitoringRelationships, Practice, Authorization
Live meekijkenLiveMonitoringPractice, Authorization
OntkoppelenRelationshipsCommunication, Authorization

11.9.2 Kinderenoverzicht en kindinformatie

Technische regels:

  • Alleen actieve ouder-/voogdrelaties worden getoond.
  • Naamweergave en sortering zijn presentatievoorkeuren, geen autorisatiebron.
  • Kindselectie is tijdelijke UI-context.
  • Iedere vervolginzage herhaalt de server-side relatiecontrole.
  • Ontbrekende kinderen is een geldige lege toestand.

11.9.3 Resultaten en geschiedenis

Ouder-/voogdinzage gebruikt dezelfde historische Practice-bron als leerling- en docentweergaven, maar met een andere autorisatiegrens.

RegelTechnische betekenis
Alle niveausQuery’s worden begrensd door actieve ouder-/voogdrelatie, niet door docentautorisaties.
Alleen afgeronde runsNiet-afgeronde runs verschijnen niet als historisch resultaat.
Geen mutatiesOuder/voogd kan geen run starten, hervatten, beantwoorden, afronden, corrigeren of delen.
PDF-exportExport gebruikt dezelfde autorisatiecontrole als resultaatdetail.
Oude routeOude RunId of browsergeschiedenis geeft geen toegang zonder actuele relatiecontrole.

11.9.4 Live meekijken

Ouder-/voogd-live-meekijken gebruikt LiveMonitoring en Practice, maar de autorisatiebron is de actieve ouder-/voogdrelatie.

Technische regels:

  • Online-overzicht maakt nog geen LiveViewAudit aan.
  • Bewuste live-start maakt wel een LiveViewAudit aan.
  • De ouder/voogd kan door vragen bladeren, maar nooit antwoorden of voortgang wijzigen.
  • Reconnect en beëindiging wijzigen de run van het kind niet.
  • Bij beëindigde relatie vervalt nieuwe raadpleeg-, export- en live-toegang direct.

11.10 Beheerderflows

Beheerderflows draaien om site-instellingen, contentbeheer, accounts, rollen, categorieën, modules, docentondersteuning, systeemcommunicatie, meldingen en operationele beheerinzage. Beheerderflows geven geen reguliere live-meekijkfunctie op actieve leerlingruns.

11.10.1 Technische modules per beheerderflow

FlowPrimaire moduleBelangrijke betrokken modules
Beheerder-frontpageAdminSupport, Communication, Identity, Catalog
Site Instellingen-hubAdminAuthorization
Frontpagebeheer en contentblokkenAdminWeb voor renderingcontext
Handige links, vaste pagina’s en footerAdminWeb voor footer- en paginarendering
PopupbeheerAdminbetrokken domeinen die popupkeys gebruiken
SysteemberichttemplatesCommunicationAdmin voor beheerroute en beheercontext
Features en systeemnotificatiesAdminWeb, Communication waar zichtbaarheid of signalering raakt
Technische systeeminstellingenAdminInfrastructure, Scheduling waar nodig
Accounts beherenIdentity / AuthorizationAdmin, Relationships
Rollen beherenAuthorizationIdentity, Admin
CategoriebeheerCatalogAdmin, Communication, Scheduling
ModulebeheerCatalog / ExerciseModuleHostPractice, Admin
DocentondersteuningAdmin als beheerrouteCatalog, Relationships, Practice, Authorization
MeldingenbeheerSupportCommunication, Relationships, Identity
Operationele jobsSchedulingbetrokken domeinen

11.10.2 Beheerder-frontpage

De beheerder-frontpage is een read-only overzicht. Zij mag geen contextafhankelijke beheeractie uitvoeren zonder dat eerst een object is geselecteerd en de onderliggende module de actie autoriseert.

Technische regels:

  • Admin levert beheerfrontpage-readmodels.
  • Samenvattingen worden via module-eigen query-services opgebouwd.
  • Tellers hebben expliciete scope en zijn geen brondata.
  • Recente beheerwijzigingen komen uit domeinspecifieke history/logbronnen.

11.10.3 Site-instellingen en contentbeheer

Site Instellingen is technisch een hub naar onderliggende beheergebieden. De hub zelf voert geen mutatie uit, bewaart geen editorstate en geeft geen mutatierecht door aan doelpagina’s. Iedere doelpagina voert opnieuw server-side beheerautorisatie, objectvalidatie en historyregistratie uit.

BeheergebiedTechnische eigenaarBelangrijkste technische regel
FrontpagebeheerAdminBeheert tekstuele contentblokken per context. Layout, volgorde, componentstructuur en rendergedrag blijven codegedreven.
Handige links en vaste pagina’sAdminBeheert URL-records, vaste pagina-content, footercontent en footerplaatsingen. Interne en externe URL’s worden server-side gevalideerd.
PopupbeheerAdminBeheert bestaande popuprecords. Technische key, variant, theme, knopacties en custom renderer blijven read-only of codegedreven.
SysteemberichttemplatesCommunication met beheerroute via AdminBeheer wijzigt bestaande templates binnen validatiegrenzen. De templatebron wordt niet gedupliceerd in Admin.
FeaturesAdminBeheert alleen expliciet togglebare functies. Verplichte kernfunctionaliteit wordt niet als featuretoggle ingericht.
SysteemnotificatiesAdminBeheert planbare frontpage-overlays. Deze zijn gescheiden van mailbox-systeemberichten en popupregister-popups.
Technische systeeminstellingenAdminWijzigt bestaande configuratiesleutels met datatype, invoervorm en validatie. Nieuwe sleutels ontstaan via code en migratie.

De beheerderinterface voor handige links en pagina’s werkt met herbruikbare URL-records, footerposities en contentblokken. Een URL-record dat nog in footerplaatsingen wordt gebruikt, mag niet hard worden verwijderd. Een wijziging in footercontent of vaste pagina-content mag geen navigatie- of autorisatieregel aanpassen.

11.10.4 Account- en rolbeheer

Accountbeheer en rolbeheer zijn gescheiden.

OnderdeelEigenaar
Intern account, status, provisioning, anonimiseringIdentity
Rollen, roltoekenningen, contextresolving, policiesAuthorization
Beheeractie, formulierflow en beheerloggingAdmin en eigenaar-module
Identity-providercredentialsExterne identity provider, niet OefenHub

Beheerdermutaties mogen geen wachtwoorden, providercredentials of externe identity-providerinterne data wijzigen.

11.10.5 Categorie- en modulebeheer

Categoriebeheer blijft catalogusdata. Beheerderflows kunnen categorie-identiteit wijzigen, migraties starten of modulemigraties orkestreren, maar de bronmutaties blijven bij Catalog en de technische modulevalidatie bij ExerciseModuleHost.

Technische regels:

  • Migraties moeten expliciet, auditbaar en gemotiveerd zijn.
  • Historische runs worden niet herschreven.
  • Betrokken docenten kunnen via Communication geïnformeerd worden.
  • Retrybare of zware migratieverwerking kan via Scheduling lopen.
  • Cross-module hard FK’s worden niet geïntroduceerd om beheerflows eenvoudiger te maken.

11.10.6 Docentondersteuning

Docentondersteuning is een supportcontext boven bestaande docentstructuren. Zij maakt geen nieuwe centrale kopie van docentdata.

Technische regels:

  • De beheerder selecteert een docentcontext.
  • Authorization bepaalt of de beheerder de supportcontext mag openen.
  • Catalog, Relationships en Practice blijven eigenaar van hun eigen data.
  • Correcties worden via publieke modulecontracts uitgevoerd.
  • Iedere correctie vereist logging/correlation en waar nodig een reden.

11.11 Combinatierollen

Combinatierollen worden niet opgelost door data of autorisaties samen te voegen. De gebruiker heeft meerdere mogelijke contexten, maar iedere route en iedere command gebruikt precies één actieve context.

CombinatieTechnische regel
Beheerder + docentBeheerdercontext geeft geen impliciete docentresultaatinzage buiten support-/beheerflows.
Beheerder + ouder/voogdBeheerdercontext vervangt geen ouder-/voogdrelatie voor ouderflows.
Docent + ouder/voogdDocentroutes gebruiken docentautorisatie; ouderroutes gebruiken ouder-/voogdrelatie.
Leerling + andere rolNiet toegestaan.

Frontpages mogen samenvattingsblokken combineren volgens de vastgelegde prioriteit, maar detailroutes blijven contextspecifiek.

11.12 Zichtbare acties versus toegestane acties

Een zichtbare knop betekent niet dat de actie zonder hercontrole uitgevoerd mag worden. Web gebruikt zichtbaarheid alleen voor gebruikerservaring.

UI-situatieServer-side vereiste
Startknop oefening zichtbaarPractice en Catalog hercontroleren starttoegang.
Geschiedenisregel klikbaarPractice hercontroleert runtoegang.
PDF-knop zichtbaarReporting hercontroleert exporttoegang.
Live-knop actiefLiveMonitoring hercontroleert actuele livebeschikbaarheid.
Relatie-uitnodiging accepteerbaarRelationships hercontroleert status, rolcontext en conflicten.
Ticketactie zichtbaarSupport hercontroleert ticketstatus en actorcontext.
Beheeractie zichtbaarEigenaar-module hercontroleert beheerrechten en objectstatus.

11.13 Lege toestanden, fouttoestanden en autorisatieafwijzingen

Rolflows moeten technisch onderscheid maken tussen lege toestanden en echte fouten.

SituatieTechnische behandeling
Geen gekoppelde kinderenLege ouder-/voogdtoestand.
Geen leerlingen onlineLege live-overzichtstoestand.
Geen afgeronde runsLege geschiedenis-/resultaattoestand.
Geen open meldingenLege meldingenlijst.
Ongeldige filterwaardeVeilige filterfout of reset naar geldige filterbasis.
Object bestaat nietNiet-beschikbaarafhandeling zonder datalek.
Object bestaat maar gebruiker heeft geen toegangToegang geweigerd zonder inhoudelijke details.
Account niet actiefGeen reguliere sessiecontext.
Rolcontext ontbreektVeilige redirect of context-geweigerdafhandeling.

11.14 Cross-module workflowgrenzen binnen rolflows

Rolflows kunnen meerdere modules raken. De functionele eigenaar van de gebruikersactie bepaalt de workflowgrens.

WorkflowEigenaarKritieke stappenMogelijke naverwerking
Relatie-uitnodiging sturenRelationshipsuitnodiging en eventueel primaire systeemingangbadges, aanvullende notificaties
Gedeelde oefening aanmakenPracticeshared record en toegangsvalidatiesysteemcommunicatie afhankelijk van gekozen ingang
Ticket doorzetten naar docentSupportsluiting, doorzetregistratie, noodzakelijke communicatiebadges, readmodelverversing
AccountprovisioningIdentityintern account en geldige toegangstoestanduitnodigingskoppeling en systeemcommunicatie waar nodig
CategoriemigratieCatalogmigratieregistratie en catalogusmutatiedocentcommunicatie, readmodelrebuilds

Een systeembericht is dus niet automatisch kritisch of niet-kritisch. De workflow bepaalt of het bericht onderdeel is van de functionele transactie, bijvoorbeeld wanneer het de primaire ingang voor een ontvanger is.

11.15 Logging en correlation binnen rolflows

Iedere rolflow draagt correlation-informatie door naar betrokken modules.

Minimale correlationgegevens:

VeldToepassing
CorrelationIdVerbindt request, workflow, domeinactie, job en foutafhandeling.
ActorUserIdSoft reference naar de uitvoerende gebruiker waar toegestaan.
ActorRoleContextSnapshot van de actieve rolcontext.
TargetEntityTypeType object waarop de actie betrekking heeft.
TargetEntityIdSoft reference naar het object, zonder inhoudelijke payload in technische logs.
WorkflowNameNaam van de cross-module workflow of command.

Technische logs mogen geen wachtwoorden, tokens, antwoordpayloads, volledige berichteninhoud, volledige PDF-inhoud of onnodige persoonsgegevens bevatten.

11.16 Security- en privacygrenzen

Rolflows moeten voorkomen dat data via samengestelde schermen alsnog buiten de modulegrenzen lekt.

Technische regels:

  • Page composition mag alleen gescopete query-services gebruiken.
  • Viewmodels bevatten alleen velden die de actuele rolcontext mag zien.
  • Browserstate bevat geen autorisaties, rolclaims, tokens of gevoelige domeindata.
  • Popups en foutmeldingen tonen bij geweigerde toegang geen namen of inhoud van ontoegankelijke objecten.
  • Snapshots met persoonsgegevens volgen het anonimiseringbeleid van de eigenaar-module.
  • Exportflows gebruiken dezelfde autorisatiecontrole als de schermweergave.

11.17 Teststrategie voor rolflows

Rolflows worden niet alleen via end-to-endtests gevalideerd. Per laag wordt gericht getest.

TesttypeDoel
Authorization testsControleren dat contexten, rollen en objecttoegang correct worden afgewezen of toegestaan.
Module integration testsControleren dat eigenaar-modules hun commands en query’s correct scopen.
Cross-module workflowtestsControleren dat kritieke stappen atomair zijn en naverwerking correct faalt/herstelt.
Web/page composition testsControleren dat viewmodels geen ongeautoriseerde data bevatten.
Architecture testsControleren dat Web geen DbContexts/entities gebruikt en modules alleen publieke contracts gebruiken.
Security regression testsControleren op IDOR, oude routecontext, filtermanipulatie en clientstate-misbruik.

11.18 Implementatiechecklist

Bij het implementeren of wijzigen van een rolflow moet minimaal worden gecontroleerd:

  • is de functionele eigenaar van de flow duidelijk;
  • welke rolcontext is vereist;
  • welke module is eigenaar van de brondata;
  • welke query-services worden gebruikt;
  • welke commands zijn kritiek en moeten atomair zijn;
  • welke vervolgacties zijn retrybaar of beheerbaar falend;
  • welke lege toestanden moeten veilig getoond worden;
  • welke fouttoestanden mogen geen data lekken;
  • welke readmodels of badges worden geraakt;
  • welke logging/correlationgegevens nodig zijn;
  • welke impact op Functioneel Ontwerp, Software Requirements Specification, Technisch Ontwerp en database-informatie de wijziging heeft;
  • welke tests of architecture checks moeten worden uitgebreid.

11.19 Implementatieverificaties

De volgende punten moeten bij implementatie of toekomstige detailuitwerking van het Technisch Ontwerp concreet worden gemaakt:

OnderwerpVerificatiepunt
RouteconventiesDefinitieve URL- en routeprefixen per rolcontext vastleggen in Web.
Page compositionBepalen welke frontpages en dashboards aparte page-composition services krijgen.
WorkflowcatalogusPer cross-module workflow vastleggen welke stappen kritiek, retrybaar of beheerbaar falend zijn.
Contextswitch UIBepalen hoe gebruikers met combinatierollen contextselectie en frontpageblokken zien.
Access-denied UXUniforme fout- en redirectpatronen afstemmen met popupregister en schermdocumentatie.
TestdekkingRolflowtests koppelen aan Software Requirements Specification/acceptatiecriteria en architecture tests.
LoggingveldenDefinitieve technische veldnamen voor correlation en actorcontext afstemmen met logginghoofdstuk.