Utredning av å erstatte SQL-utplukk med FSWS

Det er ønskelig å bytte ut de manuelle SQL-utplukkene i Cerebrums FS-import med REST-tjenestene til FSWS som lar oss hente ut BAS-data. Dette dokumentet har som mål å gi en oversikt over hvilke data som i dag hentes ut via SQL-utplukk, og hvordan REST-tjenestene kan erstatte disse.

Innhold

1   Komponenter i Cerebrum

Følgende komponenter i Cerebrum benytter seg av SQL-utplukk direkte:

import_from_FS: Gjør den største delen av uttrekkene og lagrer dette som XML-filer som benyttes av andre komponenter som ikke er listet opp her.

update_FS: Oppdaterer FS med brukernavn og e-postadresser opprettet av Cerebrum.

hr2fs-person: Oppretter og oppdaterer personer og fagpersoner i FS med informasjon hentet fra SAP.

bofhd: Gjør direktekall ved kjøring av kommandoene person student_info og pquota info.

2   Import fra FS

Følgende underoverskrifter er navn på funksjonskall i Cerebrum.

Med BAS-eksport menes datadumpene som kan hentes ved å benytte en av operasjonene getBASData, getBASDataAsAttachment, getBASDataMedFP, getBASDataMedFPAsAttachment eller getBASEksport, fra Felles Studentsystem: Bastjenester. Dataelementene har vi hentet fra schema https://www.fellesstudentsystem.no/dokumentasjon/teknisk/fsws-dok/bas/bas-1.6.html.

For mer detaljer om hva Cerebrum importerer fra FS, se Prosessar og utplukksreglar for studentautomatikken.

2.1   fs.undervisning.list_studenter_alle_kull

Lister alle studenter med studentstatus AKTIV eller PERMISJON med studierett som fortsatt er gyldig. Ser på alle kull siden 2002.

Kan utledes fra student/studieTilknytninger/programLink i BAS-eksport.

Brukes av import_from_FS (write_edu_info).

2.2   fs.undervisning.list_studenter_alle_kullklasser

Lister alle studenter knyttet til kullklasser der fs.kull.status_aktiv er J og fs.studieprogramstudent.studentstatkode er AKTIV, PERMISJON eller DELTID.

Kullklasser kan utledes fra student/studieTilknytninger/programLink/kull/klasse i BAS-eksport.

Brukes av HiØ og HiH sin variant av import_from_FS (write_edu_info).

2.3   fs.undervisning.list_studenter_alle_undenh

Lister alle studenter på alle undervisningsenheter,

Henter ut og slår sammen:

  • Feltene fodselsdato, personnr, institusjonsnr, emnekode, versjonskode, terminkode, arstall, terminnr fra tabellen fs.undervisningsmelding hvor terminkode er VÅR eller HØST i inneværende år og tilbud om undervisning er gitt (via fs.tilbudsstatus).
  • Samme felter (med terminkode hardkodet til 1) fra fs.vurdkombmelding og fs.vurderingstid (sett opp mot fs.vurdkombenhet) hvor vurderingstid.arstall_gjelder_i er i år eller senere.

Kan muligens utledes fra student/studieTilknytninger/undervisningsLink i BAS-eksport.

Brukes av import_from_FS (write_edu_info).

2.4   fs.undervisning.list_studenter_alle_undakt

Lister alle studenter på alle undervisningsaktiviteter.

Kan utledes fra student/studieTilknytninger/undervisningsLink/undaktivitetLink i BAS-eksport.

Brukes av import_from_FS (write_edu_info).

2.5   fs.evu.list_studenter_alle_kursakt

Lister alle studenter på alle kursaktiviteter.

Kan utledes fra student/studieTilknytninger/kursLink.

Brukes av import_from_FS (write_edu_info).

2.6   fs.evu.list

Lister informasjom om personer som er "ekte EVU-studenter, dvs. registrert i EVU-modulen i tabellen fs.deltaker" og knyttet til kurs som tidligst be avsluttet for 30 dager siden. I tillegg må etterutdkurs.kursavbruddskode være null og etterutdkurs.status_kontotildeling ikke være N.

I tillegg til vanlig kontaktinformasjon fra person- og deltakertabellene hentes deltakernr, etterutdkurskode, kurstidsangivelseskode og studieprogramkode.

Kursdeltakelse kan utledes fra student/studieTilknytninger/kursLink. Hvem som er EVU-studenter kan utledes fra student/studieTilknytninger/programLink hvor studierettStatus vil være EVU (?).

Brukes av import_from_FS (write_edu_info).

2.7   fs.undervisning.list_fagperson_semester

Lister informasjon om alle aktive fagpersoner.

Kan utledes fra fagperson-elementene.

Brukes av import_from_FS (write_person_info).

2.8   fs.student.list

Sammenslåing av:
  • fs.student._list_gyldigopptak
  • fs.student._list_drgradsopptak
  • fs.student._list_gammelopptak_semreg

Brukes av import_from_FS (write_person_info), og brukes for å identifisere opptaksstudenter.

2.9   fs.student._list_gyldigopptak

Lister informasjon om alle studenter med gyldig opptak tildelt for 2 år eller mindre siden, samt alle med opptak som blir gyldig om 14 dager

Kan utledes fra student/studieTilknytning/programLink.

2.10   fs.student._list_drgradsopptak

Lister informasjon om alle doktorgradsstudenter med gyldig opptak til doktorgradsstudieprogram

Dette kan muligens ikke utledes, fordi student/studieTilknytning/programLink ikke inneholder studienivåkode. Det ser heller ikke ut til å finnes noen studierettStatus "DRGRAD".

2.11   fs.student._list_gammelopptak_semreg

Lister informasjon om alle studenter med gyldig opptak som har hatt en forekomst i registerkort i løpet av nåværende eller forrige år, dato_studierett_gyldig_til nå eller senere og ikke privatiststatus.

Kan sannsynligvis utledes fra student-elementene i BAS-eksporten om alle med gyldig studierett er med. Man kan ikke sjekke direkte for forekomster i registerkort, men student.betalingOk og student.registreringOk er verdier fra registerkort-tabellen.

2.12   fs.student.list_privatist

Lister personer med privatistopptak til et studieprogram. Tar med personer som i tillegg til å ha status som privatist, oppfyller en av følgende krav: - har gyldig studierett og har fått tildelt studierett mellom 2003-01-01 og dagens dato pluss 14 dager - har gyldig studierett og har vært registrert (forekomst i registerkort-tabell) i fjor eller senere

Kan sannsynligvis utledes fra student/studieTilknytninger/programLink hvor studierettStatus vil være PRIVATIST.

Brukes av import_from_FS (write_person_info).

2.13   fs.student.list_privatist_emne

Lister personer som er "uekte privatister", dvs. er eksamensmeldt til et emne i et studieprogram de ikke har opptak til.

Kan utledes fra student/studieTilknytninger/vurderingsLink og student/studieTilknytninger/programLink

Brukes av import_from_FS (write_person_info).

2.14   fs.student.list_aktiv

Henter fødselsnummer, studieprogram, studieretning og kull for alle aktive studenter.

Sammenslåing av:
  • fs.student._list_aktiv_semreg
  • fs.student._list_aktiv_enkeltemne
  • fs.student._list_aktiv_avlagteksamen
  • fs.student._list_aktiv_utdplan

Brukes av import_from_FS (write_person_info).

2.15   fs.student._list_aktiv_semreg

Lister alle semesterregistrerte som i tillegg har en eksamensmelding i et emne som kan inngå i et studieprogram som de har opptak til.

Kan utledes fra student, student/studieTilknytninger/programLink og student/studieTilknytninger/vurderingsLink.

2.16   fs.student._list_aktiv_enkeltemne

Lister alle semesterregistrerte med gyldig opptak til studieprogrammet ENKELTEMNE som har en gyldig eksamensmelding i et emne som kan inngå i et vilkårlig studieprogram.

Kan utledes fra student, student/studieTilknytninger/programLink og student/studieTilknytninger/vurderingsLink.

2.17   fs.student._list_aktiv_avlagteksamen

Lister alle semesterregisterte som har avlagt eksamen i inneværende år.

FSWS gir ikke informasjon om eksamen er avlagt eller ikke.

2.18   fs.student._list_aktiv_utdplan

Lister alle semesterregistrerte som i tillegg har bekreftet utdanningsplan i inneværende semester.

FSWS gir ikke informasjon om utdanningsplan er bekreftet eller ikke.

2.19   fs.student.list_aktiv_emnestud

Lister personer som anses som aktive studenter på grunnlag av gyldig undervisningsmelding og gyldig semesterkort i inneværende semester. Disse har ikke nødvendigvis studierett på noen studieprogrammer.

Kan sannsynligvis utledes fra student.registreringOk og student/studieTilknytninger/undervisningsLink.

Brukes av import_from_FS (write_person_info).

2.20   fs.student.list_semreg

Lister informasjon om semesterregistrering og betaling fra fs.registerkort. Fra denne tabellen hentes fødselsnummer, regformkode, dato_endring og dato_opprettet.

Semesterregistrering og betaling står i student.registreringOk og student.betalingOk. Man kan ikke hente ut feltene dato_endring og dato_opprettet for disse.

Brukes av import_from_FS (write_person_info, write_regkort_info).

2.21   fs.student.get_semreg

Henter data om semesterregistrering og betaling for en student i et gitt semester og år, for både gyldige og ugyldige registerkort.

Henter feltene regformkode, betformkode, dato_betaling, dato_regform_endret, status_bet_ok, status_reg_ok og dato_endring (fra fs.fakturareskontro).

Man kan ikke hente ut denne informasjonen fra FSWS, sett bort fra status på registrering og betaling.

Brukes av bofhd (person_student_info og pquota_info).

2.22   fs.student.list_eksamensmeldinger

Lister informasjon om alle eksamensmeldinger i inneværende år.

Kan utledes fra student/studieTilknytning/vurderingsMelding.

Brukes av import_from_FS (write_person_info, write_topic_info).

2.23   fs.student.list_drgrad

Lister informasjon om alle aktive doktorgradsstudenter, dvs. de som har en studierett til et program som har nivåkode større eller lik 900. Dato for tildelt studierett må være passert, dato for fratatt studierett må være ikke passert eller ikke satt.

Dette kan muligens ikke utledes, fordi student/studieTilknytning/programLink ikke inneholder nivåkode. Det ser heller ikke ut til å finnes noen studierettStatus "DRGRAD".

Brukes av import_from_FS (write_person_info).

2.24   fs.student.list_permisjon

Lister personer som har innvilget permisjon.

Kan utledes fra student/studieTilknytning/programLink hvor studentStatus vil være PERMISJON.

Brukes av import_from_FS (write_person_info).

2.25   fs.info.list_ou

Lister informasjon om alle steder registrert i tabellen fs.sted.

Felter: institusjonsnr, fakultetsnr, instituttnr, gruppenr, instituttnr_org_under, gruppenr_org_under, stedakronym, stednavn_bokmal, stedkortnavn, adrlin1, adrlin2, adrlin3, postnr, url, adrlin1_besok, adrlin2_besok, postnr_besøk, telefonnr, faxnr, emailadresse, bibsysbeststedkode, stedkode_konv

Må utvides til å inneholde mer informasjon. Følgende kan hentes fra sted-elementer i FSWS: institusjonsnr, faknr, instituttnr, gruppenr, "navn" (ukjent om dette inneholder akronym, full- og kortnavn).

Operasjonen getSted gir like mye informasjon som BAS-eksporten.

Brukes av import_from_FS (write_ou_info).

2.26   fs.info.get_ou

Lister ut informasjon om et spesifikt sted. Returnerer samme felter som fs.info.list_ou.

Må utvides til å inneholde mer informasjon., tilsvarende fs.info.list_ou.

Operasjonen getSted gir like mye informasjon som BAS-eksporten.

Brukes av hr2fs-person.

2.27   fs.person.list_status_nettpubl

Lister alle personer med en viss akseptansetypekode. Koden som er interessant er NETTPUBL.

Kan utledes fra student.tillatNETTPUBL og fagperson.tillatNETTPUBL.

Brukes av import_from_FS (write_nettpubl_info).

2.28   fs.info.list_studieprogrammer

Lister alle definerte studieprogrammer.

Felter: studieprogramkode, studieprognavn, institusjonsnr_studieansv, faknr_studieansv, instituttnr_studieansv, gruppenr_studieansv, studienivakode, status_utgatt, status_utdplan

Noe av denne informasjonen kan leses fra program-elementene:
  • id inneholder nok studieprogramkode som et minimum
  • stedref inneholder institusjonsnr, faknr, instituttnr og gruppenr
  • navn inneholder studieprognavn

status_utgatt brukes kun til å filtrere bort utgåtte studieprogrammer og trengs ikke om disse filtreres bort som standard. status_utdplan brukes tilsynelatende ikke.

Mangler studienivåkode.

Brukes av import_from_FS (write_studprog_info).

2.29   fs.info.list_emner

Lister alle emner med informasjon om ansvarlig sted.

Felt: emnekode, versjonskode, studienivakode, institusjonsnr, faknr_reglement, instituttnr_reglement, gruppenr_reglement

studienivakode eksporteres til LDAP og brukes av studentautomatikken for å avgjøre hvem som er doktorgradsstudenter.

Mangler mulighet for å liste ut emner, selv om noe av denne informasjonen er mulig å utlede fra undervisningsenheter.

Brukes av import_from_FS (write_emne_info), ...

2.30   fs.undervisning.list_alle_personroller

Lister alle aktive roller for alle personer, dvs. alle felter i fs.personrolle hvor dato_fra < dagens dato og dato_til >= dagens dato.

Det er ikke mulig å liste ut alle personroller direkte. fagperson-elementer inneholder rolleinformasjon. Rolleinformasjon for studenter må eventuelt utledes fra student.studieTilknytninger.

Brukes av import_from_FS (write_personrole_info), ...

2.31   fs.person.list_fnr_endringer

Lister alle registrerte fødselsnummerendringer, med tidligere og nåværende fødselsnummer samt dato endringen ble foretatt.

Fødselsnummerendringer kan ikke hentes via FSWS.

Brukes av import_from_FS (write_fnrupdate_info).

2.32   fs.betaling.list_kopiavgift_data

Lister alle personer som har betalt kopiavgift eller har fritak for betaling av kopiavgift.

Data om betalt kopiavgift kan ikke hentes via FSWS.

Brukes av import_from_FS (write_betalt_papir_info).

2.33   fs.person.list_email

Lister e-postadresse og fødselsnummer for alle personer i FS (tabell fs.person).

Delvis mulig via FSWS, må utledes fra student- og fagperson-elementer i BAS-eksporten. Er dette nok?

Operasjonen getEmail kan potensielt endres til å liste alle e-postadresser om fødselsnummer ikke er oppgitt, eller det kan lages en ny operasjon getEmails.

Brukes av update_FS.

2.34   fs.person.list_uname

Lister brukernavn og fødselsnummer for alle personer i FS (tabell fs.person).

Delvis mulig via FSWS, må utledes fra student- og fagperson-elementer - er dette nok?

Operasjonen getUsername kan potensielt endres til å liste alle brukernavn om fødselsnummer ikke er oppgitt, eventuelt kan det lages en ny operasjon getUsernames.

Brukes av update_FS.

2.35   fs.person.get_fagperson

Henter informasjon om en fagperson identifisert med fødselsnummer.

Kan utledes fra fagperson-elementer i BAS-eksporten eller hentes med operasjonen getFagperson.

Brukes av hr2fs-person.

3   Eksport til FS

Cerebrum har behov for å opprette og oppdatere personer og fagpersoner i FS.

3.1   fs.person.write_email

Oppdaterer e-postadressen til en person identifisert med fødselsnummer.

Operasjonen setEmail kan benyttes til dette.

Brukes av update_FS

3.2   fs.person.write_uname

Oppdaterer brukernavnet til en person identifisert med fødselsnummer.

Operasjonen setUsername kan benyttes til dette.

Brukes av update_FS.

3.3   fs.person.add_person

Oppretter en ny person. (fnr, pnr, firstname, lastname, email, gender, birthdate, ansattnr)

Ikke mulig i FSWS, man kan kun opprette fagpersoner. Er dette bra nok?

Brukes av hr2fs-person.

3.4   fs.person.set_ansattnr

Oppdaterer ansattnummeret til en person identifisert med fødselsnummer.

Ikke mulig i FSWS.

Brukes av hr2fs-person.

3.5   fs.person.add_fagperson

Oppretter eller oppdaterer en fagperson.

Vi skriver per dags dato til følgende felt: fodselsdato, personnr, institusjonsnr_ansatt, faknr_ansatt, instituttnr_ansatt, gruppenr_ansatt, telefonnr_arbeide, stillingstittel_norsk, telefonnr_fax_arb, status_aktiv

Operasjonen setFagperson kan benyttes til dette.

Brukes av hr2fs-person

4   Oppsummering

Mye av det mest sentrale er på plass, men det er noe informasjon som ikke kan hentes ut via BAS-tjenestene i FSWS. I noen tilfeller kan potensielt CRUD-tjenestene benyttes for å hente data direkte fra visse tabeller, men det mest hensiktsmessige er trolig å utvide REST-tjenestene/BAS-eksporten.

De nåværende SQL-utplukkene har forholdsvis mye logikk i seg. Det er vanskelig å vurdere om BAS-eksporten bruker den samme logikken, dvs. om vi får tilnærmet likt datagrunnlag. Det er likevel grunn til å tro at BAS-eksporten gir et godt bilde av hvem som har reelle, aktive tilknytninger som studenter.

For UiO sin del bør vi gå i dialog med AF om å se på om de eksisterende utplukkene er nødvendige, eller om vi kan bruke utplukke som FSWS gir oss.

Å bytte ut SQL-utplukkene vil trolig være en relativt tidkrevende prosess, da vi må ha en full gjennomgang av alle skript som genererer eller benytter seg av XML-filene med data fra FS.

Vi går i retning av mer hendelsesbasert oppdatering av IT-systemer, i steden for fullstendige, regelmessige importer. For at det skal være mulig å la endringer i FS populere seg kjapt til Cerebrum, og videre ut til andre systemer, har vi behov for utplukk som er hendelsesbaserte. Dette kan for eksempel gjøres ved at Cerebrum kan spørre om å få alle endringer for de siste X antal minuttene, eller aller helst ved å lytte på en tjeneste som dytter ut endringer når de oppstår (push).

Oppsummert trenger vi fra FSAT:

  • Mer dokumentasjon om hvilke utplukk som gjøres i de ulike REST-kallene.
  • Mulighet for utplukk av hendelser, enten ved å lytte på en kø, eller kunne spørre om endringer fra de siste minuttene.
  • At vi får tilgang til den resterende informasjon som vi vet mangler, og som er beskrevet lenger oppe i dette dokumentet.

Fra UiO/LOS/AF trenger vi:

  • En dialog for å se på om de eksisterenede utplukkene er dekkende, eller om de kan forenkles.
Av jbr
Publisert 20. apr. 2016 14:20