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