Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Integrasjon dokumentasjon: Begrunnelse i WISEflow (Under arbeid)

Inc drawio
zoom1
simple0
zoomcustContentId13417112623
pageId2302771203
custContentIdlbox34171126231
diagramDisplayNameDigEks.drawiolbox1
hiResPreview0
baseUrlhttps://sikt.atlassian.net/wiki
imgPageId2305490964
diagramNameDigEks.drawio
imgPageId2305490964
pCenter0
aspectlNPERg7QnUUZ_CQ6ziOo 1
width1528
includedDiagram1width1528
aspectHash70ed51771bb640ff0bd58d7e7a2c8e43ce6ee63e
linksauto
tbstyletop
height1110

...

Initiering av flyt

Poll-request

Flyt møsnter

Halveis synkron

Bruk av meldingskø

Ja, Kafka;

MeldingQ (Sikt egen melding-kø system basert på MongoDb, i.e. DocumentDb)

  • I klage-beg-dispatcher-app trigger den meldinger fra FS som skal komponeres og videresendes mot eksamensystemer. Den mottar data nedenfor: contextObjectId, contextObjectType, associatedObjectId, associatedObjectType, triggeringUserId, triggeringUserName, timestamp, org, instance, env og examSystem, og sender over begrunnelser (vurdId, klage, examSys, orgId og env) til WISEflow;

  • ّInspera-webhook produserer webhook-meldinger (timestamp, org, instance, env og examSystem) mot begge eksamenssystemene (Inspera/WISEflow);

  • WISEflow-begrunnelse forbruker vurdId, examSys, orgId, env og begrunnelse-forespørsler (personlopenr, kandidatnr, brukernavn, kommisjonsId, datoKlageMottat og datoVedtakFormidlet) sendes fra FS, og begrunnelse-svar meldinger.

Open API

Nei

IntArk

Ikke brukt

...

System

Data

Brukt API (endepunkter)

Config-databasen

Finner orgShortName i databasen til en gitt orgId

configDB.orgs

Config-databasen

Hvis prosessen var mislykket (success er False), henter den en 'blacklist' for tjenesten for å bestemme om det skal registreres som en Slack-feilmelding i kanalen.

NB: Modulen hjelper utviklere og testere av systemet; sluttbrukeren vil ikke legge merke til det.

configDB.slack-blacklists

FS-Digex

Henter ut en liste (en json-liste) over begrunnelsesforespørsler som har blitt opprettet eller endret siden oppgitt tidspunkt basert på examSystem, institutionNr (Nummeret for institusjonen som du skal hente fra) og changedSince (tidspunkt for sist sjekk).

GET: /eksamen/begrunnelse/{examSystem}

URL for test: https://fs-test.uio.no/eksamen/begrunnelse/<examSystem>?institusjonsnr=...&siden=...&
URL for prod: https://fsws.usit.no/eksamen/begrunnelse/<examSystem>?institusjonsnr=...&siden=...&

https://www.fellesstudentsystem.no/brukersider/teknisk/fsws-dok/rest/digitaleksamen.html

FS-Digex

Henter begrunnelser for en gitt eksamen basert på examSystem og examId.

GET: /eksamen/begrunnelser/{examSystem}/{examId}

URL for test: https://fs-test.uio.no/eksamen/begrunnelser/{examSystem}/{examId}
URL for prod: https://fsws.usit.no/eksamen/begrunnelser/{examSystem}/{examId}

https://www.fellesstudentsystem.no/brukersider/teknisk/fsws-dok/rest/digitaleksamen.html

FS-Digex

Registrerer explanations (urlBegrunnelse, datoBegrunnelseBedtOm, dokumentBegrunnelse, kandidatnr, datoBegrunnelseGitt, contentTypeBegrunnelse) gitt til en kandidat for en eksamen basert på examSystem

POST: /eksamen/begrunnelser/{examSystem}

URL for test: https://fs-test.uio.no/eksamen/begrunnelser/<examSystem>
URL for prod: https://fsws.usit.no/eksamen/begrunnelser/<examSystem>

https://www.fellesstudentsystem.no/brukersider/teknisk/fsws-dok/rest/digitaleksamen.html#digeks_begr_post

LaaS

Registrerer en indeks org, instanceenvevent-name, remote-adr og request-uri i Humio (for å innta og beholde strømmedata)

do Index

Mongo-databasen

Finner alle dokumenter i databasen (orgId, examSys, insperaClientCode, fsEnv, instance, active, begrunnelse, klage, autoEpost og XklageFilter) som samsvarer med aktiv status og aktiv-verdi for Klage- eller Begrunnelse-felt.

Find documents i oai.KlageBegrunnelseEnvs kolleksjonen

Oai-databasen

legger auditInfoMap log til databasen

oai-addAuditLog

Oai-databasen

Henter aktive institusjoner med aktiv klage- og begrunnelse-status som tilsvarer examSystem, org og instance

oai.KlageBegrunnelseEnvs

Oai-databasen

Sender category (wiseflow-begrunnelse) og Json-string (vurdId, klage, examSys, orgId og env) til databasen, og hvis

‘returnTrueAndAddToDatabaseIfNotInDatabase’ i oai.kafkaMessages

Oai-databasen

Henter dokumenter som ikke ble behandlet (success er False med mindre enn 5 failedAttempts) for å sende dem videre i flyten for å prøve på nytt.

oai.LastAudit

Slack

Sender feilmeldinger (inkludert også data på module-idog submodul, organisasjons shortName og orgId, examSystem, examSysInstance, vurdId, fetchFsListDates, decodedFsTestId og filesToArchive). Det stemmer overens med Config-databasen (configDB.slack-blacklists).

Slack-kanalen (mule-prod)

WISEflow

Returnerer informasjon om karakterbegrunnelsen (av gitt orgShortName, env, flowId og explanationRequestId). Denne informasjonen inneholder navnet på flyten (flowId), datoer (requestDate, assignDate, acceptDate og dueDate), informasjon om participant, informasjon om assignedAssessor og eventuell karakterbegrunnelse gitt med mer.

GET: /flow/{flowId}/explanation/request/{explanationRequestId}

https://europe-apidocs.wiseflow.net/

WISEflow

Oppdater synligheten til en karakterbegrunnelse (av gitt orgShortName, env, flowId og explanationRequestId) for participant i WISEflow med flowId, explanationRequestId og showJustification.

PATCH: /flow/{flowId}/explanation/request/{explanationRequestId}

https://europe-apidocs.wiseflow.net/

WISEflow

Returnerer en liste (combinedMainFlowId, purpose, combinedSubFlowIds, variant, state, creationDate, type og flowId) over flyter som samsvarer med spørringsparameteren (sisCode, env og orgShortName).

GET: /license/sis/flows/{sisCode}

https://europe-apidocs.wiseflow.net/

WISEflow

Henter opp grunnleggende informasjon for en gitt flyt som navn, type, start- og sluttdato som kan brukes til å identifisere flyten (basert på contextObjectId (Flow id), org (orgShortName) og env).

GET: /flow/{flowId}

https://europe-apidocs.wiseflow.net/

WISEflow

Returnerer grunnleggende informasjon (submissionId, assessorIds, groupId, id, assessorGroupIds og user) om alle deltakere som er tildelt en gitt flowId.

GET: ​/flow​/{flowId}​/participants

https://europe-apidocs.wiseflow.net/

WISEflow

Hvis den er aktivert på flyten (av gitt orgShortName, env, flowId , dueDate og participantId), kan en participant be om en begrunnelse på den gitte vurderingen.

POST: /flow/{flowId}/explanation/request

https://europe-apidocs.wiseflow.net/

...

Behandlingstid/responstid og volum

Klage-beg-dispatcher

volum

...

  • WISEflow-begrunnelse

    Behandlingstid/responstid: ca.

    6s

    2s

  • Frekvens:

    2-minutter poll timeout for manuelt triggering og 120-minutters tidsplaner for faste frekvenser (Klage

    Den nye meldingssystemet (meldingQ) kjører uten forsinkelse på meldingskøen – lytteren til køen tar meldinger én etter én og starter behandlingen umiddelbart (fra webhooks, klage-beg-dispatcher og digex)

    , HTTPS-‘listener’ repeterbar fillagerstrøm for datastrømmestrategi (Inspera-webhook), og 2-minutter poll timeout for Apache-Kafka forbruk for begrunnelse og 1-minutt poll timeout for Apache-Kafka forbruk for begrunnelse-svar (WISEflow-begrunnelse)

    . Hver melding hentes direkte fra databasen, prosesseres, og status oppdateres deretter til enten ‘processed’ eller ‘failed’ i samme database-kolleksjon.

  • Volum (målt:

    ): gj.sn. ca.

    28k hits

    2k hits (i.e. “correlationId“) daglig

Feilhåndtering, konsekvenser av feil og overordnet risikoanalyse

Generelt vil status og dermed eventuelle feil være synlig og tilgjengelig for institusjonen via logg-oversikten (https://dbapp.de-c1.eu1.cloudhub.io/). Det er også utarbeidet mulighet for at enkelt personer ved institusjonen kan melde seg på for mottak av feilmeldinger på epost daglig (“Jeg vil ha e-post varsling”-knappe). Videre har vi overvåkning av loggene via Humio for å fange opp feil-situasjoner utenfor institusjonens virkeområde.

Videre har vi overvåkning av loggene via Humio for å fange opp feil-situasjoner utenfor institusjonens virkeområde, som f.eks. utilgjengelige API endepunkter og bugs i koden.

  • Hva skjer ved overload i kø?

    • Det skjer ikke . Men om vi skulle på grunn av noe feil ikke motta meldingene fra eksamensystemene, vil : Inspera vite om det og sende dem på nytt. Wiseflow: er basert på polling, så vi kan alltid polle igjenda-køene kun har én parallell forbruker ('queue-listener');

  • Hva skjer med ufullstendige meldinger?

    • De vil feile og det vil vi oppdage i loggene og kan ta aksjon basert på detMeldinger med status ‘failed’ (opptil 5 ganger) eller ‘processing’ (med 10 minutters forsinkelse for å sikre at meldingen ikke allerede behandles) blir hentet fra kolleksjonen igjen i grupper på opptil 100, og behandlet i samme flyt.

    • Meldingssystemet bruker ‘manual’ protokoll for håndtering av bekreftelse, som betyr at prosessen fullføres med en endelig status ‘failed’ eller ‘processed’ for hver melding etter fullført behandling. Ingen meldinger skal ha status ‘processing’ eller ‘enqueued’ lengre enn forventet behandlingstid.

  • Inneholder meldingene sensitive personopplysninger?

    • Merk at det utveksles mange “meldinger” mellom ulike systemer i løpet av en integrasjon. Melinger fra eksamensystem inneholder ikke noe persondata, men data vi henter fra FS basert på de meldingene gjør det. Filene vi arkiverer (som kommer fra eksamensystemene) kan også potensielt inneholde personopplysningerifølge definisjonen på sensitive personopplysninger hos Sikt (Sikt Personvernhåndbok) kan vi konstatere at det ikke forekommer behandling eller overføring av slike data i MuleSoft-plattformen.

  • Noe om viktige feil/situasjoner som må passes ekstra på (som kan ha stor konsekvens):

    • Oppgavene ikke arkiveres (miste meldinger)

    • Oppgaver arkiveres med feil info. (feiltolking eller feil logikk)Oppgaver arkiveres med feil tilganger (slik at oppgaver som ikke skal være offentlige, arkiveres slik at de blir offentlig synlige) 

Kommentarer