Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Innledning

Dette er en integrasjon for overføring av data fra FS til Canvas. Integrasjonen består av 7 hoved deler.

overviewDiagram.png

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

LMS trenger en nye datasoverføringsintegrasjon som studie-strukturen (institusjon, fakultet, institutt, 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.

For kravspek/bestillings-dokument, se her :

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 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?

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 å opprette konto-hiererkiet

 Click here to expand...
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
        }
      }
    }
  }
}

Spørring brukt til å koble emner til kontoer

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
  }
}

Spørring brukt til å koble studieprogram/kull/klasse til kontoer

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
          betegnelse {
            kode
            navnAlleSprak {
              en
              nb
              nn
            }
          }
        }
        tjenestenummerForLms
        erAktiv
        klasser(erAktiv: true, skalEksporteresTilLms: true) {
          kode
          lmsRomkode
          skalEksporteresTilLms
          erAktiv
          navnAlleSprak {
            und
          }
        }
      }
      skalEksporteresTilLms
      skalPubliseres
    }
    pageInfo {
      endCursor
      hasNextPage
      startCursor
    }
    totalCount
  }
}

Spørring brukt til å koble etterudaningsenheter (EVU) til emner

query EtterutdanningsKursAktivitet($inst: String!) {
  evuKurs(
    filter: {eierInstitusjonsnummer: $inst, skalEksporteresTilLms: true, erAktiv: true}
    first: 1000
  ) {
    nodes {
      kurskode
      skalEksporteresTilLms
      tidsangivelseskode
      erAktiv
      navnAlleSprak {
        eng
        nno
        nob
      }
      kursperiode {
        fraDato
        tilDato
      }
      tjenestenummerForLms
      lmsRomkode
      administrativtAnsvarligEnhet {
        erAktiv
        skalEksporteresTilLms
        navnAlleSprak {
          eng
          nno
          nob
        }
        lmsRomkode
        instituttnummer
        gruppenummer
        fakultet {
          navn {
            eng
            nno
            nob
          }
          fakultetsnummer
        }
      organisasjon {
        organisasjonskode
        navn {
          nob
          eng
          nno
        }
      }
      }
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}

Spørring brukt til å koble undervisningsenheter (UE) og undervisningsaktiviteter (UA) til emner

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
      }
    }
    tjenestenummerForLms
    undervisningsenheter(filter: {skalEksporteresTilLms: true}) {
      lmsRomkode
      terminnummer
      termin {
        arstall
        betegnelse {
          kode
        }
      }
      undervisningsaktiviteter {
        kode
        navnAlleSprak {
          nob
          nno
          eng
        }
        terminnummer
        skalEksporteresTilLms
        lmsRomkode
      }
      undervisningenFolgesAv {
        kode
        navnAlleSprak {
          nob
          nno
          eng
        }
      }
      undervisningenFolger {
        kode
        navnAlleSprak {
          nob
          eng
          nno
        }
      }
    }
    organisasjonsenhet {
      studieAnsvarlig {
        gruppenummer
        instituttnummer
        fakultet {
          fakultetsnummer
          navn {
            eng
            nno
            nob
          }
        }
        organisasjon {
          organisasjonskode
        }
        skalEksporteresTilLms
        navnAlleSprak {
          eng
          nno
          nob
        }
      }
    }
  }
  pageInfo {
    endCursor
    hasNextPage
  }
}

Spørring brukt til å koble studenter/lærere/administrasjoner til kontoer/emner/EVU/UE/UA

query singleEmne($inst: String!, $emneKode: [String!]) {
  emner(filter: {eierInstitusjonsnummer: $inst, emnekoder: $emneKode}) {
    nodes {
      kode
      versjonskode
      tjenestenummerForLms
      undervisningsenheter {
        terminnummer
        termin {
          arstall
          betegnelse {
            kode
            navnAlleSprak {
              en
              nb
            }
          }
        }
      }
    }
  }
}

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

  • No labels