isvu rest api na foi, stanje i planovi - srce.unizg.hr · nastava • dva korisnika: fakultet...
TRANSCRIPT
ISVU REST API na FOI, stanje i planovi
Darko GrabarDario GrdSilvio Vuk
Okupljanje korisnika ISVU-a, 25.03.2015.
FOI Centar za razvoj programskih proizvoda
• Podrška poslovanju FOI-a (razvoj i održavanje potrebnih aplikacija i servisa)
• Planiranje, razvoj i pružanje infrastrukture potrebne za e-učenje
• Uključivanje u razvojne i istraživačke projekte Fakulteta organizacije i informatike
• Trenutno aktivno radimo na novom FOI Studentskom informacijskom sustavu (STIS)
• Prva verzija aplikacija zastarjela (razvijena na temelju uvoza podataka putem 2 csv datoteke)
Trenutno stanje – FOI je RESTful
WebWeb
E-učenjeE-učenje
E-portfolioE-portfolio
eRadovieRadovi
Stud. praksaStud. praksa
NPPNPP
JIOSJIOS
HarvesterHarvester
CECIISCECIIS
NastavaNastava
KadrovskaKadrovskaQueueQueue
RačunovodstvoRačunovodstvo
PlanerPlaner
KnjižnicaKnjižnica
Trenutno stanje – korištenje ISVU API-a
• Evidencija nastave i raspored: predmeti, nastavnici na predmetu i opterećenja, upisani studenata, ispitni rokovi,…
• FOI Web: Prikaz ispitnih rokova• Moodle: Automatski upis studenata u kolegij • NPP: Sinkroniziranje stanja (predmeti i šifre) • Planer studija: Učitavanje službenog studija i validacija • Stručna Praksa: Provjera prava za odlazak na praksu• Završni radovi: Provjera prava za rezervaciju završnog ili
diplomskog rada
• FOI Proxy Jednostavno dodavanje novih Web servisa (XML konfiguracija) Sprema podatke u privremenu memoriju Jedino mjesto koje komunicira s ISVU-om Omogućava agregaciju podataka iz više servisa Omogućava XML/JSON transformaciju
STIS verzija 1
• U upotrebi od 2008. godine• Uvoz podataka putem 2 csv
datoteke• Informacije o studentima
O upisanim i položenim kolegijima po akademskim godinama O završetku studija (provjera uvjeta) O ispunjenim uvjetima za nastavak studija (provjera uvjeta)
• Rangiranje Za školarine Najboljih studenata Najboljih škola
• Korisnici Referada Prodekan za nastavu
NPP (Nastavni plan i program)
• Nastao prije ISVU API-a• Centralno mjesto vezano uz nastavni plan i program• Sadrži sve informacije o pojedinom studiju i predmetima• Sinkronizacija šifri i osnovnih podataka
Nastava
• Dva korisnika: Fakultet organizacije
i informatike Varaždin Agronomski fakultet Zagreb
• Više uloga Student Nastavnik Pročelnik Satničar Administrator Super Administrator
• Norme nastavnika• Planiranje nastave, kolokvija i ispitnih rokova• Unos održane nastave
Nastava
• Evidencija dodatnog radnog opterećenja Voditeljstvo studija Mentorstvo studenata Mentorstvo stručnog projekta Diplomski / završni radovi Održani ispiti Mentorstvo stručne prakse
• Raspored Sustav za kreiranje rasporeda (dodatni prikazi po
komponentama, validacije, provjera zauzetosti…) Raspored za studij, dvoranu, zgradu, nastavnika, predmet,
grupu studenata na godini…• Razni izvještaji po ulogama korisnika (interni, Ministarstvo,
Sveučilište)
Nastava – ISVU REST API
• Svi zahtjevi za podacima će biti prebačeni na STIS (za FOI)• Inicijalni dohvat
Ustrojstvenih jedinica (katedri / zavoda) Studija i njihovih detalja Predmeta i njihovih detalja Upisanih studenata na akademskoj godini
• Plan nastave Opterećenje predmeta i nastavnika Broj upisanih studenata na predmetu unatrag 2 godine Popis upisanih studenata na predmet s njihovim detaljima
• Planiranje ispitnih rokova Upis svih ispitnih rokova u ISVU nakon odobrenja prodekana za
nastavu
Nastava – ISVU REST API
• Evidencija dodatnog radnog opterećenja Pregled upisanih studenata i njihovih detalja Dohvat održanih ispitnih rokova i broj studenata koji su izašli
na pojedini rok• Raspored
Broj upisanih studenata na predmetu unatrag 4 godine
STIS v2
• Centralni sustav za preuzimanje ISVU podataka, komunikaciju s ostalim aplikacijama, pregled i izvještavanje
• Na novoj verziji započeli s radom početkom 2015. Kompletni prijelaz na ISVU REST API i dohvaćanje proširenog
skupa podataka Razvoj optimalnog mehanizma za preuzimanje podataka koji će
osigurati ažurnost podataka bez opterećenja na ISVU i kršenja ISVU ograničenja
Razvoj novih REST servisa potrebnih ostalim aplikacijama na FOI-u
Novo i naprednije grafičko sučelje za pretraživanje, prikaz i izvještavanje
Izrada potrebnih izvještaja
STIS v2
• Zašto Validacija FOI studija (nemoguća u ISVU)
Analitika i izrada naprednih izvještaja: popis studenata koji su položili matematiku 1 i
upisali matematiku 2 a prosjek ocjena im je manji od 3.5, s time da se ne zovu Ivo i da u knjižnici nisu nikad posudili ni jednu knjigu
Komunikacija s ostalim aplikacijama Vlastiti REST API Brzina Podrška za „pametnije” servise (slično kao i za analitiku i
izvještaje) Popis studenata koji su 7 put prijavili neki ispit
STIS v2
• Osnovne mogućnosti Podaci o studentima Podaci o kolegijima Podaci o ispitnim rokovima Pregled studija Izrada izvještaja Administratorsko sučelje REST servisi Modul za uvoz podataka (ISVU import)
• Korisnici Prodekan za nastavu, referada Nastavnici Studenti Ostale FOI aplikacije put REST API-ja
STIS v2
• Pregled studenata
• Pretraživanje po: imenu i prezimenu, indeksu/jmbagu, akademskoj godini, studiju i tipu studija, …
• Validacija studija (sukladno FOI pravilima)
STIS v2
• Pregled kolegija
• Osnovni podaci o kolegiju, ispiti po akademskim godinama i datumu, pregled upisanih studenata po akademskim godinama, statistika prolaznosti,…
STIS v2
• Preuzimanje podataka putem ISVU REST API-ja• 6 skripti za dohvat podatka
Uvoz ISVU kataloga Uvoz izvoditelja kolegija Uvoz slika studenata
Uvoz podataka o studentu i njegovim upisanim predmetima Uvoz ispitnih rokova za pojedini kolegij i akademsku godinu Uvoz prijavljenih ispita za pojedinog studenta
Jako se oslanjamo na Cache
STIS v2
• Workflow (Student) Dohvati popis studenata za akademsku godinu (ponavlja se od
trenutne dokle god ima rezultata):/upisgodine/student/akademskagodina/{akademskaGodina}
Za svakog studenta provjeravamo u cacheu, da li je već prije bio procesiran
Dohvaćamo podatke o studentu (“/student/jmbag/{jmbag}”) => oib,broj indeksa, ime, prezime, spol, jmbag, završena škola...
Dohvat upisnih listova za studenta: /upisgodine/student/jmbag/{jmbag}
STIS v2
• Workflow (Student) Dohvat detalja za svaki upisni list:
/upisgodine/sifraupisnoglista/{sifraUpisnogLista}
Usporedba hash zapisa upisnog lista, s onime u bazi, kako nebi radili nepotrebne pozive prema ISVU-u
Dohvati podatke o smjeru: /nastavniprogram/elementstrukturestudija/{sifraElementaStruktureStudija}
Provjera u cacheu da li je smjer već procesiran
Zatim za svaki upisani kolegij u tom upisnom listu: Dohvat podataka o kolegiju: /nastavniprogram/predmet/sifra/
{sifraPredmetaUIsvu} Provjera u cacheu da li je kolegij već procesiran.
STIS v2
• Workflow (Ispitni rokovi za kolegij) Dohvati sve kolegije koji ulaze u prosjek (* iz baze)
Zatim dohvatimo rokove od 2000. do današnje godine/nastavniplan/rok/predmet/{sifraPredmetaUIsvu}/akademskagodina/{akademskaGodina}
Za svaku godinu „hashiramo” zapis i provjeravamo sa zapisom u bazi radi uštede poziva i vremena
Ukupno vrijeme izvođenja: ~10 minuta cca. 70% otpada na dohvaćanje podataka iz ISVU-a
STIS v2
• Workflow (Prijave ispita studenta) 2 opcije dohvaćanja podataka (quick, akgod)
Quick Samo nepoloženi predmeti→ Akgod Samo studente upisane u traženu akademsku →
godinu, i njihove upisne listove iz tražene akademske godine
Podaci o pojedinom predmetu za studenta se povlače iz baze podataka (ovisna o drugim skriptama)
ispit/prijava/student/{jmbag}/{sifraPredmetaUISVU} Dohvate se studentovi izlasci na ispit za pojedini kolegij i
izbrišu se svi izlasci koji se ne nalaze na tom popisu za taj kolegij i studenta.
STIS v2
• Workflow (Prijave ispita studenta)
Za svaki izlazak dohvate se njegove informacije (ukoliko postoje)
/ispit/usmeni/{sifraPredmetaUISVU}/{godinaRok}/{mjesecRok}/{danRok}/{jmbag}
U ovom postupku je također uveden hash za praćenje promjena podataka
STIS v2
• Statistika (Prijave ispita studenta) Uz opciju samo 2012. akademske godine Broj poziva: 65606
STIS v2
• Statistika (Prijave ispita studenta) Uz opciju samo 2012. akademske godine Ukupno vrijeme ~1,5h
Problemi
• Veliki broj poziva i vrijeme izvođenja kod dohvata podataka Trenutni prihvatljiv način izvođenja je za zadnju akademsku
godinu, no što kada treba provjeriti starije podatke, da nije došlo do promjena?
• Ne možemo se pouzdati u stanje u bazi• Potrebno pronaći balans između točnosti podataka i utroška
resursa (paziti da se ne prekorači broj zahtjeva) Dnevno ažurirati samo podatke za koje je vjerojatno da će se
promijeniti, periodično raditi „full import” (inkrementalno)• Ogroman broj poziva• ISVU HTTP 503 - 4 potpuna uvoza podataka = 4 503 greške
(na API proba)
• Sitne greške: npr. dohvaćanje podataka o 2 ispitna roka na isti datum (za isti kolegij)
Prijedlozi
• Samo 2 i svi problemi će biti riješeni :)
1. Agregirani rezultati Popis ispitnih rokova uvijek zahtjeva dohvaćanje detalja o
ispitnom roku Upisani studenti na predmetu (uvijek trebamo i detalje o
studentu)
2. Zadnja promjena entiteta Popis upisnih listova izmijenjenih u određenom razdoblju Ili još bolje…popis studenata kojima se nešto promijenilo
(prijavio ispit, položio predmet, promijenio prezime, …)