isvu rest api na foi, stanje i planovi - srce.unizg.hr · nastava • dva korisnika: fakultet...

30
ISVU REST API na FOI, stanje i planovi Darko Grabar Dario Grd Silvio Vuk Okupljanje korisnika ISVU-a, 25.03.2015.

Upload: others

Post on 01-Sep-2019

2 views

Category:

Documents


0 download

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

STIS verzija 1

Nova arhitektura

……

NPPNPP

NastavaNastava

StudentiNastavnici

Referada

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 - povezanost s ostalim aplikacijama

Nastava

FOIweb

STIS

ISVU

Kadrovska

NPP

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

• Statistika (Student) Ukupno ISVU poziva: 49667

STIS v2

• Statistika (Student) Ukupno vrijeme izvršavanja: ~60 minuta

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, …)