ALLEGATO: Didanet Studenti - Documentazione Tecnica

ALLEGATO: Didanet Studenti - Documentazione Tecnica
Componenti applicative
La soluzione DIDANET è composta da diverse web-app, ognuna delle quali preposta alla erogazione di
servizi differenti e caratterizzata da una specifica architettura:




dida-jp, web-app realizzata in Java/JSP ed architettura a 2 livelli, eroga la quasi totalità delle
funzionalità e definisce la cornice1 applicativa della soluzione
dida-segr, web-app realizzata in Java/JSF per la componente di front-end2, Java per la componente
di back-end3, architettura a 3 livelli, eroga alcuni servizi a supporto della operatività di backoffice
della Segreteria Studenti.
dida-ws, web-app realizzata in Java/Spring ed architettura a 2 livelli, espone la libreria dei web
services di consultazione dell’assetto e della didattica della scuola
dida-bs, web-app realizzata in Java ed architettura a 2 livelli, a supporto della esecuzione di servizi di
elaborazioni massive in differita (batchschedulati e non)
Architettura
Ognuna delle web-app sopra citata prevede una architettura in cluster, la quale può essere schematizzata
come segue4:
Frame HTML
dida-fe
3
dida-be
4
Per semplicità viene riportato lo schema della architettura a 2 livelli: quella a 3 livelli è praticamente identica, con la
differenza che è presente un secondo TOMCAT, uno per ogni nodo, tra il TOMCAT di FE e lo STORAGE
1
2
LOAD BALANCER
APACHE
APACHE
INFRASTRUCTURE
MONIT
TOMCAT
TOMCAT
ELK
STORAGE
NSF
COLLECTD
DBMS
Relativamente al file system condiviso, questo viene utilizzato per distribuire e condividere tra tutte le webapp risorse utilizzate dai servizi applicativi, quali ad esempio i template utilizzati nella produzione della
reportistica; il file system condiviso viene anche utilizzato come archivio, temporaneo o permanente, delle
risorse (PDF, Excel, Docx, file TXT e CVS, …) generate dai servizi applicativi.
Il DBMS utilizzato è ORACLE: si è ricorso ad alcune funzioni di aggregazioni dati, non è stato fatto uso di HINT
ed il codice PL/SQL sviluppato è circoscritto ad alcuni servizi di utilità, con i quali gestire l’archiviazione e lo
storico di alcuni dei dati operazionali. Sono stati definiti alcuni trigger applicativi per gestire la
sincronizzazione di dati e trigger di sistema per impostare alcuni parametri di sessione (ad esempio: le
ricerche testuali vengono effettuate in modalità “case-insensitive”, per facilitare l’utente nella operatività
quotidiana).
NOTA: la soluzione era stata originariamente realizzata su DBMS MySQL, ma dopo i primi mesi di esercizio si
è deciso di procedere con il porting ad ORACLE.
Al fine di supportare alcuni tipi dato presenti su MySQL e non presenti su ORACLE, l’accesso al DBMS viene
mediato con il supporto di un proxy: in questo modo, ad esempio, è possibile ottenere dal cursore un oggetto
java.sql.Time, pur non essendo presente quel tipo dato su ORACLE.
Il proxy è stato anche utilizzato per surrogare altre funzionalità e limitare l’impatto sul codice applicativo;
possono essere sviluppati proxy per altri DBMS, i quali verranno attivati tramite la configurazione del
connection pool del container. In questo contesto, andrebbero differenziati per DBMS gli statement che
fanno uso di alcune funzioni di aggregazione; andrebbero inoltre verificati di script di creazione delle viste,
ampiamente utilizzate per centralizzare e semplificare l’accesso alla base dati.
La piattaforma DIDANET eroga i servizi web con protocollo https
Tecnologie
La soluzione DIDANET fa uso delle seguenti tecnologie/librerie di terze parti:











Apache/Tomcat: container della web-app
Axis, CXF e Spring Web: sviluppo ed interazione con web services
DWR e Jquery: supporto nello sviluppo del front-end
Docx4J, iText e Jasper Report: supporto nello sviluppo della documentazione di valutazione
scolastica e della reportistica
iCal4J: supporto nella esportazione di eventi e calendari in formato iCal
Jackson: supporto nella gestione di dati in formato JSON
Java: sviluppo di servizi applicativi e di accesso ai dati
Java/JSP e JSF: sviluppo del front-end
Java/Mail: supporto nella interazione con un server SMTP
Log4J: supporto nella configurazione e nella gestione dei log
SuperCVS: supporto nella gestione di file in formato CVS