Versions Compared

Key

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

Table of Contents

Innledning

Dette er en integrasjon for overføring av data fra FS til Canvas. Integrasjonen består av 6 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

Open API

Nei

 

IntArk

Ikke brukt

 

Bakgrunn

Emneevaluering systemet (CES) innholder/trenger en del data som studie-strukturen (instiusjon, fakultet, institutt og studieprogram) og knyttede emner. 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
nameKravspesifikasjon integrasjoner mellom FS og CES 22082023(4).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 emner (course) (emner i aktive prosjekter) er knyttet til sitt studieprogram i hierarkiet.

    • hvis studieprogrammet (eller fakultet og institutt) ikke finnes i hierarkiet skal det opprettes først.

  • Daglig skal det sjekkes for eventuelle endringer i emne tilknytting eller studieprogram 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
zoom1
simple0
custContentId2827288809
pageId2826043410
lbox1
diagramDisplayNameCES-flyt.drawio.xml
contentVer1
hiResPreview0
revision1
baseUrlhttps://unit.atlassian.net/wiki
diagramNameCES-flyt.drawio.xml
pCenter0
aspectc7488fd3-1785-93aa-aadb-54a6760d102a 1
width1641
linksauto
tbstyletop
isUpload1
height741

Brukerhåndtering flytdiagram

Inc drawio
zoom1
simple0
custContentId2925232179
pageId2826043410
lbox1
diagramDisplayNameCESuseradmin.drawio
contentVer1
hiResPreview0
revision1
baseUrlhttps://unit.atlassian.net/wiki
diagramName1705909153405-CESuseradmin.drawio
pCenter0
aspectphcOmvuPwj-QR_J1NSh4 1
width602
linksauto
tbstyletop
isUpload1
height1631

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

Code Block
query emneHierarki ($inst:String!, $aar:Int!,$termin:EmneIkkeUtloptITerminTerminbetegnelse!){
  emner(
    filter : {
        eierInstitusjonsnummer: $inst
        ikkeUtloptITermin: { arstall: $aar, terminbetegnelse: $termin}
    }
    first: 10
    
    
  ) {
    ...QueryEmneConnectionFragment
  }
}

fragment QueryEmneConnectionFragment on QueryEmneConnection {
  nodes {
    id
    kode
    versjonskode    
    navnAlleSprak {
      nob
    }
    studieniva{
        kode
    }
    rapporteringsstudieprogram {
        kode
        navnAlleSprak {
            nob
        }            
    }

    organisasjonsenhet{
        studieAnsvarlig {
            navnAlleSprak{
                nob
            }
            fakultet{
                navn{
                    nob
                }
            }
            institusjon{
                navn {
                    nob
                }
            }
        }
    }
  }
  pageInfo {
      endCursor
      hasNextPage
  }  
}

Spørring brukt til lesing av personroller på emner

Code Block
query emneHierarkiGittEmne($inst: String!, $emnekode: String!, $versjonskode:String!) {
  emner:emnerGittEmnekoder(
    eierInstitusjonsnummer: $inst
    emnekoder: {emnekode: $emnekode, versjonskode: $versjonskode}    
  ) {
   
    id
    kode
    navnAlleSprak {
      nob
    }

    studieniva{
      kode
    }

    organisasjonsenhet {
      studieAnsvarlig {
        navnAlleSprak {
          nob
        }
        fakultet {
          navn {
            nob
          }
        }
        institusjon {
          navn {
            nob
          }
        }
      }
    }
    rapporteringsstudieprogram {
      navnAlleSprak {
        nob
      }
      personroller {
        rolle:fsRolle {
          erAktiv
          harTilgangTilFagpersonweb
          kode
        }
        personProfil {
          institusjonsEpost
          fornavn
          etternavn
        }
      }
    }
  }
}

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) {
        pageInfo {
        startCursor
        endCursor
        hasNextPage
        }
        nodes {
        tidspunkt
            emne {
                id
                kode
                versjonskode    
                navnAlleSprak {
                nob
                }
                studieniva{
                    kode
                }
                rapporteringsstudieprogram {
                    kode
                    navnAlleSprak {
                        nob
                    }            
                }

                organisasjonsenhet{
                    studieAnsvarlig {
                        navnAlleSprak{
                            nob
                        }
                        fakultet{
                            navn{
                                nob
                            }
                        }
                        institusjon{
                            navn {
                                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.

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 igjen

  • Hva skjer med ufullstendige meldinger?

    • De vil feile og det vil vi oppdage i loggene og kan ta aksjon basert på det.

  • 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:

  • ? (Avventer fra FS)

CES :

API Nøkkel

Kommentarer