Innledning
Dette er en integrasjon for overføring av data fra FS til Canvas. Integrasjonen består av 6 7 hoved deler.
Opprette kontoer basert på hierarkiet som følger ogranisasjonkode, fakultetkode, instituttkode, og gruppekode.
Koble emner til kontoer
Koble studieprogram/kull/klasse til kontoer
Koble etterudaningsenheter (EVU) til emner
Koble undervisningsenheter (UE) og undervisningsaktiviteter (UA) til emner
Koble studenter/lærere/administrasjoner til kontoer/emner/EVU/UE/UA
Dette er en typisk synk-integrasjon der en del data fra FS skal kopieres over til Canvas og holdes i synk basert på hendelser.
Nøkkel info
...
Initiesering av flyt
...
scheduler og hendelse basert
...
Kjører daglig også når skjer endring på dataene i FS
...
Flyt møsnter
...
Synkron
...
Bruk av meldingskø
...
Nei
...
Dette er en typisk synk-integrasjon der en del data fra FS skal kopieres over til Canvas og holdes i synk basert på hendelser.
Nøkkel info
Initiesering av flyt | scheduler og hendelse basert | Kjører daglig også når skjer endring på dataene i FS |
---|
Flyt møsnter | Synkron | |
---|
Bruk av meldingskø | Nei | |
---|
Open API | Nei | |
---|
IntArk | Ikke brukt | |
---|
Bakgrunn
Emneevaluering systemet (CES) innholder/LMS trenger en del data nye datasoverføringsintegrasjon som studie-strukturen (instiusjoninstitusjon, fakultet, institutt og studieprogram) og knyttede emner, gruppe, emner, studieprogram, kull, klasse, studenter, lærerer og administratorer) er synkronisert slikt at dataene speils FS dataene til Canvas systemet. Denne informasjon har sin kilde i FS. I dag gjøre alt arbeidet manuelt for hånd, noe som er svært tungvint.
For kravspek/bestillings-dokument, se her :
View file |
---|
name | Kravspesifikasjon integrasjoner mellom FS og CES 22082023(4)Forespørselsskjema Mule - Ny LMS integrasjon.docx |
---|
|
Interessenter
Dette er en leveranse til tjenesten utdanningstjenesten.
Brukerhistorie / Integrasjonens omfang (arbeidet som skal gjøres)
Daglig skal det kjøres en synk som vil sørge for :
alle dataene nevnt ovenfor.
Daglig skal det sjekkes for eventuelle endringer i emne tilknytting eller studieprogram dataene nevnt ovenfor og utføre dem. F.eks om en studieprogram er flyttet.
Daglig sjekke og oppdatere rolle-tilknyttinger på emne og studieprogram nivå.
Systemer/tjenester
Detaljert liste av alle innvolverte systemer/tjenester Hva utveksler data? Fra hvor / Til hvor?
Inc drawio |
---|
zoom | 1 |
---|
simple | 0 |
---|
custContentId | 2827288809 |
---|
pageId | 2826043410 |
---|
lbox | 1 |
---|
diagramDisplayName | CES-flyt.drawio.xml |
---|
contentVer | 1 |
---|
hiResPreview | 0 |
---|
revision | 1 |
---|
baseUrl | https://unit.atlassian.net/wiki |
---|
diagramName | CES-flyt.drawio.xml |
---|
pCenter | 0 |
---|
aspect | c7488fd3-1785-93aa-aadb-54a6760d102a 1 |
---|
width | 1641 |
---|
links | auto |
---|
tbstyle | top |
---|
isUpload | 1 |
---|
height | 741 |
---|
|
Brukerhåndtering flytdiagram
Inc drawio |
---|
zoom | 1 |
---|
simple | 0 |
---|
custContentId | 2925232179 |
---|
pageId | 2826043410 |
---|
lbox | 1 |
---|
diagramDisplayName | CESuseradmin.drawio |
---|
contentVer | 1 |
---|
hiResPreview | 0 |
---|
revision | 1 |
---|
baseUrl | https://unit.atlassian.net/wiki |
---|
diagramName | 1705909153405-CESuseradmin.drawio |
---|
pCenter | 0 |
---|
aspect | phcOmvuPwj-QR_J1NSh4 1 |
---|
width | 602 |
---|
links | auto |
---|
tbstyle | top |
---|
isUpload | 1 |
---|
height | 1631 |
---|
|
Tilgangsstyring og logging
Integrasjonen loger til Humio med detaljert logging av prosessen.
Integrasjonen har ikke noe behov for tilgangstyring
Behandlingstid/responstid og volum
Integrasjonen ikke tatt til bruker nå; ingen data!
Brukte spørringer mot FS (Graph)
Spørring brukt til oppbygging av emne-hiererkiet
...
Tilgangsstyring og logging
Integrasjonen loger til Humio med detaljert logging av prosessen.
Integrasjonen har ikke noe behov for tilgangstyring
Behandlingstid/responstid og volum
Integrasjonen ikke tatt til bruker nå; ingen data!
Brukte spørringer mot FS (Graph)
Expand |
---|
title | Spørring brukt til å opprette konto-hiererkiet |
---|
|
Code Block |
---|
query organisasjonsenheter($inst: String!) {
organisasjonsenheter(
first: 1000
filter: {eierInstitusjonsnummer: $inst, institusjonummer: $inst, skalEksporteresTilLms: true, erAktiv: true}
) {
nodes {
instituttnummer
fakultet {
navn {
nob
eng
nno
}
fakultetsnummer
}
lmsRomkode
navnAlleSprak {
nob
nno
eng
}
gruppenummer
organisasjon {
organisasjonskode
navn {
nob
eng
nno
}
}
}
}
} |
|
Expand |
---|
title | Spørring brukt til å koble emner til kontoer |
---|
|
Code Block |
---|
query emneHierarki($inst: String!, $aar: Int!, $termin: EmneIkkeUtloptITerminTerminbetegnelse!) {
emner(
filter: {eierInstitusjonsnummer: $inst, ikkeUtloptITermin: {arstall: $aar, terminbetegnelse: $termin}}
first: 1000
after: "MjA6MTIzNCwxMjM0LExNUyBURVNURU1ORSwx"
) {
...QueryEmneConnectionFragment
}
}
fragment QueryEmneConnectionFragment on QueryEmneConnection {
nodes {
id
kode
versjonskode
navnAlleSprak {
nob
eng
nno
}
sprakvalg {
tilbysSomUndervisningssprak
sprak {
iso6392Kode
}
}
organisasjonsenhet {
studieAnsvarlig {
navnAlleSprak {
nob
}
fakultet {
navn {
nob
}
fakultetsnummer
}
organisasjon {
organisasjonskode
navn {
nob
eng
nno
}
}
gruppenummer
instituttnummer
}
}
}
pageInfo {
endCursor
hasNextPage
}
} |
|
Expand |
---|
title | Spørring brukt til å koble studieprogram/kull/klasse til kontoer |
---|
|
Code Block |
---|
query studieprogramKullKlassHierarki($inst: String!) {
studieprogram(
filter: {eierInstitusjonsnummer: $inst, skalEksporteresTilLms: true, erAktiv: true}
first: 1000
) {
nodes {
kode
lmsRomkode
personroller {
gyldighetsperiode {
fraDato
tilDato
}
fsRolle {
imsRolle
kode
navn {
eng
lmsNavn
nno
nob
}
erAktiv
}
aktiv
}
organisasjonsenhet {
studieansvarlig {
lmsRomkode
instituttnummer
organisasjon {
organisasjonskode
navn {
nob
eng
nno
}
}
gruppenummer
fakultet {
fakultetsnummer
navn {
eng
nno
nob
}
}
navnAlleSprak {
eng
nno
nob
}
skalEksporteresTilLms
erAktiv
}
}
navnAlleSprak {
eng
nno
nob
}
kull(aktiv: true) {
lmsRomkode
navnAlleSprak {
en
no
}
skalEksporteresTilLms
termin {
arstall
| )...QueryEmneConnectionFragment}}fragmentQueryEmneConnectionFragmentonQueryEmneConnection{nodes{idkodeversjonskodenavnAlleSprak{nob}studieniva{kode}rapporteringsstudieprogram{kode navnAlleSprak{nob} erAktiv
klasser(erAktiv: true, skalEksporteresTilLms: true) {
| }organisasjonsenhet{studieAnsvarlig{navnAlleSprak{ skalEksporteresTilLms
erAktiv
| nob}fakultet{navn{ }
skalEksporteresTilLms
skalPubliseres
| nob}}institusjon{ |
Expand |
---|
title | Spørring brukt til å koble etterudaningsenheter (EVU) til emner |
---|
|
Code Block |
---|
query EtterutdanningsKursAktivitet($inst: String!) {
evuKurs(
| navn {
filter: {eierInstitusjonsnummer: $inst, skalEksporteresTilLms: true, erAktiv: true}
first: 1000
) {
nodes | nob{
kurskode
skalEksporteresTilLms
| } tidsangivelseskode
erAktiv
| }}}}pageInfo{endCursor hasNextPage }} |
Spørring brukt til lesing av personroller på emner
Code Block |
---|
queryemneHierarkiGittEmne($inst: String!, $emnekode: String!, $versjonskode:String!) {
emner:emnerGittEmnekoder(
eierInstitusjonsnummer:$instemnekoder:{emnekode:$emnekode,versjonskode:$versjonskode}){idkodenavnAlleSprak{ administrativtAnsvarligEnhet {
| nob}studieniva{kode}organisasjonsenhet{studieAnsvarlig{navnAlleSprak{fakultet{navn{nob}}institusjon{navn{ }}}rapporteringsstudieprogramnavnAlleSprak{nob}personroller{rolle:fsRolle{erAktivharTilgangTilFagpersonwebkode}personProfil{institusjonsEpost |
Expand |
---|
title | Spørring brukt til å koble undervisningsenheter (UE) og undervisningsaktiviteter (UA) til emner |
---|
|
Code Block |
---|
query emneHierarki($inst: String!, $aar: Int!, $termin: EmneIkkeUtloptITerminTerminbetegnelse!) | fornavn{
emner(
filter: {eierInstitusjonsnummer: $inst, | etternavnikkeUtloptITermin: {arstall: $aar, terminbetegnelse: $termin}}
| }}"MjA6MTIzNCwxMjM0LExNUyBURVNURU1ORSwx"
) | }}}
|
Spørring for å lese inn hendelser på Emner :
Code Block |
---|
query emneHEndelser ($inst:String!,$limit:Int,$after:String){
emnehendelser(
hendelsestype: EMNE_ENDRET,
first:$limit
after:$after
eierinstitusjonsnummer: $inst) { ...QueryEmneConnectionFragment
}
}
fragment QueryEmneConnectionFragment on QueryEmneConnection {
nodes {
id
kode
versjonskode
navnAlleSprak {
nob
| pageInfo{startCursorendCursorhasNextPagetilbysSomUndervisningssprak
sprak {
| }nodes{tidspunkt }
tjenestenummerForLms
undervisningsenheter(filter: | emne{skalEksporteresTilLms: true}) {
lmsRomkode
terminnummer
| idkodeversjonskodenavnAlleSprak{ undervisningsaktiviteter {
kode
| nob}studieniva{kode }rapporteringsstudieprogramundervisningenFolgesAv {
kode
navnAlleSprak {
| kodenavnAlleSprak{nob}
undervisningenFolger {
kode
| }}organisasjonsenhet{ }
}
}
organisasjonsenhet {
| studieAnsvarlig{ studieAnsvarlig {
gruppenummer
instituttnummer
| navnAlleSprak{ fakultet {
fakultetsnummer
| nob}fakultet{navn{ organisasjonskode
}
skalEksporteresTilLms
navnAlleSprak {
| nob} nob
}
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
|
|
Expand |
---|
title | Spørring brukt til å koble studenter/lærere/administrasjoner til kontoer/emner/EVU/UE/UA |
---|
|
Code Block |
---|
query singleEmne($inst: | institusjonString!, $emneKode: [String!]) {
emner(filter: {eierInstitusjonsnummer: $inst, emnekoder: $emneKode}) {
nodes {
kode
versjonskode
| navn{ tjenestenummerForLms
undervisningsenheter {
terminnummer
termin {
| nob}}}
|
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. Det er også utarbeidet mulighet for at enkelt personer ved institusjonen kan melde seg på for mottak av feilmeldinger på epost daglig.
...
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 igjen
Hva skjer med ufullstendige meldinger?
Inneholder meldingene personopplysninger?
Merk at det utveksles mange “meldinger” mellom ulike systemer i løpet av en integrasjon. Meldinger fra eksamensystemene inneholder ikke noe persondata, men data vi henter fra FS basert på de meldingene gjør. Filene vi arkiverer (som kommer fra eksamensystemene) kan også potensielt inneholde personopplysninger.
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)
Nødvendige tilganger
FS Graph:
CES :
...
Kommentarer