Your SlideShare is downloading. ×
UNIVERSITÀ DEGLI STUDI DI TRIESTE                                 FACOLTÀ DI INGEGNERIA                           Corso di...
Indice1 - Introduzione  1.1 - Obiettivo della tesi ..........................................................................
4 - Progettazione dell’applicativo  4.1 - Use case diagramm .................................................................
1 - Introduzione1.1 - Obiettivo della tesiL’obiettivo che ci si è posti con questa tesi è la progettazione e lo sviluppo d...
1 - Introduzione1.3 - Stato dell’arteAl momento esistono diversi applicativi1 per la gestione dei timesheets, simili per f...
1 - Introduzionestato richiesto di creare un add-in che, integrandosi nell’applicazione, potesse permettere la gestione de...
2 - Analisi2.1 - Raccolta informazioni e definizione dei requisitiIl fine di questo progetto è la realizzazione di un appl...
3 - Progettazione della base di dati3.1 - RequisitiIn questo capitolo verrà introdotta ed analizzata la struttura del data...
3 - Progettazione della base di datiFrasi relative ai Dipendenti. I dati dei dipendenti sono memorizzati all’interno del d...
3 - Progettazione della base di dati3.5 - Progettazione concettualePer realizzare lo schema E/R viene utilizzata una strat...
3 - Progettazione della base di datiAnalisi delle entità                                          CATEGORIAIDCategoria    ...
3 - Progettazione della base di datiResidenza                      Residenza del dipendente. Attributo composto.Pagina WEB...
3 - Progettazione della base di datiData ultima modifica             Data dell’ultima modifica dell’assegnazione.Note     ...
3 - Progettazione della base di dati   Progetto       1        Richiesta        N     Assegnazione      N         Ricezion...
3 - Progettazione della base di dati     Schema E/R finale ristrutturato                                                  ...
3 - Progettazione della base di dati3.7 - Stored ProcedureUna stored procedure è un programma generalmente scritto in SQL,...
3 - Progettazione della base di dati                        @IDProgetto intElencoProgetti          @NomeUtente nvarchar(50...
4 - Progettazione dell’applicativoIn questo capitolo si procede alla progettazione dell’applicativo mediante gli strumenti...
4 - Progettazione dell’applicativoL’utente, tramite la scheda “Time Sheet” che verrà aggiunta nella barra multifunzione di...
4 - Progettazione dell’applicativoIl diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando...
4 - Progettazione dell’applicativo    1. L’utente seleziona nel calendario “Time Sheet” un certo periodo durante una giorn...
4 - Progettazione dell’applicativo    3. Se la connessione ha esito positivo, si cancellano dal database tutte le attività...
4 - Progettazione dell’applicativo4.3 - Class diagramUtilizzando le strutture tipiche della programmazione ad oggetti, cla...
5 - Interfaccia5.1 - IntroduzioneIn questo capitolo verranno descritti:        L’installazione e configurazione dell’add-i...
5 - InterfacciaConfigurazioneSe si ha la necessità di cambiare la stringa di connessione al database, all’interno della ca...
5 - InterfacciaIl pulsante “Informazioni sistema” permette di visualizzare le informazioni relative alla macchinache sta e...
5 - Interfaccia                         Figura 7 - Form di modifica dati del dipendente.Il pulsante “Impostazioni Time She...
5 - InterfacciaPassando nella sezione “Calendario” di Outlook si può notare che l’add-in, con il primo avvio, crea uncalen...
5 - Interfaccia        L’utente può decidere inoltre di salvare le attività nel database cliccando su “Salva Attività     ...
6 - ImplementazioneIn questo capitolo viene descritta l’implementazione dell’applicativo. Qui di seguito vengono presentat...
6 - Implementazionedi default.", vbCritical)            Case "Non Esiste"                MsgBox("Non è stato trovato il fi...
6 - Implementazione        Funzione che apre il form delle impostazioni.        Public Sub ModificaDatiDipendente(ByVal co...
6 - Implementazione                         If reader.HasAttributes Then                             reader.MoveToAttribut...
6 - ImplementazioneCodice del file tools.xml utilizzato per definire la personalizzazione della user interface.<?xml versi...
6 - Implementazione       Funzione che crea un appuntamento in base alla selezione fatta dall’utente e in base ai parament...
6 - Implementazione         Connessione con il database.        sqlCon = New SqlConnection(My.Settings.connetionString)   ...
6 - Implementazione            Richiamo della Stored Procedure "TotaleAttivitàPeriodo", con relativi parametri.           ...
6 - Implementazione       Pulsante di chiusura del form.       Private Sub anagrafica_Load(ByVal sender As System.Object, ...
6 - ImplementazioneFunction ValoreGiorno(ByVal dataInput As Date) As IntegerFunzione che restituisce il valore del numero ...
7 - Conclusioni7.1 - Risultati ottenutiI risultati ottenuti rispettano i vincoli di progetto discussi in fase di analisi. ...
8 - BibliografiaRiferimenti web     http://it.wikipedia.org     http://msdn.microsoft.com/it-it/library     http://databas...
Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010
Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010
Upcoming SlideShare
Loading in...5
×

Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010

933

Published on

Tesi di Laurea Triennale in Ingegneria Informatica.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
933
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010"

  1. 1. UNIVERSITÀ DEGLI STUDI DI TRIESTE FACOLTÀ DI INGEGNERIA Corso di laurea in Ingegneria Informatica Tesi di Laurea Triennale in Ingegneria Informatica REALIZZAZIONE DI UN APPLICATIVO PER LA GESTIONE DI FOGLI DI LAVORO INTEGRATO IN OUTLOOK 2010RELATORE LAUREANDOProf. Maurizio Fermeglia Tonon Saverio Anno Accademico 2009/2010
  2. 2. Indice1 - Introduzione 1.1 - Obiettivo della tesi ................................................................................................................................ 1 1.2 - Risultato della tesi ................................................................................................................................. 1 1.3 - Stato dell’arte ........................................................................................................................................ 2 1.4 - Motivazioni ............................................................................................................................................ 2 1.5 - Vincoli di progetto ................................................................................................................................. 3 1.6 - Riassunto dei capitoli seguenti .............................................................................................................. 32 - Analisi 2.1 - Raccolta informazioni e definizione dei requisiti .................................................................................. 4 2.2 - Interfaccia utente di Outlook 2010 ....................................................................................................... 43 - Progettazione della base di dati 3.1 - Requisiti ................................................................................................................................................. 5 3.2 - Rielaborazione delle frasi più significative ............................................................................................ 5 3.3 - Glossario dei termini ............................................................................................................................. 6 3.4 - Operazioni di analisi .............................................................................................................................. 6 3.5 - Progettazione concettuale .................................................................................................................... 7 Entità e Relazioni ....................................................................................................................................... 7 Analisi delle entità ..................................................................................................................................... 8 Analisi delle relazioni e delle cardinalità ................................................................................................... 9 3.6 - Progettazione logica ............................................................................................................................ 10 Attributi Multipli & Composti .................................................................................................................. 11 Scelta degli Identificatori Primari ............................................................................................................ 11 Schema E/R finale ristrutturato ............................................................................................................... 12 Schema relazionale dedotto dallo schema E/R finale ............................................................................. 12 3.7 - Stored Procedure................................................................................................................................. 13 i
  3. 3. 4 - Progettazione dell’applicativo 4.1 - Use case diagramm ............................................................................................................................. 15 4.2 - Activity diagramm ............................................................................................................................... 16 4.3 - Class diagramm.................................................................................................................................... 205 - Interfaccia 5.1 - Introduzione ........................................................................................................................................ 21 5.2 - Installazione e configurazione dell’add-in ........................................................................................... 21 Installazione ............................................................................................................................................. 21 Configurazione......................................................................................................................................... 22 5.3 - Interfaccia dell’applicativo .................................................................................................................. 22 5.4 - Esempio di utilizzo dell’applicativo ..................................................................................................... 25 5.5 - Requisiti per l’installazione.................................................................................................................. 266 - Implementazione ThisAddIn.vb ................................................................................................................................................ 27 Tools.vb ....................................................................................................................................................... 28 Tools.xml...................................................................................................................................................... 30 ModuloGestioneTimeSheet.vb .................................................................................................................... 31 Impostazioni.vb ........................................................................................................................................... 34 Anagrafica.vb ............................................................................................................................................... 34 Esportazione.vb ........................................................................................................................................... 357 - Conclusioni 7.1 - Risultati ottenuti .................................................................................................................................. 37 7.2 - Lavoro svolto ....................................................................................................................................... 37 7.3 - Sviluppi futuri ...................................................................................................................................... 378 - Bibliografia Riferimenti web ........................................................................................................................................... 38 ii
  4. 4. 1 - Introduzione1.1 - Obiettivo della tesiL’obiettivo che ci si è posti con questa tesi è la progettazione e lo sviluppo di un add-in di Outlook chepermetta la gestione dei timesheets dei dipendenti all’interno di un’Azienda. Più precisamente, si vuole chel’utente abbia la possibilità di creare direttamente da Outlook i suoi timesheets, esportando i dati creati inOutlook sia su dei fogli di lavoro Excel che su un database condiviso nella rete aziendale.1.2 - Risultato della tesiIl software creato, “Gestione Time Sheet”, rispetta i vincoli di progetto ed è utilizzabile dopo una sempliceinstallazione e configurazione. Per i requisiti di installazione, si rimanda al capitolo 5.5. Figura 1 - Screenshot del programma "Gestione Time Sheet". 1
  5. 5. 1 - Introduzione1.3 - Stato dell’arteAl momento esistono diversi applicativi1 per la gestione dei timesheets, simili per funzionalità ma cheutilizzano un ambiente web-based. Figura 2 - Screenshot del programma "Replicon - Time Sheet".Per poter utilizzare un’applicazione web-based, l’utente utilizza il browser web, senza la necessità di doverinstallare alcun cd.1.4 - MotivazioniUn timesheet è un metodo che viene utilizzato per tenere traccia delle quantità di tempo che un lavoratorededica a svolgere delle determinate mansioni. In origine questo metodo veniva utilizzato dal datore dilavoro per determinare il libro paga dei dipendenti: successivamente, il timesheet è diventato utile ancheper la fatturazione al cliente, per il calcolo dei costi e della loro stima, il loro monitoraggio e la lorogestione2.Queste necessità hanno portato le aziende ad introdurre l’utilizzo dei timesheets al loro interno. Outlook èun software molto diffuso ed utilizzato nelle aziende per la gestione della posta elettronica, per lapianificazione di appuntamenti, per la gestione del proprio programma di lavoro: per questo motivo, è1 Ad esempio “Replicon - Web TimeSheet” - http://www.replicon.com2 Per approfondimenti http://en.wikipedia.org/wiki/Timesheet 2
  6. 6. 1 - Introduzionestato richiesto di creare un add-in che, integrandosi nell’applicazione, potesse permettere la gestione deitimesheets dei propri dipendenti, utilizzando come base le funzionalità messe a disposizione da Outlook.A differenza dei software web-based, i dipendenti non hanno la necessità di imparare ad utilizzare unnuovo sistema, ma utilizzeranno un software che già conoscono ed usano, con il conseguente vantaggio diuna riduzione dei tempi nella creazione dei loro timesheets.1.5 - Vincoli di progettoSono stati imposti i seguenti vincoli di progetto: Ambiente di esecuzione Outlook 2010. Ambiente di sviluppo Visual Studio 2010. Utilizzo di Microsoft SQL Server 2008 R2 come Data Base Management System.1.6 - Riassunto dei capitoli seguenti Nel capitolo 2 verrà effettuata la raccolta delle informazioni e la definizione dei requisiti richiesti dal cliente. Nel capitolo 3 verrà analizzata e progettata la struttura della base di dati che conterrà le informazioni dei timesheets dei dipendenti dell’azienda. Nel capitolo 4 verrà effettuata la progettazione dell’applicativo mediante gli strumenti forniti dal linguaggio UML. Nel capitolo 5 verrà descritta l’interfaccia dell’applicativo, la sua installazione e configurazione, e verrà descritto un tipico esempio di utilizzo. Il capitolo 6 sarà rivolto alla descrizione delle funzioni che sono state realizzate nell’applicativo. Nel capitolo 7 saranno presenti le conclusioni riguardanti il progetto sviluppato. Nel capitolo 8 sarà presente una breve bibliografia. 3
  7. 7. 2 - Analisi2.1 - Raccolta informazioni e definizione dei requisitiIl fine di questo progetto è la realizzazione di un applicativo integrato in Outlook 2010 per la gestione deitimesheets dei dipendenti di un’azienda. L’azienda che verrà considerata ha come scopo la realizzazione diun certo numero di progetti. Ogni progetto, per poter essere sviluppato e portato a termine, richiede diessere assegnato ad uno o più dipendenti. Ogni dipendente potrà, tramite un calendario di Outlook,impostare le ore che ha dedicato ad ogni singolo progetto: successivamente, potrà generare un file Excel(con un formato standard a livello europeo) contenente il resoconto mensile che include il totale delle oreche ha dedicato ad ogni progetto.Il software dovrà permettere all’azienda di avere una visione completa dello status di ogni progetto: dovràessere possibile ad esempio ottenere il totale delle ore che sono state dedicate ad ogni progetto e idipendenti che vi hanno partecipato. Per questo motivo si rende necessaria la memorizzazione dei datiinseriti dai dipendenti all’interno di un database condiviso nella rete aziendale.Per rendere il database e Outlook sincronizzati, all’apertura di Outlook le attività del dipendente verrannocaricate ed inserite dal database; alla sua chiusura, le attività verranno salvate da Outlook al database.Questo procedimento garantisce l’integrità dei dati: le attività che verranno visualizzate su Outlook sarannosempre le stesse che saranno presenti all’interno del database.2.2 - Interfaccia utente di Outlook 2010In Outlook 2010, linterfaccia utente è interamente personalizzabile, incluso la barra multifunzione, la barradi accesso rapido e i menu di scelta rapida incorporati. Utilizzando del codice basato su XML, è possibileeffettuare tale personalizzazione tramite la creazione di componenti aggiuntivi mediante Microsoft VisualStudio 2010.La parte dell’interfaccia utente di Outlook che sarà personalizzata, riguarderà l’aggiunta di una scheda nellabarra multifunzione denominata “Time Sheet” e la modifica del menù contestuale al click dell’utente con iltasto destro del mouse sul calendario “Time Sheet”. La scheda che sarà aggiunta conterrà dei pulsanti chepermetteranno la gestione del timesheet dell’utente (salvataggio dei dati nel database, creazione del fileExcel, menù impostazioni, ecc.), mentre il menù contestuale al click dell’utente con il tasto destro delmouse nel calendario “Time Sheet” sarà integrato con un nuovo pulsante “Progetti”, che conterrà l’elencodi tutti i progetti che sono stati assegnati all’utente. 4
  8. 8. 3 - Progettazione della base di dati3.1 - RequisitiIn questo capitolo verrà introdotta ed analizzata la struttura del database nella quale verranno poimemorizzati i dati relativi al Time Sheet di ogni dipendente. Esso dovrà prevedere delle tabelle per lamemorizzazione dei progetti e delle attività annesse a tali progetti, oltre alla tabella per la memorizzazionee gestione dei dati relativi agli utenti che utilizzeranno il programma.Con il termine “attività” si intende il tempo che un dipendente dedica a lavorare ad un determinatoprogetto che gli è stato assegnato: in Outlook una “attività” corrisponderà ad un appuntamento delcalendario.Il database verrà concepito per essere utilizzato all’interno di una rete aziendale: ogni utente avrà delleproprie credenziali di accesso per poter accedere ai computer dell’azienda e verranno utilizzati i dati relativia queste credenziali per creare un identificativo unico dell’utente all’interno del database.Le categorie potranno essere di due tipi: produttive e non produttive. Tale suddivisione permetterà di poterseparare le ore relative a progetti quali “Assenze” e “Permessi” appartenenti a categorie non produttive,dalle ore relative a progetti che invece risultano produttivi.L’analisi della creazione, modifica ed eventuale cancellazione di dati all’interno del database verràanalizzata in dettaglio nei capitoli successivi, in questo capitolo verrà analizzata essenzialmente la suastruttura.3.2 - Rielaborazione delle frasi più significativeFrasi di carattere generale. Si vuole realizzare un database che permetta la memorizzazione dei datiinerenti al Time Sheet dei vari dipendenti.Frasi relative alle Categorie. Una categoria è una classe a cui apparterranno uno o più progetti. Per ognicategoria si vogliono memorizzare i seguenti dati: nome della categoria, produttività, data di inserimento,data ultima modifica, note, codice categoria.Frasi relative ai Progetti. Ogni progetto appartiene ad una sola categoria, e può venire assegnato a piùdipendenti diversi. Per ogni progetto si vogliono memorizzare i seguenti dati: nome progetto, data diinserimento, data di inizio progetto, data di fine progetto, stato del progetto, data ultima modifica, note,codice progetto. 5
  9. 9. 3 - Progettazione della base di datiFrasi relative ai Dipendenti. I dati dei dipendenti sono memorizzati all’interno del database e potrannoessere visualizzati e modificati dall’utente tramite un’apposita interfaccia che sarà aggiunta in Outlook. Perogni dipendente si vogliono memorizzare i seguenti dati personali: nome, cognome, email, telefono,cellulare, fax, residenza, paese, pagina web, note, codice dipendente.Frasi relative alle Attività. Una attività è un lavoro che viene compiuto da un dipendente relativamente adun determinato progetto. Quando un dipendente imposterà in Outlook un nuovo elemento nel calendario“Time Sheet” relativo alle ore dedicate ad un determinato progetto, tale elemento corrisponderà ad unaattività nel database. Per ogni attività si vogliono memorizzare i seguenti dati: data di inizio attività, durata,data di inserimento, data ultima modifica, descrizione, note, codice attività.3.3 - Glossario dei termini Termine Descrizione Sinonimi CollegamentiCategoria Rappresenta la tipologia di un Classe Progetto progetto.Progetto Lavoro che deve essere svolto. Categoria,Attività, DipendenteAttività Tempo che un dipendente dedica ad Lavoro Progetto, Dipendente un progetto.Dipendente Lavoratore della ditta. Lavoratore Progetto, Attività.3.4 - Operazioni di analisi Dato un certo dipendente, si vogliono trovare i progetti alla quale ha partecipato. Dato un certo dipendente e un certo progetto, si vuole ottenere il resoconto delle ore che il dipendente ha svolto in un determinato periodo di tempo. Dato un certo progetto, si vogliono ottenere i dipendenti che hanno partecipato a tale progetto. Dato un certo progetto, si vogliono ottenere le ore totali che sono state dedicate a tale progetto. 6
  10. 10. 3 - Progettazione della base di dati3.5 - Progettazione concettualePer realizzare lo schema E/R viene utilizzata una strategia di tipo misto; si parte individuando i concettiprincipali e realizzando uno schema iniziale, sulla base di questo poi si può decomporre, si può raffinare,espandere e integrare, fino a raggiungere lo schema finale.Entità e RelazioniLe entità sono gli oggetti principali del data base. Unentità rappresenta un gruppo omogeneodinformazioni. Nel seguente schema E-R sono rappresentate le entità che sono state individuate e lerelazioni tra di esse. C ategoria A ppartenenza P rogetto A ssegnazione D ipendente A ttivitàLe entità sono: Categoria: rappresenta la tipologia di un progetto. Progetto: contiene le informazioni riguardanti un progetto. Dipendente: informazioni riguardanti il dipendente dell’azienda a cui verranno poi assegnati dei progetti. Attività: rappresenta il lavoro effettuato da un dipendente relativamente ad un determinato progetto.Le relazioni principali sono: Appartenenza: relazione tra l’entità categoria e l’entità progetto. Assegnazione: relazione ternaria tra le entità “Progetto”, “Dipendente” e “Attività”. 7
  11. 11. 3 - Progettazione della base di datiAnalisi delle entità CATEGORIAIDCategoria E’ il codice univoco che identifica una categoria: è candidato ad essere la chiave primaria dell’entità “Categoria”.Nome Nome della categoria.Produttiva Indica se la categoria è produttiva o no.Data inserimento Data di inserimento di una categoria.Data ultima modifica Data dell’ultima modifica di una categoria.Note Campo note, può essere utilizzato per dettagli aggiuntivi riguardanti una certa categoria. PROGETTOIDProgetto E’ il codice univoco che identifica un progetto: è candidato ad essere la chiave primaria dell’entità “Progetto”.Nome E’ il nome del progetto.Data di inizio Data dell’inizio del progetto.Data di fine Data della fine del progetto.Data inserimento Data di inserimento del progetto.Data ultima modifica Data dell’ultima modifica di un progetto.Note Può essere utilizzato per esprimere eventuali dettagli aggiuntivi relativi ad un progetto. DIPENDENTENome utente Nome utente del dipendente, è il nome utente che il dipendente utilizza per accedere al dominio della rete aziendale. È candidato a diventare chiave primaria dell’entità “Dipendente” assieme al dominio.Dominio Dominio della rete aziendale. Assieme al Nome utente è candidato a diventare chiave primaria dell’entità “Dipendente”.Nome Nome del dipendente.Cognome Cognome del dipendente.Email Email del dipendente.Telefono Numero di telefono fisso del dipendente. Attributo multivalore, perché il dipendente può avere più numeri di telefono differenti. 8
  12. 12. 3 - Progettazione della base di datiResidenza Residenza del dipendente. Attributo composto.Pagina WEB Sito internet o pagina personale del dipendente.Data inserimento Data di inserimento del dipendente.Data ultima modifica Data dell’ultima modifica dei dati del dipendente.Note Eventuali note aggiuntive relative ad un dipendente. ATTIVITA’IDAttività Codice univoco che identifica un’attività: è candidato ad essere la chiave primaria dell’entità “Attività”.Descrizione Eventuale descrizione dell’attività.DataOra di inizio Data e ora di inizio dell’attività.DataOra di fine Data e ora di fine attività.Data di inserimento Data di inserimento dell’attività.Data ultima modifica Data dell’ultima modifica di una attività.Note Eventuali note aggiuntive relative ad un’attività.Analisi delle relazioni e delle cardinalità APPARTENENZACollega l’entità “Categoria” all’entità “Progetto”.Cardinalità Uno a molti: una categoria può contenere più progetti diversi e un progetto può appartenere ad una sola categoria. La partecipazione dell’entità “Progetto” alla relazione è obbligatoria in quanto ad ogni progetto appartiene ad una categoria, mentre la partecipazione dell’entità “Categoria” è facoltativa in quanto vi possono essere delle categorie non rappresentate dai progetti che si stanno sviluppando all’interno dell’azienda. ASSEGNAZIONECollega le entità “Dipendente”, “Progetto”, “Attività”.Cardinalità Molti a molti: un progetto può venire assegnato ad uno o più dipendenti differenti e ad un dipendente possono venire assegnati uno o più progetti diversi. Il tempo che ogni dipendente dedicherà di volta in volta ad un certo progetto che gli è stato assegnato, verrà rappresentato da una attività.Data di inserimento Data di assegnazione del progetto al dipendente. 9
  13. 13. 3 - Progettazione della base di datiData ultima modifica Data dell’ultima modifica dell’assegnazione.Note Eventuali dettagli aggiuntivi riguardanti una certa assegnazione.3.6 - Progettazione logicaAnalizzando il diagramma E/R si può notare che, la relazione ternaria “Assegnazione” può esserescomposta: si analizzi in particolare la relazione tra le entità “Progetto” e “Dipendente”. Un progetto puòessere assegnato a più dipendenti diversi, e ad ogni dipendente possono essere assegnati più progetticontemporaneamente: la relazione tra l’entità Progetto e l’entità Dipendente è quindi del tipo molti amolti. Allo scopo di semplificare la progettazione del database relazionale, una relazione M:N può essereconvertita in due relazioni 1:N tramite l’utilizzo di un’entità associativa: l’utilizzo di tale entità permette diavere una visione più completa delle tabelle che comporranno il database. Progetto N Assegnazione M Dipendente Progetto 1 Richiesta N Assegnazione N Ricezione 1 DipendenteCosì facendo, i dati utili in merito all’assegnazione di un determinato progetto ad un dipendente, si trovanonell’entità associativa “Assegnazione”. L’amministratore del database, quando vorrà abilitare undipendente a lavorare ad un certo progetto, non farà altro che inserire un nuovo record nella tabellaassegnazione specificando il progetto e il dipendente interessati, più eventuali dettagli aggiuntivi.A questo punto, si deve analizzare il collegamento dell’entità “Attività” all’entità associativa“Assegnazione”: si ricordi che un’Attività è un lavoro svolto da un dipendente relativamente ad un progettoche gli è stato assegnato. Un dipendente lavorerà solamente ai progetti che gli sono stati assegnati (datoche gli altri progetti non gli interessano) e quindi un’Attività riguarderà una certa Assegnazione: possonoesserci più Attività differenti relative ad una determinata Assegnazione. Il diagramma E/R diventerà ilseguente: 10
  14. 14. 3 - Progettazione della base di dati Progetto 1 Richiesta N Assegnazione N Ricezione 1 Dipendente 1 Relazione N AttivitàAttributi Multipli & CompostiDall’analisi delle entità che è stata fatta in “Progettazione Concettuale”, relativamente all’entità“Dipendente”, sono stati evidenziati un attributo composto e due attributi multivalore. L’attributocomposto relativo alla residenza del dipendente viene suddiviso in 4 attributi elementari “Indirizzo”,“Città”, “Provincia”, “CAP”. Gli attributi multivalore “Telefono” e “Cellulare” saranno trattati come degliattributi elementari per semplificare poi la gestione del database, perché rappresentano dei dati nonessenziali per lo scopo del Time Sheet e d’inserimento facoltativo da parte dei dipendenti.Scelta degli Identificatori Primari Categoria: per la categoria viene impostato un IDCategoria come identificatore univoco. Progetto: dato che ogni progetto deve essere identificato univocamente, viene scelto per ogni progetto un identificatore univoco IDProgetto Dipendente: la chiave scelta è NomeUtente + Dominio, in quanto questi due campi permettono di identificare univocamente un dipendente all’interno di una rete aziendale. Assegnazione: la chiave scelta è IDProgetto + IDDipendente (formato da Nome utente e Dominio), in quanto questi due campi permettono di risalire con certezza all’assegnazione che è stata fatta ad un determinato dipendente relativamente ad un certo progetto. Attività: la chiave scelta è IDAttività, in quanto identifica univocamente un’attività svolta da un dipendente relativamente ad un determinato progetto. 11
  15. 15. 3 - Progettazione della base di dati Schema E/R finale ristrutturato Indirizzo Note Città Data ultima modifica Provincia Data di inserimento Cap Appartenenza 1,1 Progetto 0,N Richiesta 1,1 Assegnazione 1,1 Ricezione 0,N Dipendente Note Data ultima modifica 0,N Data di inserimento 0,N Data fine Note Data Inizio Data ultima modifica Nome Relazione Data di inserimento IDProgetto Pagina WEB Cellulare Telefono Categoria Attività 1,1 Email Cognome Produttiva? Nome Note Note Nome Utente Data ultima modifica Data ultima modifica Dominio Data Inserimento Data di inserimento Nome Durata IDCategoria DataOra Inizio Descrizione IDAtività Schema relazionale dedotto dallo schema E/R finale Categoria Progetto Assegnazione DipendentePK IDCategoria PK IDProgetto PK,FK1 IDProgetto PK Nome Utente PK,FK2 Nome Utente PK Dominio Nome Nome PK,FK2 Dominio Produttiva? Data inizio Nome Data inserimento Data fine Data inserimento Cognome Data ultima modifica Data inserimento Data ultima modifica Indirizzo Note Data ultima modifica Note Città Note Provincia FK1 IDCategoria CAP Email Telefono Cellulare Pagina web Attività Data inserimento PK IDAttività Data ultima modifica Note Descrizione DataOra inizio DataOra fine Data inserimento Data ultima modifica Note FK1 Nome Utente FK1 Dominio FK1 IDProgetto 12
  16. 16. 3 - Progettazione della base di dati3.7 - Stored ProcedureUna stored procedure è un programma generalmente scritto in SQL, mantenuto nel database stesso. Questiprogrammi permettono la definizione di parametri in ingresso e in uscita, la definizione di variabili, comeanche la selezione di dati e la definizione di cicli3.Elenco delle stored procedure: Nome Parametri DescrizioneAggiornaDatiUtente @Nome nvarchar(50), Aggiorna i dati del dipendente in @Cognome nvarchar(50), base ai parametri ricevuti in @Indirizzo nvarchar(50), input. @Città nvarchar(50), @Provincia nvarchar(50), @CAP nvarchar(5), @Email nvarchar(50), @Telefono text, @Cellulare text, @Pagina_web nvarchar(50), @Data_ultima_modifica date, @Note text, @Original_Nome_Utente nvarchar(50), @Original_Dominio nvarchar(50)AttivitàUtente @DataInizio datetime, Ottiene l’elenco di tutte le attività @DataFine datetime, di un dipendente, relative ad un @Nome_Utente nvarchar(50), certo periodo di tempo. @Dominio nvarchar(50)CancellaAttivitàUtente @Original_Nome_utente nvarchar(50), Cancella tutte le attività del @Original_Dominio nvarchar(50), dipendente in un determinato @Inizio datetime, periodo di tempo. @Fine datetimeCopiaAttivitàDB @DataOra_inizio datetime, Crea un nuovo record nella @Durata int, tabella Attività, in base al valore @Nome_utente nvarchar(50), dei parametri. @Dominio nvarchar(50),3 Maggiori informazioni su http://it.wikipedia.org/wiki/Stored_procedure 13
  17. 17. 3 - Progettazione della base di dati @IDProgetto intElencoProgetti @NomeUtente nvarchar(50), Ottiene l’elenco dei progetti che @Dominio nvarchar(50) sono stati assegnati ad un dipendente.InfoUtente @NomeUtente nvarchar(50), Ottiene i dati relativi ad un @Dominio nvarchar(50) dipendente.InserisciUtente @NomeUtente nvarchar(50), Inserisce un nuovo dipendente @Dominio nvarchar(50) nella tabella Dipendenti.TotaleAttivitàPeriodo @Inizio datetime, Ottiene il numero delle attività @Nome_Utente nvarchar(50), presenti nel database all’interno @Dominio nvarchar(50), di un certo periodo di tempo. @Fine datetimeVerificaUtente @NomeUtente nvarchar(50), Verifica l’esistenza di un @Dominio nvarchar(50) dipendente. 14
  18. 18. 4 - Progettazione dell’applicativoIn questo capitolo si procede alla progettazione dell’applicativo mediante gli strumenti forniti dal linguaggioUML. Creato con l’intento di unificare in un unico standard le metodologie per il disegno nell’ambito dellaprogettazione di sistemi software, l’UML (Unified Modeling Language) stabilisce un insieme di notazioni esimboli, una collezione di diagrammi composti da elementi grafici e testuali che consentono di descrivere ilsistema a più livelli d’astrazione.4.1 - Use case diagramLo Use case diagram è lo strumento utilizzato per la descrizione delle funzionalità offerte dal software dalpunto di vista degli attori che interagiscono con il sistema stesso. Outlook Database TimeSheet Applicazione TimeSheet Inserimento Interrogazione attività Aggiornamento Inserimento/ lista progetti Cancellazione Salvataggio attività Modifica record Utente Modifica dati personali Excel Esportazione attività Creazione foglio Impostazioni di lavoro 15
  19. 19. 4 - Progettazione dell’applicativoL’utente, tramite la scheda “Time Sheet” che verrà aggiunta nella barra multifunzione di Outlook, potràsalvare i dati relativi alle attività che ha svolto, aggiornare la lista dei progetti che gli sono stati assegnati,modificare i suoi dati personali, esportare le attività all’interno di un file Excel e potrà modificare leimpostazioni dell’applicazione Time Sheet. Tramite il click con il tasto destro del mouse sulla vista delcalendario “Time Sheet”, l’utente potrà inserire nuove attività selezionando dall’apposita lista “Progetti”del menù il progetto alla quale vorrà associare l’attività.4.2 - Activity diagramL’Activity diagram descrive i processi alla base di una data funzionalità del software. L’algoritmo pone inprimo piano le singole attività evidenziando i sistemi responsabili che intervengono nel corsodell’elaborazione. Lo schema è stato suddiviso in più parti, allo scopo di renderne il diagramma piùcomprensibile. Si analizzeranno le funzionalità di maggior interesse per il timesheet. Applicazione Time Sheet Database Time Sheet Aggiornamento progetti Verifica connessione con il database Connessione non disponibile Connessione disponibile Lettura progetti assegnati allutente Creazione file XML locale con lista progetti Comunicazione allutente dellesito delloperazione 16
  20. 20. 4 - Progettazione dell’applicativoIl diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utenteaggiorna la lista dei progetti che gli sono stati assegnati. Al termine di questo processo, se l’operazione èandata a buon fine, sarà creato un file XML nella cartella di installazione del programma contenente la listadei progetti che sono stati assegnati al dipendente. La scelta di creare un file XML locale è dovuta al fattoche, in mancanza di connessione con il database, l’utente sarebbe impossibilitato nella creazione di nuoveattività all’interno del calendario timesheet. In dettaglio: 1. L’utente seleziona dalla scheda “Time Sheet” il pulsante “Aggiorna progetti” 2. Il programma verifica la disponibilità della connessione con il database. 3. Se la connessione ha esito positivo, si ottiene dal database la lista dei progetti che sono assegnati all’utente. 4. Si crea un file XML locale contenente le informazioni relative ai vari progetti. 5. Si comunica all’utente l’esito dell’operazione. Outlook 2010 Selezione del periodo dellattività nel calendario "Time Sheet" Click con il tasto destro del mouse nella vista del calendario "Time Sheet" Caricamento lista progetti da file XML e creazione menù "Progetti" Selezione progetto dalla lista Creazione attività relativa al progetto selezionato nel calendario "Time Sheet"Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente creauna nuova attività (intervallo di tempo dedicato a svolgere un lavoro) nel calendario “Time Sheet”. Indettaglio: 17
  21. 21. 4 - Progettazione dell’applicativo 1. L’utente seleziona nel calendario “Time Sheet” un certo periodo durante una giornata. 2. L’utente clicca con il tasto destro nella selezione che ha effettuato precedentemente, aprendo così il menù contestuale relativo al calendario. 3. Il programma carica dal file XML presente nella cartella di installazione la lista dei progetti che sono stati assegnati al dipendente, e crea dinamicamente il menù progetti con i dati contenuti nel file XML. 4. L’utente seleziona il progetto che vuole assegnare al periodo che ha selezionato inizialmente. 5. Il programma crea la nuova attività relativa al progetto che l’utente ha selezionato. Applicazione Time Sheet Database Time Sheet Salvataggio Attività Verifica connessione con il database Connessione disponibile Cancellazione Attività precedenti Connessione non disponibile Inserimento nuove attività Comunicazione allutente dellesito delloperazioneIl diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente salvale attività che ha creato in Outlook all’interno del database. La cancellazione delle attività precedenti el’inserimento delle nuove attività verranno effettuate considerando un certo intervallo temporale. Indettaglio: 1. L’utente seleziona dalla scheda “Time Sheet” il pulsante “Salva Attività Database” 2. Il programma verifica la disponibilità della connessione con il database. 18
  22. 22. 4 - Progettazione dell’applicativo 3. Se la connessione ha esito positivo, si cancellano dal database tutte le attività presenti all’interno di un certo periodo. 4. Si copiano le nuove attività, tenendo in considerazione il periodo che si è utilizzato nel punto precedente. 5. Si comunica l’esito dell’operazione all’utente. Applicazione Time Sheet File Excel Esportazione Attività Selezione periodo di esportazione Verifica esistenza file Excel e permessi di scrittura Esiste ed è accessibile Creazione nuovi fogli di lavoro Il file non è accessibile Comunicazione allutente dellesito delloperazioneIl diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utenteesporta i dati relativi alle attività che ha svolto all’interno del file Excel. In dettaglio: 1. L’utente seleziona dalla scheda “Time Sheet” il pulsante “Esporta Attività Excel” 2. L’utente seleziona dalla finestra che comparirà, il periodo che vuole considerare per l’esportazione. 3. Il programma verifica l’esistenza del file Excel. Se il file non esiste lo crea e aggiunge le varie schede relative al TimeSheet al suo interno. Se il file esiste, verifica se è accessibile in scrittura e, in tal caso, aggiunge i nuovi fogli. Se il file non è accessibile, significa che il file è già aperto da un altro programma in modo esclusivo. 4. Si comunica all’utente il risultato dell’operazione. 19
  23. 23. 4 - Progettazione dell’applicativo4.3 - Class diagramUtilizzando le strutture tipiche della programmazione ad oggetti, classi metodi ed attributi, il Class diagramritrae il sistema sotto l’aspetto delle entità che ne fanno parte. ThisAddIn Tools ModuloGestioneTimeSheet Esportazione Anagrafica ImpostazioniIl progetto si compone di 6 classi: ThisAddIn: entry point dell’applicativo. Contiene le azioni che devono essere eseguite all’avvio dell’add-in e alla sua chiusura. Tools: contiene i metodi callback dei pulsanti che sono stati aggiunti nella barra multifunzione e nel menù contestuale. Tali metodi permettono di impostare le azioni che devono essere eseguite quando si clicca su uno di questi pulsanti. ModuloGestioneTimeSheet: modulo che contiene una serie di funzioni utili per la gestione e creazione del timesheet. Le funzioni di questo modulo sono condivise all’interno delle altre classi. Esportazione: form dedicato all’esportazione dei timesheet all’interno di un file Excel. Anagrafica: form dedicato alla gestione dei dati dell’utente. Impostazioni: form dedicato ai settaggi dell’applicativo “Gestione Time Sheet”. Contiene le impostazioni di salvataggio del file Excel e il periodo da considerare per il caricamento dei dati dal database. 20
  24. 24. 5 - Interfaccia5.1 - IntroduzioneIn questo capitolo verranno descritti: L’installazione e configurazione dell’add-in. Interfaccia dell’applicativo. Esempio di utilizzo dell’applicativo. Requisiti di installazione.5.2 - Installazione e configurazione dell’add-inInstallazioneL’applicativo che è stato creato, può essere installato grazie ad un semplice setup che permette, in mododel tutto automatico, l’aggiunta dell’add-in ad Outlook 2010. Aprendo il file di setup apparirà la seguenteschermata: Figura 3 - Installazione delladd-in "Gestione Time Sheet".Dopo aver terminato l’installazione, aprendo Outlook l’add-in si avvierà automaticamente. 21
  25. 25. 5 - InterfacciaConfigurazioneSe si ha la necessità di cambiare la stringa di connessione al database, all’interno della cartella diinstallazione del programma, sarà presente un file “configurazione.str” che conterrà la stringa diconnessione utilizzata dal programma “Gestione Time Sheet” per il collegamento al database: modificandoopportunamente tale stringa, si potrà cambiare il riferimento al database che verrà utilizzatodall’applicativo.5.3 - Interfaccia dell’applicativoL’applicativo creato, viene eseguito con l’avvio di Outlook 2010. Esso si presenta con una scheda aggiuntivadenominata “Time Sheet” presente nella barra multifunzione. Figura 4 - Come si presenta il programma all’avvio di Outlook.Dopo aver aperto la scheda “Time Sheet” sarà possibile usufruire di tutte le funzionalità introdottedall’applicativo “Gestione Time Sheet”: Figura 5 - Contenuto della scheda “Time Sheet”. 22
  26. 26. 5 - InterfacciaIl pulsante “Informazioni sistema” permette di visualizzare le informazioni relative alla macchinache sta eseguendo il programma.Il pulsante “Aggiorna Progetti” permette di aggiornare la lista dei progetti che sono stati assegnatial dipendente che sta utilizzando il programma.Il pulsante “Salva attività Database” permette di copiare tutte le attività presenti all’interno delcalendario “Time Sheet” nel database.Il pulsante “Esporta attività Excel” apre un form che permette di impostare i parametri perl’esportazione delle attività in un file Excel. Figura 6 - Form di esportazione dati nel file Excel.Il pulsante “Modifica dati personali” apre un form che permette di modificare i dati del dipendenteche sta utilizzando il programma. 23
  27. 27. 5 - Interfaccia Figura 7 - Form di modifica dati del dipendente.Il pulsante “Impostazioni Time Sheet” apre un form che permette di modificare le impostazionidell’add-in. Figura 8 - Form di modifica delle impostazioni del programma. 24
  28. 28. 5 - InterfacciaPassando nella sezione “Calendario” di Outlook si può notare che l’add-in, con il primo avvio, crea uncalendario “parallelo” a quello standard denominato “Time Sheet”: cliccando con il tasto destro sulla vistadel calendario, si può notare la presenza di un nuovo elemento nel menù contestuale, chiamato “Progetti”,che contiene l’elenco di tutti i progetti che sono stati assegnati al dipendente, divisi per categoria. Figura 9 - Aggiunta della voce "Progetti" nel menù contestuale del calendario "Time Sheet"5.4 - Esempio di utilizzo dell’applicativo Il dipendente, dopo aver aperto Outlook, per gestire il suo Time Sheet può andare nel calendario “Time Sheet” che viene aggiunto dall’applicativo e, tramite l’utilizzo del tasto destro del mouse, può utilizzare la voce “Progetti” che verrà aggiunta al menù contestuale per selezionare il progetto che vuole assegnare all’intervallo di tempo che ha selezionato sulla vista del calendario. Dopo aver inserito tutte le attività, l’utente può decidere di esportarle all’interno del file Excel selezionato tramite la schermata “Impostazioni Time Sheet”. 25
  29. 29. 5 - Interfaccia L’utente può decidere inoltre di salvare le attività nel database cliccando su “Salva Attività Database”: questa operazione viene comunque effettuata in modo automatico alla chiusura di Outlook. Se l’utente vorrà modificare il percorso di salvataggio del File Excel o il periodo da considerare per caricare/salvare le attività sul database, tramite il pulsante “Impostazioni Time Sheet” potrà effettuare queste operazioni.5.5 - Requisiti per l’installazioneL’applicativo presenta i seguenti requisiti per l’installazione: Microsoft Outlook 2010: per i requisiti di tale applicazione si rimanda al rispettivo sito4. Microsoft .NET Framework 45. Windows Installer 3.16.4 Requisiti di sistema per Office 2010: http://technet.microsoft.com/it-it/library/ee624351.aspx5 Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b76 Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=889482FC-5F56-4A38-B838-DE776FD4138C 26
  30. 30. 6 - ImplementazioneIn questo capitolo viene descritta l’implementazione dell’applicativo. Qui di seguito vengono presentate neldettaglio le parti salienti dell’applicativo; verranno descritte le funzioni contenute in ognuna delle classi checompongono il programma e verranno analizzate le funzioni di maggior interesse per la creazione/gestionedel “Time Sheet”.ThisAddIn.vbQuesta classe rappresenta l’entry point dell’applicativo. Essa è composta dalle seguenti funzioni: Private Sub ThisAddIn_Startup() Handles Me.Startup Funzione eseguita all’avvio dell’add-in. Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown Funzione eseguita alla chiusura dell’add-in. Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility Funzione utilizzata per estendere l’interfaccia utente di Outlook. Private Sub Application_Quit() Handles Application.Quit Funzione eseguita alla chiusura di Outlook.All’avvio dell’add-in vengono richiamate delle funzioni che permettono di recuperare la stringa diconnessione al database, creare un nuovo calendario “Time Sheet” (se non esiste già), caricare le attivitàpresenti nel database, recuperare i progetti che sono stati assegnati al dipendente. Viene inoltre richiamatala funzione “CreateRibbonExtensibilityObject” che permette di estendere l’interfaccia utente di Outlook.Alla chiusura di Outlook verranno richiamate le istruzioni contenute nella funzione Application_Quit(), chepermetteranno di salvare le attività sul database.Codice eseguito all’avvio dell’add-inPrivate Sub ThisAddIn_Startup() Handles Me.Startup Percorso della cartella dove risiede il programma If Right(AppDomain.CurrentDomain.BaseDirectory, 1) <> "" Then My.Settings.PercorsoXML = AppDomain.CurrentDomain.BaseDirectory + "" Else My.Settings.PercorsoXML = AppDomain.CurrentDomain.BaseDirectory End If My.Settings.Save() Lettura dal file xml della stringa di connessione Dim stringa As String = StringaConnessione() Select Case stringa Case "" MsgBox("Non è stata trovata nessuna stringa di connessione valida: verrà utilizzata quella 27
  31. 31. 6 - Implementazionedi default.", vbCritical) Case "Non Esiste" MsgBox("Non è stato trovato il file relativo alla stringa di connessione: Verrà utilizzatala stringa di connessione di default.", vbCritical) Case Else My.Settings.connetionString = StringaConnessione() End Select Se non esiste, si crea un nuovo calendario chiamato "Time Sheet" Call CreaCalendario() Call PercorsoPred() Si calcola la data "iniziale" If My.Settings.SalvataggioCorretto = True Then Dim Data1 As Date = Now.AddYears(-My.Settings.AnniSalvataggio).AddMonths(-My.Settings.MesiSalvataggio) Dim DataPrec As Date = New Date(Data1.Year, Data1.Month, 1) Dim DataAtt As Date = New Date(Now.Year, Now.Month, DateTime.DaysInMonth(Now.Year, Now.Month)) If CancellaAttivitàOutlook(DataPrec, DataAtt) Then If Not CreaAttivitàOutlook(DataPrec, DataAtt) Then MsgBox("Si sono verificati errori durante la copia delle attività dal Database",vbCritical) End If Else MsgBox("Si sono verificati errori durante la cancellazione delle attività dal Database",vbCritical) End If End If If VerificaEsistenzaDipendente(System.Environment.UserName, System.Environment.UserDomainName) Then CaricaDatiDbXML() Else MsgBox("Si sono verificati errori durante laccesso al database TimeSheet. Verifica di avere ipermessi necessari per accedervi.", vbCritical) End If End SubCodice utilizzato per estendere l’interfaccia utente. Protected Overrides Function CreateRibbonExtensibilityObject() AsMicrosoft.Office.Core.IRibbonExtensibility Return New Tools() End FunctionTools.vbQuesta classe permette l’estensione dell’interfaccia utente di Outlook. Si analizzano qui di seguito i metodicallback utilizzati dai pulsanti che sono stati aggiunti: Public Function LeggiDatiXML(ByVal control As IRibbonControl) As String Funzione che legge i dati dal file xml "progetti" e restituisce la stringa xlm per il menù contestuale. Public Function GetButtonLabel(ByVal control As IRibbonControl) As String Funzione che restituisce la stringa con il nome del progetto in base al valore del controllo. Public Sub infoSistema(ByVal control As Office.IRibbonControl) Informazioni varie relative al sistema. Public Sub EsportaDati(ByVal control As Office.IRibbonControl) Funzione che apre il form di esportazione dati. Public Sub ModificaImpostazioni(ByVal control As Office.IRibbonControl) 28
  32. 32. 6 - Implementazione Funzione che apre il form delle impostazioni. Public Sub ModificaDatiDipendente(ByVal control As Office.IRibbonControl) Funzione che apre il form di modifica dei dati del dipendente. Public Sub CaricaDatiDB(ByVal control As Office.IRibbonControl) Funzione che aggiorna i progetti nel file xml. Public Sub CreaAppuntamento(ByVal control As Office.IRibbonControl) Funzione che crea un nuovo appuntamento, in base alla selezione dellutente. Public Sub CaricaAppuntamenti(ByVal control As Office.IRibbonControl) Funzione che salva sul database il calendario attuale di Outlook, sincronizzando il db con Outlook. Public Function IsVisible(ByVal control As Office.IRibbonControl) As Boolean Funzione che rende visibile il menu dinamico "progetti", solo nel calendario "Time Sheet".Grazie all’utilizzo del file XML “Tools.xml” (che contiene la definizione della User Interface), questa classeestende l’interfaccia di Outlook aggiungendo una nuova scheda nella barra multifunzione e personalizzandoil menù contestuale che verrà visualizzato nel calendario “Time Sheet”.Codice utilizzato per creare il menù dinamico “Progetti” nel menù contestuale. Funzione che legge i dati dal file xml "progetti" e restituisce la stringa xlm per il menù contestuale. Public Function LeggiDatiXML(ByVal control As IRibbonControl) As String Dim reader As XmlTextReader = New XmlTextReader(My.Settings.PercorsoXML + "progetti.xml") Dim MyStringBuilder As StringBuilder = New StringBuilder("<menuxmlns=""http://schemas.microsoft.com/office/2006/01/customui"" >") Dim catPrecedente As String = "" Dim count As Integer = 0 If EsisteFile(My.Settings.PercorsoXML + "progetti.xml") Then Do While (reader.Read()) Select Case reader.NodeType Case XmlNodeType.Element If reader.HasAttributes Then reader.MoveToAttribute("NomeCategoria") If (catPrecedente <> reader.Value) Then If catPrecedente <> "" Then MyStringBuilder.Append("<menuSeparator id=""sep" + count.ToString + """/>") count = count + 1 End If catPrecedente = reader.Value End If reader.MoveToAttribute("IDProgetto") MyStringBuilder.Append("<button id=""ctr" + reader.Value + """getLabel=""GetButtonLabel"" onAction=""CreaAppuntamento"" />") End If End Select Loop End If MyStringBuilder.Append("</menu>") reader.Close() Return MyStringBuilder.ToString() End Function Funzione che restituisce la stringa con il nome del progetto in base al valore del controllo. Public Function GetButtonLabel(ByVal control As IRibbonControl) As String Dim reader As XmlTextReader = New XmlTextReader(My.Settings.PercorsoXML + "progetti.xml") Dim flag As Boolean = False If EsisteFile(My.Settings.PercorsoXML + "progetti.xml") Then Do While (flag = False And reader.Read()) Select Case reader.NodeType Case XmlNodeType.Element 29
  33. 33. 6 - Implementazione If reader.HasAttributes Then reader.MoveToAttribute("IDProgetto") If "ctr" + reader.Value = control.Id Then flag = True reader.MoveToNextAttribute() Dim valore As String = reader.Value reader.Close() Return valore End If End If End Select Loop End If Return "Nothing" End FunctionCodice utilizzato per inserire un nuovo appuntamento, in base alla selezione dell’utente. Funzione che crea un nuovo appuntamento, in base alla selezione dellutente. Public Sub CreaAppuntamento(ByVal control As Office.IRibbonControl) Dim reader As XmlTextReader = New XmlTextReader(My.Settings.PercorsoXML + "progetti.xml") Dim flag As Boolean = False Dim IDProgetto As String = "" Dim NomeProgetto As String = "" Dim Produttiva As String = "" Dim NomeCategoria As String = "" Ciclo per ricavare i dati di un certo progetto dal file xml. Do While (flag = False And reader.Read()) Select Case reader.NodeType Case XmlNodeType.Element If reader.HasAttributes Then While reader.MoveToNextAttribute() If reader.Name = "IDProgetto" Then If "ctr" + reader.Value = control.Id Then IDProgetto = reader.Value reader.MoveToNextAttribute() NomeProgetto = reader.Value reader.MoveToNextAttribute() Produttiva = reader.Value reader.MoveToNextAttribute() NomeCategoria = reader.Value flag = True End If End If End While End If End Select Loop reader.Close() If flag = True Then Richiamo della funzione CreateAppt per creare il progetto con i dati ricavati precedentemente. Call CreateAppt(NomeProgetto, "Identificativo progetto: " + IDProgetto, NomeCategoria,"Productivity: " + Produttiva, False, 30) End If End SubTools.xmlIl file Tools.xml contiene il codice per la personalizzazione dell’interfaccia utente di Outlook. Nella primaparte viene aggiunta la scheda “Time Sheet” all’interno della barra multifunzione mentre nella secondaparte, viene aggiunto nel menù contestuale del calendario “Time Sheet” l’elemento “Progetti”, checonterrà l’elenco dei progetti che sono stati assegnati al dipendente. 30
  34. 34. 6 - ImplementazioneCodice del file tools.xml utilizzato per definire la personalizzazione della user interface.<?xml version="1.0" encoding="UTF-8"?><customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> <ribbon> <tabs> <tab id="TabAds" label ="Time Sheet"> <group id="MyGroup" label="Informazioni generali"> <button id="btnSistema" size="large" label="Informazioni sistema"imageMso="TentativeAcceptInvitation" onAction ="infoSistema"/> <button id="btnAggiornaProgetti" size="large" label="Aggiorna Progetti" imageMso="Refresh"onAction="CaricaDatiDB" /> <button id="btnCaricaDati" size="large" label="Salva attività Database" imageMso="FileSave"onAction="CaricaAppuntamenti" /> <button id="btnEsportazione" size="large" label="Esporta attività Excel"imageMso="RecoverInviteToMeeting" onAction="EsportaDati" /> <button id="btnModificaDati" size="large" label="Modifica dati personali"imageMso="ContactPictureMenu" onAction="ModificaDatiDipendente" /> <button id="btnImpostazioni" size="large" label="Impostazioni Time Sheet"imageMso="ControlsGallery" onAction ="ModificaImpostazioni"/> </group> </tab> </tabs> </ribbon> <contextMenus> <contextMenu idMso="ContextMenuCalendarView"> <menuSeparator id="MySeparator" /> <dynamicMenu id="MenuProgettiDinamico" label= "Progetti" getContent="LeggiDatiXML" getVisible="IsVisible" /> </contextMenu> </contextMenus></customUI>ModuloGestioneTimeSheet.vbQuesto modulo contiene una serie di funzioni utili per la gestione del timesheet. Le funzioni contenute inquesto modulo sono le seguenti: Public Function StringaConnessione() As String Funzione per leggere la stringa di connessione al database dal file xlm specificato. Public Function EsisteFile(ByVal NomeFile As String) As Boolean Funzione che verifica lesistenza di un file, dato il percorso come parametro. Public Function FileAccessibile(ByVal NomeFile As String) As Integer Funzione che verifica lesistenza di un file e il suo accesso, dato il percorso come parametro. Function NomeGiorno(ByVal DateValue As Date) As String Funzione che restituisce il nome (in inglese) del giorno della data passata come parametro Public Function mesiDifferenza(ByVal anni As Integer, ByVal mesi As Integer) As Integer Funzione che calcola quanti mesi in totale ci sono, dati i mesi e gli anni come parametro. Function CaricaDatiDbXML() As Boolean Funzione che carica i progetti dal database e li copia su un file progetti.xml Public Function VerificaEsistenzaDipendente(ByVal Nome As String, ByVal Dominio As String) As Boolean Funzione per la verifica dellesistenza di un dipendente. Se il dipendente non esiste, lo crea. Public Sub CreateAppt(ByVal strSubject, ByVal strBody, ByVal strCategories, ByVal strLocation, ByVal bolRemindMe, ByVal intRemindMe) 31
  35. 35. 6 - Implementazione Funzione che crea un appuntamento in base alla selezione fatta dall’utente e in base ai paramentri specificati. Public Sub CreateAppt2(ByVal dataOraInizio, ByVal durata, ByVal strSubject, ByVal strBody, ByVal strCategories, ByVal strLocation, ByVal bolRemindMe, ByVal intRemindMe) Funzione che crea un appuntamento in base ai paramentri specificati. Public Sub CreaCalendario() Funzione per creare un nuovo calendario chiamato "Time Sheet". Public Function CreateFolder(ByVal parent As Outlook.Folder, ByVal sName As String, ByVal folderType As Outlook.OlDefaultFolders) As Outlook.Folder Funzione per la creazione / assegnazione di una cartella Outlook Public Function GetFolder(ByVal parent As Outlook.Folder, ByVal sFolderName As String) As Outlook.Folder Funzione per ottenere loggetto relativo alla cartella specificata. Public Function FindAppts(ByVal myStartDate As Date, ByVal myEndDate As Date) As Outlook.Items Funzione per la ricerca di Appuntamenti allinterno di Outlook in base ai parametri specificati. Public Function FindAppts2(ByVal myStartDate As Date, ByVal myEndDate As Date, ByVal NomeProgetto As String) As Outlook.Items Funzione per la ricerca di Appuntamenti allinterno di Outlook in base ai parametri specificati. Function VerificaAttivitàDB(ByVal Inizio As Date, ByVal Fine As Date) As Integer Funzione che verifica le attività presenti allinterno del database in base ad una certa data. Function CancellaAttivitàDB(ByVal Inizio As Date, ByVal Fine As Date) As Boolean Funzione che cancella le attività presenti allinterno del database in un periodo. Function CopiaAttivitàDB(ByVal iInizio As Date, ByVal iDurata As String, ByVal iBody As String) As Boolean Funzione che copia le attività (Appuntamenti) presenti allinterno di Outlook sul database. Public Function CancellaAttivitàOutlook(ByVal iInizio As Date, ByVal iFine As Date) As Boolean Funzione che cancella le attività di Outlook. Public Function CreaAttivitàOutlook(ByVal iInizio As Date, ByVal iFine As Date) As Boolean Funzione che crea le attività su Outlook caricandole dal DB, in un certo periodo. Public Function CopiaAttivitàDB() As Boolean Funzione che copia le attività sul database, in base al periodo impostato dallutente. Public Sub releaseObject(ByVal obj As Object) Funzione che permette di liberare risorse Public Sub PercorsoPred() Funzione che calcola il percorso predefinito di salvataggio, e lo imposta sui settaggi dellutente.Codice per il caricamento dei progetti assegnati all’utente e la creazione del file XML. Funzione che carica i progetti dal database e li copia su un file progetti.xml Function CaricaDatiDbXML() As Boolean Dichiarazione e inizializzazione variabili. Dim sqlCon As SqlConnection Dim command As SqlCommand Dim adapter As New SqlDataAdapter Dim sqlDR As SqlClient.SqlDataReader Dim sqlDT As New DataTable 32
  36. 36. 6 - Implementazione Connessione con il database. sqlCon = New SqlConnection(My.Settings.connetionString) Try sqlCon.Open() command = New SqlCommand() Richiamo della Stored Procedure "ElencoProgetti", con relativi parametri command.CommandText = "ElencoProgetti" command.CommandType = CommandType.StoredProcedure command.Connection = sqlCon command.Parameters.AddWithValue("@NomeUtente", Environment.UserName) command.Parameters.AddWithValue("@Dominio", Environment.UserDomainName) sqlDR = command.ExecuteReader Si memorizzano i dati ottenuti dal database sul file xml. Dim myXmlTextWriter As XmlTextWriter = New XmlTextWriter(My.Settings.PercorsoXML +"progetti.xml", System.Text.Encoding.UTF8) myXmlTextWriter.Formatting = System.Xml.Formatting.Indented myXmlTextWriter.WriteStartDocument(False) myXmlTextWriter.WriteStartElement("Progetti") While sqlDR.Read myXmlTextWriter.WriteStartElement("Progetto") myXmlTextWriter.WriteAttributeString("IDProgetto", sqlDR.GetValue(0).ToString) myXmlTextWriter.WriteAttributeString("Nome", sqlDR.GetValue(1).ToString()) myXmlTextWriter.WriteAttributeString("Produttiva", sqlDR.GetValue(2).ToString()) myXmlTextWriter.WriteAttributeString("NomeCategoria", sqlDR.GetValue(3).ToString()) myXmlTextWriter.WriteEndElement() End While Si chiude il nodo "Progetti" creato inizialmente. myXmlTextWriter.WriteEndElement() myXmlTextWriter.Flush() myXmlTextWriter.Close() sqlDR.Close() Return True Catch ex As Exception In caso di errori, si avvisa lutente. MsgBox("Error: " + ex.Message, MsgBoxStyle.Critical) Return False End Try End FunctionCodice per verificare quante attività sono presenti in un certo periodo. Function VerificaAttivitàDB(ByVal Inizio As Date, ByVal Fine As Date) As Integer Dichiarazione variabili. Dim sqlCon As SqlConnection Dim command As SqlCommand Dim adapter As New SqlDataAdapter Dim InizioData As String = Inizio.ToString("s") Dim FineData As String = Fine.ToString("s") Connessione con il database. sqlCon = New SqlConnection(My.Settings.connetionString) Try sqlCon.Open() command = New SqlCommand 33
  37. 37. 6 - Implementazione Richiamo della Stored Procedure "TotaleAttivitàPeriodo", con relativi parametri. command.CommandText = "TotaleAttivitàPeriodo" command.CommandType = CommandType.StoredProcedure command.Connection = sqlCon command.Parameters.AddWithValue("@Nome_utente", Environment.UserName) command.Parameters.AddWithValue("@Dominio", Environment.UserDomainName) command.Parameters.AddWithValue("@Inizio", InizioData) command.Parameters.AddWithValue("@Fine", FineData) Return command.ExecuteScalar Catch ex As Exception In caso di errori, si ritorna il valore -1. Return -1 End Try End FunctionImpostazioni.vbQuesto form contiene una serie di funzioni utili per cambiare le impostazioni dell’add-in. Le funzionicontenute in questo modulo sono le seguenti: Private Sub cmdSeleziona_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSeleziona.Click Funzione eseguita al click dellutente sul pulsante di selezione del file: apre l’interfaccia per selezionare il percorso di salvataggio del file Excel. Private Sub impostazioni_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Funzione eseguita allapertura del form: inizializza i valori dei componenti contenuti nel form. Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click Pulsante di chiusura del form. Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click Funzione di salvataggio delle modifiche dellutente: salva le modifiche dei dati all’interno del database. Private Sub NumericUpDownN_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDownN.ValueChanged Funzione richiamata alla modifica del valore del controllo "NumericUpDown N": richiama la finzione calcolaPeriodo per calcolare e visualizzare il periodo di salvataggio che si andrà a considerare. Private Sub calcolaPeriodo() Funzione che calcola il periodo considerato relativamente ai valori dei "NumericUpDown N"Anagrafica.vbQuesto form contiene una serie di funzioni utili per la modifica dei dati del dipendente. Le funzionicontenute in questo modulo sono le seguenti: Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click 34
  38. 38. 6 - Implementazione Pulsante di chiusura del form. Private Sub anagrafica_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Azioni da eseguire al caricamento del form: inizializza i valori dei componenti contenuti nel form. Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click Funzione di salvataggio delle modifiche dei dati dellutente.Esportazione.vbQuesto form contiene una serie di funzioni utili per l’esportazione dei dati nel file Excel. Le funzionicontenute in questo modulo sono le seguenti: Private Sub cmdChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChiudi.Click Pulsante di chiusura del form. Private Sub esportazione_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Azioni da eseguire al caricamento del form: inizializza i valori dei componenti contenuti nel form. Private Sub cmdExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExcel.Click Pulsante di esportazione del foglio Excel. Tramite questo pulsante verranno richiamate le funzioni per creare il file Excel. Public Function NuovoNome(ByVal wb As Excel.Workbook, ByVal nome As String, ByVal num As Integer) As String Funzione che restituisce il primo nome utile nel formato "Nome (N)" con N che parte da num. Public Function VerificaFoglio(ByVal wb As Excel.Workbook, ByVal nome As String) As Boolean Funzione che verifica lesistenza di un foglio allinterno di un WorkBook. Public Sub SistemaNome(ByVal ws As Excel.Worksheet) Funzione che recupera Nome e Cognome dellutente, e li copia nel foglio Excel. Public Sub SistemaGiorni(ByVal ws As Excel.Worksheet, ByVal varData As Date) Funzione che imposta lintestazione e il numero dei giorni in base al mese passato per parametro. Public Sub CreaProgetti(ByVal ws As Excel.Worksheet, ByVal dataStart As Date, ByVal dataStop As Date, ByVal myDate As Date) Funzione che crea il foglio di lavoro in base ai vari progetti. Sub InserisciOreProgetto(ByVal WS As Excel.Worksheet, ByVal NRiga As Integer, ByVal NomeProgetto As String, ByVal myStart As Date, ByVal myEnd As Date, ByVal myDate As Date) Funzione che calcola e inserisce le ore relative ad un determinato progetto. 35
  39. 39. 6 - ImplementazioneFunction ValoreGiorno(ByVal dataInput As Date) As IntegerFunzione che restituisce il valore del numero del giorno di una certa data.Sub formattaRigaTitoli(ByVal ws As Excel.Worksheet, ByRef numRiga As Integer, ByRef col As Integer)Funzione che imposta le formattazioni delle celle per la riga dei TitoliSub formattaRigaProgetti(ByVal ws As Excel.Worksheet, ByRef numRiga As Integer, ByRef col As Integer)Funzione che imposta le formattazioni delle celle per la riga dei ProgettiSub formattaRigaTotali(ByVal ws As Excel.Worksheet, ByRef numRiga As Integer, ByRef col As Integer, ByValnumRigaInizio As Integer, ByVal str As String)Funzione che imposta le formattazioni delle celle per la riga dei TotaliSub formattaRigaTotali2(ByVal ws As Excel.Worksheet, ByVal numRiga As Integer, ByRef arr1 As ArrayList,ByVal arr2 As ArrayList)Funzione che imposta le formattazioni delle celle per la riga dei Totali "Finali"Private Sub DateTimePickerN_MouseDown(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles DateTimePickerN.MouseDownFunzione eseguita allevento "MouseDown" sul selettore N della data.Private Sub ComboBoxN_MouseDown(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles ComboBoxN.MouseDownFunzione eseguita allevento "MouseDown" sulla combobox NPrivate Sub chkN_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) HandleschkN.CheckedChangedAssegnazione del "valoreRadio" in base alla selezione dellutente sulla CheckBox N.Private Sub DateTimePickerN_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles DateTimePickerN.ValueChangedFunzione eseguita alla modifica del valore del DateTimePicker N 36
  40. 40. 7 - Conclusioni7.1 - Risultati ottenutiI risultati ottenuti rispettano i vincoli di progetto discussi in fase di analisi. L’applicativo sviluppato permettela gestione dei timesheets dei dipendenti dell’azienda grazie all’integrazione di nuove funzionalità adOutlook 2010. Queste funzionalità sono state implementate con l’aggiunta della scheda “Time Sheet” nellabarra multifunzione di Outlook e con la personalizzazione del menù contestuale presente nel calendario“Time Sheet”. L’applicativo attualmente è in fase di test ed entrerà in produzione se la fase di test avràesito positivo.7.2 - Lavoro svoltoQui di seguito sono riportati alcuni indici atti a quantificare il lavoro svolto:Codice vb: Classi: 7 Metodi: 64 Righe di codice: 1780Database: Tabelle: 5 Stored Procedure: 97.3 - Sviluppi futuriIl progetto “Gestione Time Sheet” in futuro potrà essere sviluppato ulteriormente grazie alla creazione diapplicativi per gli smartphone: studiando opportunamente un meccanismo di sincronizzazione trasmartphone e computer dell’azienda, la gestione dei timesheets potrà essere fatta anche in mobilità, senzala necessità di dover essere all’interno della rete aziendale per poter utilizzare il sistema. 37
  41. 41. 8 - BibliografiaRiferimenti web http://it.wikipedia.org http://msdn.microsoft.com/it-it/library http://database.html.it/guide/lezione/3388/introduzione-a-sql-server/ http://www.quackit.com/sql_server/sql_server_2008/tutorial/ http://vb.net-informations.com/ 38

×