LMS : Tilbakeskriving av resultater til FS
Dette dokumenterer dataflyten og virkemåten for integrasjons-applikasjonen : Tilbakeskriving av resultater til FS
Bestilling/beskrivelse :
Denne applikasjonen er implementer basert på bestillingen som er laget av sektoren her : https://docs.google.com/document/d/1681lcYoBoWCmtR8_xCi6V6HKhA3p1T1Dy_Z7mYgYJM4/edit#heading=h.4vqb2zmwwn4o.
Oppsett :
Applikasjonen er en LTI-applikasjon, som må legges til Canvas for å kunne benyttes. Veiledning for det finnes her : https://unit.atlassian.net/wiki/spaces/LMS/pages/496762919
Virkemåte / Arbeidsflyt :
Hele flyten består av 4 hovedkomponenter :
1- Canvas
2- FS : Her er det Digeks-apiet (FS WS Digeks) som benyttes
2- Applikasjon-backend : Implementert som en mule api-applikasjon
3- Applikasjon-frontend : Implementert som en React-applikasjon
Flyten starter med brukeren som i Canvas, inne i et bestemt emne ( I Canvas kalt course), klikker på applikasjonen. Hva den heter er avhengig av hva navnet administratoren har gitt applikasjonen da den ble satt opp som en LTI applikasjon.
LTI-flyten sørger for at front-enden starter opp, sammen med en en jws-token. JWS-tokenet, inneholder all nødvendig informasjon som f.eks. bruker-id, course-id, og nødvendig oauth-token for tilgang til Canvas API’et.
Merk at informasjonen nevnt over ligger skjult og kryptert i JWS-tokenet, slik at front-end ikke kjenner til dem selv.
Frontend vil bare kommunisere med backend og vil da sende med JWS-tokenet sammen med alle kall til backend. På den måten vil backend ha nødvendig info for å kunne fullføre operasjoner mot Canvas og FS. Backend vil da for hvert innkommende kall, verifisere og dekode JWS-tokenet.
Tilgangskontroll mot Fagpersonweb
Denne applikasjonen skal bare kunne brukes av faglærer som har nødvendige roller/tilgang i Fagpersonweb. Dette sjekkes ved kall til FS (via backend til FS-API). Først sjekkes det om personen (brukeren av applikasjonen), har tilgang til Emnet. Hvis ikke, sjekkes det om personen har tilgang til hele Undervisningsenheten.
Dette gjøres på følgende måte:
Først hentes alle roller med Fagpersonweb-tilgang fra FS. Kall til /roller med fagpersonWebTilgang=true
Så hentes alle roller brukeren har for emnet. Kall til /personroller med oppgitt emne.kode og emne.version og personløpenummer
Hvis personen har en gyldig rolle (innenfor gyldig periode) som også har tilgang til Fagperson-web, aksepteres tilgangen.
Ellers hentes alle roller brukeren har for undervisningsenheten. Kall til /personroller med oppgitt emne.kode, emne.version, semester.ar, semester.termin og personløpenummer.
Hvis personen har en gyldig rolle (innenfor gyldig periode) som også har tilgang til Fagperson-web, aksepteres tilgangen. Ellers får vedkommende feilmelding.
Valg av resultater som skal overføres
Front-end vil først hente ut om aktuell “Course” (Emne) og alle “Assigmens” definert i emnet, fra Canvas.
Den vil samtidig bruke feltet “sis_course_id” (som skaffes ved kall til /api/v1/courses/:id) for å bygge en vurderingsId. Det er påkrevd og en forutsetning at “sis_course_id” er bygget opp på denne måten: UE_192_AOS341_1_2019_HØST_1 (eks).
Den informasjonen brukes da til å slå opp mot FS (/eksamen/eksamensinfo) for å hente ut alle obligatoriske-aktiviteter for gitt vurdering. Kun eksamensdeler som har statusObligatoriskAktivitet == "J", vil plukkes opp.
Brukeren vil da bli sittende igjen med oversikt over alle “Assignments” fra Canvas og en liste av aktiviteter fra FS. Vedkommende må da velge resultater fra hvilken ““Assignment” skal overføres til hvilken aktivitet i FS. Dette gjøres i det grafiske GUIet.
Når en Assignment og aktiviteten resultatene skal flyttes til er valgt, vil applikasjonen hente alle “submissions” fra Canvas. Det er igjen frontend som kaller API på backend som igjen henter informasjonen fra Canvas API. Der vil den ha oversikt over hvem som har levert og hvem som er godkjent.
Overføring til FS
Brukeren kan velge om bare godkjente resultater skal overføres eller alle. Når brukeren har valgt, vil aktuelle resultater overføres til FS. Dette gjøres ved at backend vil kalle dette mot FS :
“/eksamen/sensur/FAGPWEB/registrer”.
Resultater med “grade” satt til “complete”, vil sette resultat:“Godkjent”, ellers vil det settes status:"S"
Saksbehandler vil settes til personen som bruker applikasjonen. Personens løpenummer vil da brukes.
Sensor vil settes til “grader” (Den som har tildelt karakter/satt resultatet). Personens løpenummer vil da brukes.
Brukte API endepukter
|
| |
---|---|---|
GetCourse | /courses/:courseId |
|
GetAssignments | /courses/:courseId/assignments/ |
|
GetSubmissions | /courses/:courseId/assignments/:assignmentId/submissions?include=user |
|
GetCourseUser | /courses/:courseId/users/:userId |
|
|
|
|
|
| |
Valider resultat | /eksamen/sensur/FAGPWEB/valider |
|
Registrer resultat | /eksamen/sensur/FAGPWEB/registrer |
|
GetEksamensinfo | /eksamen/eksamensinfo |
|
|
|
|
|
| |
GetRoller | /roller |
|
GetPersonRoller | /personroller |
|
GerPersoner | /personer | (Bare når personløpenummer ikke er regisrert som sis-id) |