DIPARTIMENTO DI INGEGNERIA CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE CURRICULUM INFORMATICA Porting Porting Porting Porting evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati di riferimenti biliografici in ambiente .NET 4.5 di riferimenti biliografici in ambiente .NET 4.5 di riferimenti biliografici in ambiente .NET 4.5 di riferimenti biliografici in ambiente .NET 4.5 Relatore : Prof. Prof. Prof. Prof. Maurizio Fermeglia Maurizio Fermeglia Maurizio Fermeglia Maurizio Fermeglia Laureando : Giulio Ambrogi Giulio Ambrogi Giulio Ambrogi Giulio Ambrogi Anno Accademico : 2011 / 2012
45
Embed
Porting evolutivo di una applicazione per la gestione di riferimenti bibliografici in ambiente .net 4.5
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
DIPARTIMENTO DI INGEGNERIA
CORSO DI LAUREA TRIENNALE IN INGEGNERIA DELL'INFORMAZIONE
CURRICULUM INFORMATICA
PortingPortingPortingPorting evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati evolutivo di una applicazione per la gestione di dati
di riferimenti biliografici in ambiente .NET 4.5di riferimenti biliografici in ambiente .NET 4.5di riferimenti biliografici in ambiente .NET 4.5di riferimenti biliografici in ambiente .NET 4.5
Relatore : Prof. Prof. Prof. Prof. Maurizio FermegliaMaurizio FermegliaMaurizio FermegliaMaurizio Fermeglia
CAPITOLO 2CAPITOLO 2CAPITOLO 2CAPITOLO 2 Analisi dei requisiti e della situazione esistente Analisi dei requisiti e della situazione esistente Analisi dei requisiti e della situazione esistente Analisi dei requisiti e della situazione esistente
L'obiettivo di questa tesi è estendere le funzionalità di un'applicazione client
esistente la quale è utilizzata per la gestione dei riferimenti bibliografici e delle
attività del laboratorio MOSE.
In particolare si vuole fornire all'utente, che utilizzerà l'applicazione,la possibilità di
gestire l'upload'upload'upload'upload e la cacacacancellazionencellazionencellazionencellazione di documenti relativi alle pubblicazione, di
esportare esportare esportare esportare in forma tabellare un insieme di record bibliograficirecord bibliograficirecord bibliograficirecord bibliografici e si intende
maggiormente user friendly , coerentemente con le nuove funzionalità da
implementare.
Nei capitoli successivi le singole funzionalità e la loro implementazione verranno
illustrate nello specifico.
La situazione iniziale vede l'esistenza di :
- versione beta dell'applicazione di cui si vuole effettuare il porting, ancora priva
delle sopracitate funzionalità;
- una base di dati ,su server remoto , nella quale sono immagazzinate tutte le
informazioni utilizzate dall'applicazione, come dati anagrafici, dati bibliografici,
ecc. ;
- un'istanza di SharePoint Server installata su un server remoto (un altro), utilizzata
dalla web application che lavora in parallelo all'applicazione in questione; è da
notare che quest'ultima ancora non comunica con tale istanza ;
4
in questo server vengono salvati i file pdf relativi alle pubblicazioni ;
- una web application che presenta sul Web i dati bibliografici e permette
all'utente di effettuare il download di un file pdf relativo ad una pubblicazione
Ciò che ha motivato la realizzazione di questo lavoro è la necessità di permettere
all'utente di svolgere alcune operazioni direttamente dall'applicazione, ovvero
svincolare l'utente dall'utilizzo di ulteriori softwaresvincolare l'utente dall'utilizzo di ulteriori softwaresvincolare l'utente dall'utilizzo di ulteriori softwaresvincolare l'utente dall'utilizzo di ulteriori software , garantendo così una maggiore
semplicità di esecuzione, una presentazione dei dati funzionale ed una maggiore
sicurezza relativamente all'integrità dei dati e all'aggiornamento degli stessi.
I vincoli progettualivincoli progettualivincoli progettualivincoli progettuali sono rappresentati in primo luogo dallo sviluppo in ambiente
.NET, utilizzando la tecnologia Windows Presentation Foundation e il linguaggio
di programmazione C#, in secondo luogo ,relativamente all'applicazione già
esistente, dall'attenersi per quanto possibile alla sua logica e infine
dall'implementare il tutto in modo tale che possa essere accessibile alla web
application.
Gli obiettivi di questo lavoro sono :
- analisi dei requisiti da parte del committente;
- analisi della situazione preesistente;
- studio delle tecnologie .NET, e nel particolare di WPF e C#;
- studio del funzionamento delle interazioni tra Database, applicazione e server;
- progettazione del front-end;
- realizzazione effettiva e compilazione su piattaforma .NET Framework 4.5;
- test e distribuzione dell'applicazione.
CAPITOLO 2CAPITOLO 2CAPITOLO 2CAPITOLO 2
Analisi dei requisitiAnalisi dei requisitiAnalisi dei requisitiAnalisi dei requisiti
2.1 Intervista al committente2.1 Intervista al committente2.1 Intervista al committente2.1 Intervista al committente
Le richieste del committente per la nuova
versione dell'applicazione sono :
• effettuare un analisi degli oggetti
programmabili (viste , stored
procedures , user defined functions
effettivamente utilizzati
dall'applicazione al fine di effettuare un lavoro di pulizia nella base di dati
• effettuare l'upload di un documento relativo ad una determinata
pubblicazione nel server sul quale
Server , aggiornando allo stesso tempo i
(Titolo del pdf e ID del documento)
Questo documento dovrà poi essere reperibile dalla
permette la visualizzazione dei contenuti dal web
• effettuare la cancellazione di un documento
bisogna gestire entrambi i "lati" : SharePoint e SQL Server)
disposizione opportuni controlli per verificare la presenza o meno di un
5
Analisi dei requisitiAnalisi dei requisitiAnalisi dei requisitiAnalisi dei requisiti e della situazione esistee della situazione esistee della situazione esistee della situazione esiste
2.1 Intervista al committente2.1 Intervista al committente2.1 Intervista al committente2.1 Intervista al committente
Le richieste del committente per la nuova
versione dell'applicazione sono :
ffettuare un analisi degli oggetti
viste , stored
procedures , user defined functions)
effettivamente utilizzati
dall'applicazione al fine di effettuare un lavoro di pulizia nella base di dati
ffettuare l'upload di un documento relativo ad una determinata
pubblicazione nel server sul quale è presente un'istanza di ShareP
Server , aggiornando allo stesso tempo i valori presenti nella base di dati
(Titolo del pdf e ID del documento).
Questo documento dovrà poi essere reperibile dalla web application
permette la visualizzazione dei contenuti dal web;
ffettuare la cancellazione di un documento (analogamente all'upload
bisogna gestire entrambi i "lati" : SharePoint e SQL Server) ed avere a
disposizione opportuni controlli per verificare la presenza o meno di un
e della situazione esistee della situazione esistee della situazione esistee della situazione esistentententente
dall'applicazione al fine di effettuare un lavoro di pulizia nella base di dati;
ffettuare l'upload di un documento relativo ad una determinata
è presente un'istanza di SharePoint
valori presenti nella base di dati
web application che
(analogamente all'upload
ed avere a
disposizione opportuni controlli per verificare la presenza o meno di un
6
documento, e potere gestire facilmente le azioni (upload , cancellazione,
presentazione) relative ad esso;
• poter esportare un file in formato Excel nel quale vengano riportati tutti i
dati relativi al titolo della pubblicazione, all'anno , agli autori, alla
denominazione e ai riferimenti, fornendo inoltre all'utente la possibilità di
filtrare i risultati a suo piacimento prima di effettuare l'export;
• eventuali accorgimenti per migliorare ulteriormente il front end.
2.22.22.22.2 Analisi della situazione esistenteAnalisi della situazione esistenteAnalisi della situazione esistenteAnalisi della situazione esistente
2.22.22.22.2.1 Il database.1 Il database.1 Il database.1 Il database
La base di dati esistente è sita in un server remoto ( di3.units.it ) ed è composta da
27 tabelle, 63 viste e 133 stored procedures.
Contiene tutti i dati inerenti la gestione del laboratorio come, ad esempio: dati
anagrafici dei dipendenti, dati delle pubblicazioni, congressi, progetti e tesi.
Le viste utilizzate dall'applicazione esistente sono:
• ViewPubblicazioniRivista : mette in relazione le informazioni delle riviste con
le informazioni dello staff;
• ViewPubblicazioniCongressi : mette in relazione i le informazioni dello staff
con il congresso relativo alla pubblicazione ;
• Staff_View : una raccolta dei dati anagrafici dei membri dello staff .
• ViewPubblicazioniRivista_Staff: variante della prima vista citata
Le stored procedures utilizzate dall'applicazione esistente sono:
7
• sp_PubbStaff : utilizzata per visualizzare le pubblicazioni relative ad un
membro dello staff. Riceve in input 2 parametri: @ID_staff è l'ID del
componente dello staff, mentre @ID_output è un parametro che se settato
a 0 fornisce sia le pubblicazioni presentate in un congresso che in una
rivista, se settato ad 1 fornisce solo le pubblicazioni presentate in un
congresso ed infine se settato a 2 fornisce solo le pubblicazioni presentate
in una rivista
• sp_PubbWeb: utilizzata per visualizzare le pubblicazioni presentate nel sito
web del MOSE. Riceve in input un parametro @ID_SitoWeb , che
rappresenta l'identificatore del sito web.
Non sono state trovate invece User Defined Functions.
Nella Figura 1 si riporta il Database Diagram della base di dati in questione :
Invece le interazioni tra applicazione e SharePoint (su server remoto) saranno
implementate come richieste HTTP corredate delle opportune credenziali e
verranno illustrate in seguito.
Figura 5
12
Questa stringa si trova nel file ./MoseUXPrototype.exe.config.xaml , il quale è
presente nel folder della versione distribuibile dell'applicazione.
2.2.42.2.42.2.42.2.4 Sharepoint ServerSharepoint ServerSharepoint ServerSharepoint Server e Web Applicatione Web Applicatione Web Applicatione Web Application
È presente inoltre una applicazione web che presenta le informazioni
bibliografiche su un sito web. Questo sito web è stato creato utilizzando Microsoft
SharePoint.
SharePoint è un software lato server che permette la creazione di particolari siti
web attraverso lo strumento software SharePoint Designer, con il quale è possibile
gestire, tra le varie cose, un archivio di file che possono essere utilizzati
dall'applicazione web.
I file delle pubblicazioni infatti sono salvati in una apposita cartella (
3.1 Principi generali di progettazione3.1 Principi generali di progettazione3.1 Principi generali di progettazione3.1 Principi generali di progettazione
L'idea di fondo è sempre quella di conservare il layout dell'applicazione esistente,
per quanto possibile, mantenendo vivace l'interfaccia e garantendone un facile e
sicuro utilizzo da parte dell'utente.
Per quanto riguarda sia l'upload che l'export si è deciso di implementare queste
due funzionalità su due diverse finestrefinestrefinestrefinestre, e non delle pagine : il motivo principale è
il voler marcare la differenza sostanziale tra la gestione di file gestione di file gestione di file gestione di file e la gestione di
record.
Si immagini di suddividere le funzionalità dell'applicazione su due livelli differenti:
• lettura/scrittura di record (comunicazioni tra applicazione e base di dati)
• gestione di file (upload / cancellazione) ed export (comunicazioni tra
applicazione , SharePoint e base di dati )
L'intera applicazione esistente si presenta all'utente su un'unica finestra e l'utente
può accedere ai diversi contenuti sfogliando tra le paginepaginepaginepagine di essa.
Si è preferito invece implementare le nuove funzionalità per la gestione dei file , su
finestrefinestrefinestrefinestre pop up , in modo tale da dare all'utente la sensazione di utilizzare uno
strumento con vero e proprio. Si intende implementare quindi un Uploader ed un
Exporter.
14
Si intende inoltre permettere all'utente di gestire le connessioni e le credenziali per
le interazioni web con i server, quindi sarà implementata un ulteriore finestra pop
up per la consolle delle opzioni.
Queste finestre saranno aperte da opportuni pulsanti posizionati nelle pagine
dell'applicazione coerentemente con la loro funzione.
MessageBox.Show("upload su sharepoint e su sql eseguito
\nDocumento : p"+returnID()+".pdf");
}
catch (Exception err)
{
MessageBox.Show(err.Message);
20
return false;
}
return true;
}
Analisi del codice Analisi del codice Analisi del codice Analisi del codice [ metodo Upload ][ metodo Upload ][ metodo Upload ][ metodo Upload ]
Come si puo' notare il metodo è diviso fondamentalmente in due partidue partidue partidue parti:
l'aggiornamento di record su SQL Server e l'upload su SharePoint.
Per quanto riguarda l'aggiornamento del record su SQLl'aggiornamento del record su SQLl'aggiornamento del record su SQLl'aggiornamento del record su SQL ServerServerServerServer , le fasi di
realizzazione sono:
• creazione di un nuovo oggetto Connection (per poter comunicare con
l'istanza di SQL Server) e in particolare attraverso l'utilizzo della
MoseDBConnectionString.
• reperimento dell'ID del documento selezionato dalla listbox , attraverso un
metodo abbastanza rudimentale ma efficace: ovvero, viene effettuato un
parsing dell'elemento selezionato (in formato stringa) al fine di estrarre il
primo membro separato da virgola, ovvero l'ID della pubblicazione
• costruzione della query in linguaggio Transact-SQL
Questa query fornisce un risultato numerico, se il documento è già
presente nella tabella (tabella delle pubblicazioni aventi già un file relativo
caricato), altrimenti restituisce un valore nullo se questo file non è presente:
• Se il record è già presente nella tabella, questo record non viene
aggiornato;
• Se il record non è presente viene eseguita una nuova query
(statement di tipo INSERT ) che inserisce nella tabella (ID, nome del
file).
E' da notare che il nome del file , obbedisce ad uno standard dovuto ad un vincolo
imposto dalla web application ,che lavora in parallelo con questa applicazione , in
particolare il nome del file dovrà essere nel formato "Pxxxx.pdf" dove xxxx
21
rappresenta l'id della pubblicazione (ad es. se l'id della pubblicazione è 16 , il
documento si chiamerà "p0016.pdf").
Il metodo returnID() è un semplice metodo che utilizza l'ID della pubblicazione
selezionata e crea la parte numerica del nome del file apponendo a sinistra dell'ID
tanti zeri quanti sono necessari al fine di ottenere un nome con 4 cifre .
//Come ultima cosa inserisco le intestazioni delle colonne
List<string> lista = generaIntestazioniExcel();
for (int i = 0; i < cln; i++)
{
ws.Cells[1, i + 1] = lista[i];
}
xla.Visible = true;
wb.ActiveSheet.QueryTables[1].Delete();
loading.Close();
}
catch (Exception myex)
{
MessageBox.Show(myex.Message);
}
}
41
Il risultato di un possibile Export può essere:
(a) Creazione del file txt, non visibile all'utente
(b) Apertura del file da parte di Excel
4.5 Implementazioni di carattere generale4.5 Implementazioni di carattere generale4.5 Implementazioni di carattere generale4.5 Implementazioni di carattere generale
Sempre nell'ottica di migliorare ulteriormente l'interfaccia utente per renderla più
funzionali ai bisogni del committente sono implementate alcune features , di
minor rilevanza per, ma di indubbia utilità per l'utente:
• nella pagina relativa alle pubblicazioni in formato-griglia, viene aggiunta
una colonna che presenta il nome del documento pdf , se presente, o nulla
in caso contrario (Figura 16);
• per le pagine "PubblicationGrid" e "PubblicationCustom" è stato riscritto , in
modo coerente con le modifiche apportate, il codice che permette
all'utente di accedere ai dettaglidettaglidettaglidettagli della pubblicazione selezionata cliccando cliccando cliccando cliccando
due voltedue voltedue voltedue volte sulla riga della griglia;
• sono stati abilitati, nella home page, i linklinklinklink testuali che rimandano alle
pagine relative (come Upload e Export) e sono stati modificati i label relativi