Da anni l’università degli studi dell’Aquila partecipa in maniera attiva ai “programmi quadro”, strumenti finanziari dell’Unione Europea per incentivare le attività di ricerca e sviluppo che concernono quasi tutte le discipline scientifiche. I PQ sono proposti dalla Commissione Europea e adottati dal Consiglio e dal Parlamento Europeo con la procedura di codecisione.
Lo scopo dell’applicazione euProjectReporting è la semplificazione della stesura delle rendicontazioni dei progetti europei appartenenti ai PQ, tramite una comoda interfaccia Web.
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012Walter Volpi
Università degli studi di Siena – Sede di Arezzo
Dipartimento di Teoria e documentazione delle tradizioni culturali
Master Informatica del Testo – Edizione elettronica
2012
Da anni l’università degli studi dell’Aquila partecipa in maniera attiva ai “programmi quadro”, strumenti finanziari dell’Unione Europea per incentivare le attività di ricerca e sviluppo che concernono quasi tutte le discipline scientifiche. I PQ sono proposti dalla Commissione Europea e adottati dal Consiglio e dal Parlamento Europeo con la procedura di codecisione.
Lo scopo dell’applicazione euProjectReporting è la semplificazione della stesura delle rendicontazioni dei progetti europei appartenenti ai PQ, tramite una comoda interfaccia Web.
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012Walter Volpi
Università degli studi di Siena – Sede di Arezzo
Dipartimento di Teoria e documentazione delle tradizioni culturali
Master Informatica del Testo – Edizione elettronica
2012
Introduzione alla piattaforma documentale Alfresco.
Presentazione Generale della Piattaforma
- Document Management
- Record Management
- Web Content Management
L’Architettura
- I Componenti Open Source
- I Protocolli e gli Standard Supportati
- Standard JSR-170
Estendere il Modello dei Contenuti
- Custom Data Model
- Esempi
Comunicare con il Repository
- Web Script
- Esempi
Il Modello Relazionale Dei Dati
Il Workflow
- Il Simple Workflow
- Il Workflow Avanzato
Alfresco Share
- Le API di Alfresco
- API RAAR
Conclusioni
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...guest12aaa586
Tesi di laurea (Word) Faelli Roberto dal titolo "SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO: CASO DEI CURRICULUM VITAE"
Introduzione alle funzionalità di amministrazione della piattaforma di content management Alfresco.
Argomenti:
- Gestione degli Utenti
- Gestione delle Cartelle
- Gestione dei Documenti
- Uso dei Driver di rete per la gestione dei Contenuti
- Migrazione dei Documenti
- Integrazione con il Mail Server Exchange
Dispense del corso IN530 "Sistemi per l'elaborazione delle informazioni" presso il Corso di Laurea in Matematica dell'Università degli Studi Roma Tre.
[http://www.mat.uniroma3.it/users/liverani/IN530/]
Introduzione alla piattaforma documentale Alfresco.
Presentazione Generale della Piattaforma
- Document Management
- Record Management
- Web Content Management
L’Architettura
- I Componenti Open Source
- I Protocolli e gli Standard Supportati
- Standard JSR-170
Estendere il Modello dei Contenuti
- Custom Data Model
- Esempi
Comunicare con il Repository
- Web Script
- Esempi
Il Modello Relazionale Dei Dati
Il Workflow
- Il Simple Workflow
- Il Workflow Avanzato
Alfresco Share
- Le API di Alfresco
- API RAAR
Conclusioni
SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO:...guest12aaa586
Tesi di laurea (Word) Faelli Roberto dal titolo "SVILUPPO DI UNA APPLICAZIONE PER L’ACQUISIZIONE DI DATI DA SUPPORTO CARTACEO: CASO DEI CURRICULUM VITAE"
Introduzione alle funzionalità di amministrazione della piattaforma di content management Alfresco.
Argomenti:
- Gestione degli Utenti
- Gestione delle Cartelle
- Gestione dei Documenti
- Uso dei Driver di rete per la gestione dei Contenuti
- Migrazione dei Documenti
- Integrazione con il Mail Server Exchange
Dispense del corso IN530 "Sistemi per l'elaborazione delle informazioni" presso il Corso di Laurea in Matematica dell'Università degli Studi Roma Tre.
[http://www.mat.uniroma3.it/users/liverani/IN530/]
1. 1
Università degli Studi dell’Aquila
Master in Web Technology
TECNOLOGIE XML E
SERVICE ORIENTED ARCHITECTURES
A.A. 2013/14
Docente: Giuseppe Della Penna
Studente Matricola Email
SilvioD’Orazio 234422 silvio.dorazio@gmail.com
SoniaBarbieri barbieri.sonia@gmail.com
AlessandraPonis 234457 alessadra.ponis@gmail.com
2. 2
Indice
Tecnologie XML...................................................................................................................................... 3
Specifiche dell’applicazione................................................................................................................. 3
Parte I: ePubPackager........................................................................................................................ 3
Parte II:ePub Biblio............................................................................................................................. 5
La persistenza dati di ePUB Manager ................................................................................................... 6
Limiti dell’applicazione........................................................................................................................ 6
Architettura dell’applicazione.............................................................................................................. 6
Service Oriented Architectures................................................................................................................ 7
Adattamento di ePUB Manager ad un’architettura SOA ........................................................................ 7
Il servizio web di alto livello................................................................................................................. 8
La descrizione formale del WSDL...................................................................................................... 8
Il servizio web di basso livello .............................................................................................................16
3. 3
Progetto ePUB Manager
Tecnologie XML
Specifiche dell’applicazione
Il sitoePUB Managercostituisce un’interfaccia web per la gestione di file ePub, abbrevazione che sta per
“electronic publication”, ovvero un formato file molto noto basato su uno standard aperto per la
pubblicazione degli ebook.
Ogni file .epub costituisce un file compresso che contiene svariati file e directory, ciascuno dei quali ha
caratteristiche specifiche, che permettono il funzionamento di una pubblicazione.
L’interfaccia utente permette di accedere tramite un menù globale alle due funzionalità principali
dell’applicazione: l’ “impacchettatore” di ePub e il micro gestore di una sorta di biblioteca per ePub.
Il progettosi divide,infatti, indue parti principali:
- la prima parte è incentrata sulla realizzazione e il funzionamento di un piccolo sistema di
“impacchettamento”perePub.Si trattadi un processodi creazione dell’ePubche parte dall’upload
dei file che costituiranno i contenuti della pubblicazione e termina con la generazione dei file
necessari alla costruzione di un file con estensione .epub completo.
- La seconda parte è, invece, incentrata sulla realizzazione di una mini biblioteca per ePub gestita
tramite l’applicazione e salvata su File System. Tale sistema, al contrario di quello descritto nel
puntoprecedente, si basa sul processo contrario partendo da un file già compresso che viene poi
decompresso per essere analizzato da parte del sistema.
Qualsiasi utente può accedere alle funzionalità del sito, indistintamente.
Parte I: ePub Packager
Di seguitovengono elencate le funzionalità della prima parte del sito:
- Accedendoall’interfacciautentedel Packagerper ePub, l’utente può inserire i metadati principali
relativi all’ePub che verrà successivamente creato e che serviranno per la creazione del file
4. 4
content.opf.Tali metadativengonovalidati perverificare se aderiscono alle specifiche e salvati sul
database relazionale;
- Una volta aver inserito i metadati, all’utente viene richiesto di caricare dal File System: i file che
costituiranno i capitoli dell’ePub(si trattadi file con estensione .html o .xhtml che prima di essere
resi persistentiall’internodel DBvengonoopportunamente validati), i file .css per le impostazioni
sullo stile e le immagini. Tali file vengono salvati sia nel database che nel File System per poter
essere utilizzati in seguito;
- Una voltaaver inseritoi file necessari, l’utente viene rimandato verso una pagina che contiene la
listadei file xhtml (perciascunfile vengonoriportati:l’id,il nome,il path,l’indice perl’ordinamento
e il tipo),lalistadei fogli di stile e delle immagini caricate (nel caso dei csse delle immagini vengono
riportati soltanto:l’id,il nome e il pathpoiché lagestione dell’ordinamentoviene fattasoltanto per
i file con estensione .xhtml). Tali file possono essere, tramite questa interfaccia, modificati o
eliminati nel caso in cui l’utente voglia cambiare i contenuti dell’ePub prima della creazione
definitiva. E’, inoltre, possibile tramite la stessa interfaccia aggiungere nuovi file;
- Nel caso in cui l’utente cerca di aggiungere nuovi file xhtml, il sistema applica sia un controllo di
validità che un controllo per verificare se il file era stato già inserito in precedenza per evitare di
farlo uploadare nuovamente;
- Se nel passo precedente l’utente ha cliccato su “Modifica”, nel caso di un file xhtml, viene
rimandato verso una form dove poter eventualmente modificare il nome del file, l’indice (per
gestire l’ordinamento trai capitoli) e il tipo(il tipodeve,però,essere necessariamente unodi quelli
accettati dalle specifiche standard per la corretta costruzione della guide, per questo l’interfaccia
suggerisce all’utentequal è lalistadei tipi conformi alle specifiche); i file csse le immagini vengono
modificati allo stesso modo ad eccezione per l’ordinamento.
Se invece l’utente ha cliccato su “Elimina”, viene reindirizzato verso una form che permette di
eliminare definitivamente il file;
- Cliccando su “crea EPUB”, vengono creati i file e le cartelle che costituiscono le componenti
dell’ePub (la cartella META-INF con all’interno il file container.xml, il file toc.ncx e il file
content.opf), viene creato il file finale compresso e lo stesso viene salvato sul File System
dell’utente;
- Allafine del processo,l’utente viene rimandatosuuna nuova vista dove gli sarà possibile scaricare
sul proprio computer il file compresso precedentemente creato.
5. 5
Parte II: ePub Biblio
Di seguitosono elencatele funzionalitàdellasecondaparte del progetto:
- Tramite l’interfaccia utente è possibile uploadare uno o più file .epub contemporaneamente, il
quale/i quali vengonosalvatiinunappositorepository sul File Systemdell’utente; nella fattispecie,
ad ogni upload il programma genera una cartella chiamata con l’id dell’ePub contenente i relativi
file dopoche lostessoè stato decompresso edinserisce il filezippato all’internodi una cartella che
raccoglie gli ePub uploadati;
- Una voltache ciascunePubè statoinseritoininput,ne viene estrapolata una serie di informazioni
dai metadati contenuti all’interno del file content.opf, tra cui: titolo, lingua, isbn, autore, editore,
formato,origine, tipo, data, collaboratore, relazione, diritti d’autore, destinazione, descrizione e
soggetto;oltre a questi dati,vieneinseritoanche il percorsodel file .epub presente all’interno del
File System dell’utente. Tali informazioni vengono registrate all’interno di un file xml chiamato
EPubBiblio.xml, che viene creato dal programma una volta che il primo ePub viene inserito
all’interno della biblioteca e che conterrà i metadati relativi a tutti gli ePub presenti nella stessa;
- Il file appenadescritto,oltre araccogliere i metadati dei file, riporta anche le statistiche relative al
numero di capitoli in ciascun ePub, al numero di parole presenti in tali capitoli, al numero di
immagini contenute all’interno del file .epub e alle statistiche riguardanti la frequenza di ciascun
autore registrato all’interno della biblioteca;
- Dall’interfaccia utente dell’applicazione è possibile visualizzare l’elenco degli ePub presenti
all’interno della biblioteca organizzati all’interno di una tabella, sincronizzata con il file
EPubBiblio.xml, che riportale informazioni principalidegli stessi, quali: id, titolo, autore, lingua ed
editore;
- Tramite la tabellaè possibile inoltre effettuare, per ciascun ePub, due azioni: il download del file
registratoall’internodel repositorynel FileSystemdell’utente e l’eliminazione del file ePub dalla
biblioteca (tale eliminazione è stata implementata tramite la definizione di un algoritmo
abbastanza complesso che gestisce non solo la rimozione di un file e dei relativi file dopo la
decompressione quanto anche la rimozione del nodo dell’ePub dal file ePubBiblio e
l’aggiornamento delle statistiche sugli autori);
- Infine, dall’interfaccia utente è possibile accedere ad una pagina che costituisce l’output della
trasformazione XSLT del file xml ePubBiblio in un file con estensione .xsl.
Tale paginariporta l’elencodegliebooksottoformatabellare (titolo, autore, lingua, numero delle
immagini, delle parole e dei capitoli presenti all’interno di ciascun file .epub nonché il percorso
dello stesso) più una tabella delle statistiche che presenta il numero di ePub registrati nella
biblioteca più il nome dell’autore che è presente con maggior frequenza.
6. 6
La persistenza dati di ePUB Manager
La prima parte dell’applicazione gestisce la persistenza dei dati facendo affidamento sul database
relazionale MySql, aspetto che ha reso la definizione dell’architettura orientata ai servizi (SOA)
posteriormente realizzata sulla base di questo stesso progetto altamente flessibile. La connessione al
database viene fornitadal driverJDBCconfiguratoall’internodelprogettotramite il tag <Context>presente
nel file content.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/EPUBManager">
<Resource driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" logAbandoned="true" maxActive="100"
maxIdle="30" maxWait="50000" name="jdbc/EPUBManager" password="" removeAbandoned="true"
removeAbandonedTimeout="90" scope="Container" testWhileIdle="true"
timeBetweenEvictionRunsMillis="50000" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/epubmanager" username="root" validationQuery="select 1"/>
</Context>
Limiti dell’applicazione
- La prima parte del progetto gestisce la creazione di ePub conformi alla specifica 2.0.1 mentre la
seconda parte del progetto consente di gestire entrambe le versioni 2.0.1 e 3.0.1. Quest’ultima
costituisce la versione attuale dello standard per la pubblicazione dei libri digitali;
- La seconda parte del progetto gestisce la persistenza dei dati su File System piuttosto che su un
database relazionale;
Architettura dell’applicazione
L’applicazione è stata implementata in base al pattern architetturale MVC e con l’aiuto del framework
Spring nella versione 3.2.8 il quale, tramite l’uso delle annotazioni, è stato di fondamentale importanza
poiché ha permesso di gestire con estrema facilità le richieste web e di costruire un sistema altamente
flessibile.
Allafine di ogni processodi gestionedelle richieste http, l’output viene renderizzato all’utente tramite la
tecnologia per implementare le view nota come JavaServerPages.
In realtà la costruzione della vista, e dunque delle jsp, viene delegata ad Apache Tiles: un framework di
templating atto ad assemblare frammenti di una pagina e a costruire la pagina stessa a tempo di
esecuzione.
7. 7
Service Oriented Architectures
Adattamento di ePUB Manager ad un’architettura SOA
L’applicazioneePUBManagercreataperil corso di Tecnologie XML è stata successivamente riadattata per
il corso di SOA, Service Oriented Architectures. Per architettura orientata ai servizi si intende una tipologia
di sistemadistribuito basatosul protocollohttpe sullainterconnessione di agenti software che fornisconoe
usanouna serie di servizi. Il fatto che si stabilisca una comunicazione tra le varie componenti implica uno
scambio di messaggi e conseguentemente la presenza di una serie di meccanismi di comunicazione che
permettono lo scambio di tali messaggi.
Per realizzare una SOA di alto livello, ovvero caratterizzata da SOAP come formalismo per il trasporto dei
dati,è stata inizialmente realizzata una descrizione standard in WSDL per definire la struttura del servizio
webfacendousodel tool SOAEditor,il quale hapermessodi generare il codice in automatico.
Una voltadefinitoil WSDL, è stato possibile realizzare il relativoserviziowebutilizzandolatecnologiaSundi
JAX-WS, laquale hacompilatoil file .wsdl incorporato all’interno del progetto e si è creata delle strutture
dati java che corrispondono ai tipi dichiarati programmaticamente all’interno della descrizione della
strutturadel servizio.JAX-WSè unostrumentomoltoefficace che hapermesso di facilitare ampiamente la
programmazione del servizio web.
Dopo averconfigurato laparte server,ovveroquella che espone all’esternoi metodidellalogicadi business
tramite un’interfaccia,è statodefinitounclientstand-alone persimulare le chiamate alla business logic. Il
client è costituito da un’interfaccia proxy che permette di invocare i metodi remoti.
Durante la creazione del client, è stato necessario specificare l’indirizzo del WSDL generato da JAX-WS ed
esposto dal servizio al quale l’applicazione stand-alone si è potuta connettere.
E’ stato,inoltre, opzionalmente realizzatouna sorta di servizio web RESTful di modo da simulare anche un
servizio di bassissimo livello (al contrario di quello di massimo livello realizzato con JAX-WS).
8. 8
Il servizio web di alto livello
La descrizioneformaledel WSDL
E’ stato già precedentemente accennato uno degli standard fondanti dei servizi web basato su XML: il
WSDL (Web Services Definition Language). Di seguito viene riportato il contenuto del file ePub.wsdl per
mostrare come tale specificaè statautilizzataperdefinire formalmente il servizio web dell’ePUB Manager:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
name="ePub"
targetNamespace="http://www.univaq.it/mwt/soa/ePub.wsdl"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.univaq.it/mwt/soa/ePub.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsd1="http://www.univaq.it/mwt/soa/ePub.xsd1"
xmlns:xsd2="http://www.univaq.it/mwt/soa/ePub.xsd2">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">SOA: WSLD del progetto
ePubManager</wsdl:documentation>
<wsdl:types>
<xsd:schema
targetNamespace="http://www.univaq.it/mwt/soa/ePub.xsd2"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsd2="http://www.univaq.it/mwt/soa/ePub.xsd2">
<xsd:complexType name="tMetadata">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="identifier"
type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="1" name="title" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="1" name="language" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="tEpubCss">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="id" type="xsd:string"/>
16. 16
</wsdl:service>
</wsdl:definitions>
Le operazioni di base definite nel WSDLsono:
- startEpub;
- addXhtml;
- addStylesheet;
- addImage;
- finalizeEpub;
- removeXhtml;
- removeStylesheet;
- removeImage;
Il servizio web di basso livello
Come già accennatoinprecedenza,l’applicazione è stataimplementata con l’ausilio del framework Spring
che ha consentito,trale altre cose,di simulare un servizioweb RESTful che pubblicai metodi della logica di
businesse permette di effettuare delleoperazionisui dati del sistema tramite una semplice gestione delle
url; ciascuna url (composta da vari path che identificano le risorse) corrisponde ad un metodo particolare
del servizio.
Essendoil RepresentationalStateTransferProtocolil modobase di comunicare offerto dal protocollo http,
ciascunarichiestaviene gestita utilizzandounodei metodi di base per operare sui dati del protocollo: GET,
POST e DELETE.
Di seguitovieneriportatalaclasse annotata tramite l’annotazione @Controller che permette di gestire le
richieste http provenienti dal browser:
@Controller
@RequestMapping("/rest")
public class RESTController {
@Autowired
private EPubService service;
17. 17
@RequestMapping(value="/epubs",method={RequestMethod.POST})
@ResponseBody
public String startEpub (Metadata metadata) {
long result = service.startEpub(metadata);
return Long.toString(result);
}
@RequestMapping(value="/epubs/{token}",method={RequestMethod.GET})
@ResponseBody
public void finalizeEpub (@PathVariable("token") String epub) {
long token = Long.parseLong(epub);
service.finalizeEpub(token);
}
@RequestMapping(value="/epubs/{token}/texts",method={RequestMethod.POST})
@ResponseBody
public int insertXhtml (@PathVariable("token") String epub, @RequestBody EpubXhtml epubXhtml) {
long token = Long.parseLong(epub);
int xhtml = service.addXHTML(token, epubXhtml);
return xhtml;
}
@RequestMapping(value="/epubs/{token}/texts/{id}",method={RequestMethod.GET})
@ResponseBody
public EpubXhtml getXhtml (@PathVariable("id") String id) {
// long token = Long.parseLong(epub);
EpubXhtml xhtml = service.getEpubXhtmlByPk(id);
if (xhtml == null) {
throw new NotFoundException();
}
return xhtml;
}
18. 18
@RequestMapping(value="/epubs/{token}/texts/{id}",method={RequestMethod.DELETE})
@ResponseBody
public void deleteXhtml (@PathVariable("token") String epub, @PathVariable("id") String id) {
// long token = Long.parseLong(epub);
EpubXhtml xhtml = service.getEpubXhtmlByPk(id);
if (xhtml == null) {
throw new NotFoundException();
}
service.deleteEpubXhtml(xhtml);
}
@RequestMapping(value="/epubs/{token}/images",method={RequestMethod.POST})
@ResponseBody
public int insertImage (@PathVariable("token") String epub, @RequestBody EpubImage epubImage) {
long token = Long.parseLong(epub);
int image = service.addImage(token, epubImage);
return image;
}
@RequestMapping(value="/epubs/{token}/images/{id}",method={RequestMethod.GET})
@ResponseBody
public EpubImage getImage (@PathVariable("id") String id) {
// long token = Long.parseLong(epub);
EpubImage image = service.getEpubImageByPk(id);
if (image == null) {
throw new NotFoundException();
}
return image;
}
@RequestMapping(value="/epubs/{token}/images/{id}",method={RequestMethod.DELETE})
@ResponseBody
public voiddeleteImage (@PathVariable("token") String epub, @PathVariable("id") String id, EpubImage epubImage) {
19. 19
// long token = Long.parseLong(epub);
if (epubImage == null) {
throw new NotFoundException();
}
service.deleteEpubImage(epubImage);
}
@RequestMapping(value="/epubs/{token}/stylesheets",method={RequestMethod.POST})
@ResponseBody
public int insertCss (@PathVariable("token") String epub, @RequestBody EpubCss epubCss) {
long token = Long.parseLong(epub);
int css = service.addStylesheet(token, epubCss);
return css;
}
@RequestMapping(value="/epubs/{token}/stylesheets/{id}",method={RequestMethod.GET})
@ResponseBody
public EpubCss getCss (@PathVariable("id") String id) {
// long token = Long.parseLong(epub);
EpubCss css = service.getEpubCssByPk(id);
if (css == null) {
throw new NotFoundException();
}
return css;
}
@RequestMapping(value="/epubs/{token}/stylesheets/{id}",method={RequestMethod.DELETE})
@ResponseBody
public void deleteCss (@PathVariable("token") String epub, @PathVariable("id") String id, EpubCss epubCss) {
// long token = Long.parseLong(epub);
if (epubCss == null) {
throw new NotFoundException();
}