SlideShare a Scribd company logo
1 of 43
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 2010




RELATORE                                                               LAUREANDO
Prof. Maurizio Fermeglia                                               Tonon Saverio




                                 Anno Accademico 2009/2010
Indice



1 - 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 .............................................................................................................. 3



2 - Analisi
  2.1 - Raccolta informazioni e definizione dei requisiti .................................................................................. 4
  2.2 - Interfaccia utente di Outlook 2010 ....................................................................................................... 4



3 - 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
4 - Progettazione dell’applicativo
  4.1 - Use case diagramm ............................................................................................................................. 15
  4.2 - Activity diagramm ............................................................................................................................... 16
  4.3 - Class diagramm.................................................................................................................................... 20



5 - 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.................................................................................................................. 26



6 - Implementazione
  ThisAddIn.vb ................................................................................................................................................ 27
  Tools.vb ....................................................................................................................................................... 28
  Tools.xml...................................................................................................................................................... 30
  ModuloGestioneTimeSheet.vb .................................................................................................................... 31
  Impostazioni.vb ........................................................................................................................................... 34
  Anagrafica.vb ............................................................................................................................................... 34
  Esportazione.vb ........................................................................................................................................... 35



7 - Conclusioni
  7.1 - Risultati ottenuti .................................................................................................................................. 37
  7.2 - Lavoro svolto ....................................................................................................................................... 37
  7.3 - Sviluppi futuri ...................................................................................................................................... 37



8 - Bibliografia
  Riferimenti web ........................................................................................................................................... 38




                                                                                ii
1 - Introduzione

1.1 - Obiettivo della tesi
L’obiettivo che ci si è posti con questa tesi è la progettazione e lo sviluppo di un add-in di Outlook che
permetta la gestione dei timesheets dei dipendenti all’interno di un’Azienda. Più precisamente, si vuole che
l’utente abbia la possibilità di creare direttamente da Outlook i suoi timesheets, esportando i dati creati in
Outlook sia su dei fogli di lavoro Excel che su un database condiviso nella rete aziendale.




1.2 - Risultato della tesi
Il software creato, “Gestione Time Sheet”, rispetta i vincoli di progetto ed è utilizzabile dopo una semplice
installazione e configurazione. Per i requisiti di installazione, si rimanda al capitolo 5.5.




                              Figura 1 - Screenshot del programma "Gestione Time Sheet".




                                                          1
1 - Introduzione


1.3 - Stato dell’arte
Al momento esistono diversi applicativi1 per la gestione dei timesheets, simili per funzionalità ma che
utilizzano 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 dover
installare alcun cd.




1.4 - Motivazioni
Un timesheet è un metodo che viene utilizzato per tenere traccia delle quantità di tempo che un lavoratore
dedica a svolgere delle determinate mansioni. In origine questo metodo veniva utilizzato dal datore di
lavoro per determinare il libro paga dei dipendenti: successivamente, il timesheet è diventato utile anche
per la fatturazione al cliente, per il calcolo dei costi e della loro stima, il loro monitoraggio e la loro
gestione2.

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 la
pianificazione di appuntamenti, per la gestione del proprio programma di lavoro: per questo motivo, è

1
    Ad esempio “Replicon - Web TimeSheet” - http://www.replicon.com
2
    Per approfondimenti http://en.wikipedia.org/wiki/Timesheet

                                                            2
1 - Introduzione


stato richiesto di creare un add-in che, integrandosi nell’applicazione, potesse permettere la gestione dei
timesheets 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 un
nuovo sistema, ma utilizzeranno un software che già conoscono ed usano, con il conseguente vantaggio di
una riduzione dei tempi nella creazione dei loro timesheets.




1.5 - Vincoli di progetto
Sono 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
2 - Analisi
2.1 - Raccolta informazioni e definizione dei requisiti
Il fine di questo progetto è la realizzazione di un applicativo integrato in Outlook 2010 per la gestione dei
timesheets dei dipendenti di un’azienda. L’azienda che verrà considerata ha come scopo la realizzazione di
un certo numero di progetti. Ogni progetto, per poter essere sviluppato e portato a termine, richiede di
essere 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 ore
che 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 i
dipendenti che vi hanno partecipato. Per questo motivo si rende necessaria la memorizzazione dei dati
inseriti 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 verranno
caricate 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 saranno
sempre le stesse che saranno presenti all’interno del database.




2.2 - Interfaccia utente di Outlook 2010
In Outlook 2010, l'interfaccia utente è interamente personalizzabile, incluso la barra multifunzione, la barra
di accesso rapido e i menu di scelta rapida incorporati. Utilizzando del codice basato su XML, è possibile
effettuare tale personalizzazione tramite la creazione di componenti aggiuntivi mediante Microsoft Visual
Studio 2010.

La parte dell’interfaccia utente di Outlook che sarà personalizzata, riguarderà l’aggiunta di una scheda nella
barra multifunzione denominata “Time Sheet” e la modifica del menù contestuale al click dell’utente con il
tasto destro del mouse sul calendario “Time Sheet”. La scheda che sarà aggiunta conterrà dei pulsanti che
permetteranno la gestione del timesheet dell’utente (salvataggio dei dati nel database, creazione del file
Excel, menù impostazioni, ecc.), mentre il menù contestuale al click dell’utente con il tasto destro del
mouse nel calendario “Time Sheet” sarà integrato con un nuovo pulsante “Progetti”, che conterrà l’elenco
di tutti i progetti che sono stati assegnati all’utente.


                                                           4
3 - Progettazione della base di dati
3.1 - Requisiti
In questo capitolo verrà introdotta ed analizzata la struttura del database nella quale verranno poi
memorizzati i dati relativi al Time Sheet di ogni dipendente. Esso dovrà prevedere delle tabelle per la
memorizzazione dei progetti e delle attività annesse a tali progetti, oltre alla tabella per la memorizzazione
e 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 determinato
progetto che gli è stato assegnato: in Outlook una “attività” corrisponderà ad un appuntamento del
calendario.

Il database verrà concepito per essere utilizzato all’interno di una rete aziendale: ogni utente avrà delle
proprie credenziali di accesso per poter accedere ai computer dell’azienda e verranno utilizzati i dati relativi
a 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 poter
separare 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 sua
struttura.




3.2 - Rielaborazione delle frasi più significative
Frasi di carattere generale. Si vuole realizzare un database che permetta la memorizzazione dei dati
inerenti al Time Sheet dei vari dipendenti.

Frasi relative alle Categorie. Una categoria è una classe a cui apparterranno uno o più progetti. Per ogni
categoria 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 di
inserimento, data di inizio progetto, data di fine progetto, stato del progetto, data ultima modifica, note,
codice progetto.

                                                        5
3 - Progettazione della base di dati


Frasi relative ai Dipendenti. I dati dei dipendenti sono memorizzati all’interno del database e potranno
essere visualizzati e modificati dall’utente tramite un’apposita interfaccia che sarà aggiunta in Outlook. Per
ogni 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 ad
un 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 una
attività 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              Collegamenti
Categoria              Rappresenta la tipologia di un            Classe               Progetto
                       progetto.
Progetto               Lavoro che deve essere svolto.                                 Categoria,Attività,
                                                                                      Dipendente
Attività               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
3 - Progettazione della base di dati


3.5 - Progettazione concettuale
Per realizzare lo schema E/R viene utilizzata una strategia di tipo misto; si parte individuando i concetti
principali 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 Relazioni
Le entità sono gli oggetti principali del data base. Un'entità rappresenta un gruppo omogeneo
d'informazioni. Nel seguente schema E-R sono rappresentate le entità che sono state individuate e le
relazioni 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
3 - Progettazione della base di dati


Analisi delle entità
                                          CATEGORIA
IDCategoria            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.



                                          PROGETTO
IDProgetto             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.



                                          DIPENDENTE
Nome 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
3 - Progettazione della base di dati


Residenza                      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à
                                                APPARTENENZA
Collega 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.



                                                ASSEGNAZIONE
Collega 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
3 - Progettazione della base di dati


Data ultima modifica             Data dell’ultima modifica dell’assegnazione.
Note                             Eventuali dettagli aggiuntivi riguardanti una certa assegnazione.




3.6 - Progettazione logica
Analizzando il diagramma E/R si può notare che, la relazione ternaria “Assegnazione” può essere
scomposta: 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ù progetti
contemporaneamente: la relazione tra l’entità Progetto e l’entità Dipendente è quindi del tipo molti a
molti. Allo scopo di semplificare la progettazione del database relazionale, una relazione M:N può essere
convertita in due relazioni 1:N tramite l’utilizzo di un’entità associativa: l’utilizzo di tale entità permette di
avere una visione più completa delle tabelle che comporranno il database.




    Progetto     N       Assegnazione     M       Dipendente




   Progetto          1       Richiesta        N     Assegnazione      N         Ricezione    1       Dipendente




Così facendo, i dati utili in merito all’assegnazione di un determinato progetto ad un dipendente, si trovano
nell’entità associativa “Assegnazione”. L’amministratore del database, quando vorrà abilitare un
dipendente a lavorare ad un certo progetto, non farà altro che inserire un nuovo record nella tabella
assegnazione 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 progetto
che gli è stato assegnato. Un dipendente lavorerà solamente ai progetti che gli sono stati assegnati (dato
che gli altri progetti non gli interessano) e quindi un’Attività riguarderà una certa Assegnazione: possono
esserci più Attività differenti relative ad una determinata Assegnazione. Il diagramma E/R diventerà il
seguente:


                                                         10
3 - Progettazione della base di dati




   Progetto       1        Richiesta        N     Assegnazione      N         Ricezione   1       Dipendente



                                                         1



                                                    Relazione



                                                         N



                                                      Attività




Attributi Multipli & Composti
Dall’analisi delle entità che è stata fatta in “Progettazione Concettuale”, relativamente all’entità
“Dipendente”, sono stati evidenziati un attributo composto e due attributi multivalore. L’attributo
composto relativo alla residenza del dipendente viene suddiviso in 4 attributi elementari “Indirizzo”,
“Città”, “Provincia”, “CAP”. Gli attributi multivalore “Telefono” e “Cellulare” saranno trattati come degli
attributi elementari per semplificare poi la gestione del database, perché rappresentano dei dati non
essenziali 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
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                                Dipendente
PK    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
3 - Progettazione della base di dati


3.7 - Stored Procedure
Una stored procedure è un programma generalmente scritto in SQL, mantenuto nel database stesso. Questi
programmi permettono la definizione di parametri in ingresso e in uscita, la definizione di variabili, come
anche la selezione di dati e la definizione di cicli3.

Elenco delle stored procedure:

             Nome                                 Parametri                                 Descrizione
AggiornaDatiUtente              @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 datetime
CopiaAttività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
3 - Progettazione della base di dati


                        @IDProgetto int
ElencoProgetti          @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 datetime
VerificaUtente          @NomeUtente nvarchar(50),                      Verifica l’esistenza di un
                        @Dominio nvarchar(50)                          dipendente.




                                                14
4 - Progettazione dell’applicativo

In questo capitolo si procede alla progettazione dell’applicativo mediante gli strumenti forniti dal linguaggio
UML. Creato con l’intento di unificare in un unico standard le metodologie per il disegno nell’ambito della
progettazione di sistemi software, l’UML (Unified Modeling Language) stabilisce un insieme di notazioni e
simboli, una collezione di diagrammi composti da elementi grafici e testuali che consentono di descrivere il
sistema a più livelli d’astrazione.




4.1 - Use case diagram
Lo Use case diagram è lo strumento utilizzato per la descrizione delle funzionalità offerte dal software dal
punto 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
4 - Progettazione dell’applicativo




L’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 le
impostazioni dell’applicazione Time Sheet. Tramite il click con il tasto destro del mouse sulla vista del
calendario “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 diagram
L’Activity diagram descrive i processi alla base di una data funzionalità del software. L’algoritmo pone in
primo piano le singole attività evidenziando i sistemi responsabili che intervengono nel corso
dell’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 all'utente



                   Creazione file XML locale con lista progetti




               Comunicazione all'utente dell'esito dell'operazione




                                                                  16
4 - Progettazione dell’applicativo


Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente
aggiorna 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 lista
dei progetti che sono stati assegnati al dipendente. La scelta di creare un file XML locale è dovuta al fatto
che, in mancanza di connessione con il database, l’utente sarebbe impossibilitato nella creazione di nuove
attività 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 dell'attività 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 crea
una nuova attività (intervallo di tempo dedicato a svolgere un lavoro) nel calendario “Time Sheet”. In
dettaglio:


                                                             17
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 all'utente dell'esito dell'operazione




Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente salva
le attività che ha creato in Outlook all’interno del database. La cancellazione delle attività precedenti e
l’inserimento delle nuove attività verranno effettuate considerando un certo intervallo temporale. In
dettaglio:

    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
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 all'utente dell'esito dell'operazione




Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente
esporta 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
4 - Progettazione dell’applicativo


4.3 - Class diagram
Utilizzando le strutture tipiche della programmazione ad oggetti, classi metodi ed attributi, il Class diagram
ritrae il sistema sotto l’aspetto delle entità che ne fanno parte.




                                ThisAddIn


                                  Tools



                       ModuloGestioneTimeSheet                              Esportazione



                                                                              Anagrafica



                                                                             Impostazioni




Il 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
5 - Interfaccia

5.1 - Introduzione
In 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-in

Installazione
L’applicativo che è stato creato, può essere installato grazie ad un semplice setup che permette, in modo
del tutto automatico, l’aggiunta dell’add-in ad Outlook 2010. Aprendo il file di setup apparirà la seguente
schermata:




                               Figura 3 - Installazione dell'add-in "Gestione Time Sheet".




Dopo aver terminato l’installazione, aprendo Outlook l’add-in si avvierà automaticamente.



                                                          21
5 - Interfaccia


Configurazione
Se si ha la necessità di cambiare la stringa di connessione al database, all’interno della cartella di
installazione del programma, sarà presente un file “configurazione.str” che conterrà la stringa di
connessione utilizzata dal programma “Gestione Time Sheet” per il collegamento al database: modificando
opportunamente tale stringa, si potrà cambiare il riferimento al database che verrà utilizzato
dall’applicativo.




5.3 - Interfaccia dell’applicativo
L’applicativo creato, viene eseguito con l’avvio di Outlook 2010. Esso si presenta con una scheda aggiuntiva
denominata “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à introdotte
dall’applicativo “Gestione Time Sheet”:




                                  Figura 5 - Contenuto della scheda “Time Sheet”.


                                                         22
5 - Interfaccia




Il pulsante “Informazioni sistema” permette di visualizzare le informazioni relative alla macchina
che sta eseguendo il programma.
Il pulsante “Aggiorna Progetti” permette di aggiornare la lista dei progetti che sono stati assegnati
al dipendente che sta utilizzando il programma.
Il pulsante “Salva attività Database” permette di copiare tutte le attività presenti all’interno del
calendario “Time Sheet” nel database.
Il pulsante “Esporta attività Excel” apre un form che permette di impostare i parametri per
l’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 dipendente
che sta utilizzando il programma.




                                                   23
5 - Interfaccia




                         Figura 7 - Form di modifica dati del dipendente.

Il pulsante “Impostazioni Time Sheet” apre un form che permette di modificare le impostazioni
dell’add-in.




                  Figura 8 - Form di modifica delle impostazioni del programma.


                                               24
5 - Interfaccia


Passando nella sezione “Calendario” di Outlook si può notare che l’add-in, con il primo avvio, crea un
calendario “parallelo” a quello standard denominato “Time Sheet”: cliccando con il tasto destro sulla vista
del 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
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’installazione
L’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.aspx
5
  Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=0a391abd-25c1-
4fc0-919f-b21f31ab88b7
6
  Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=889482FC-5F56-
4A38-B838-DE776FD4138C

                                                        26
6 - Implementazione

In questo capitolo viene descritta l’implementazione dell’applicativo. Qui di seguito vengono presentate nel
dettaglio le parti salienti dell’applicativo; verranno descritte le funzioni contenute in ognuna delle classi che
compongono il programma e verranno analizzate le funzioni di maggior interesse per la creazione/gestione
del “Time Sheet”.




ThisAddIn.vb
Questa 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 di
connessione 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 richiamata
la funzione “CreateRibbonExtensibilityObject” che permette di estendere l’interfaccia utente di Outlook.
Alla chiusura di Outlook verranno richiamate le istruzioni contenute nella funzione Application_Quit(), che
permetteranno di salvare le attività sul database.

Codice eseguito all’avvio dell’add-in
Private 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
6 - Implementazione


di default.", vbCritical)
            Case "Non Esiste"
                MsgBox("Non è stato trovato il file relativo alla stringa di connessione: Verrà utilizzata
la 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 l'accesso al database TimeSheet. Verifica di avere i
permessi necessari per accedervi.", vbCritical)
        End If

    End Sub



Codice utilizzato per estendere l’interfaccia utente.
    Protected Overrides Function CreateRibbonExtensibilityObject() As
Microsoft.Office.Core.IRibbonExtensibility
        Return New Tools()
    End Function




Tools.vb
Questa classe permette l’estensione dell’interfaccia utente di Outlook. Si analizzano qui di seguito i metodi
callback 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
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 dell'utente.
        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 classe
estende l’interfaccia di Outlook aggiungendo una nuova scheda nella barra multifunzione e personalizzando
il 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("<menu
xmlns=""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
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 Function



Codice utilizzato per inserire un nuovo appuntamento, in base alla selezione dell’utente.
' Funzione che crea un nuovo appuntamento, in base alla selezione dell'utente.
    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 Sub




Tools.xml
Il file Tools.xml contiene il codice per la personalizzazione dell’interfaccia utente di Outlook. Nella prima
parte viene aggiunta la scheda “Time Sheet” all’interno della barra multifunzione mentre nella seconda
parte, viene aggiunto nel menù contestuale del calendario “Time Sheet” l’elemento “Progetti”, che
conterrà l’elenco dei progetti che sono stati assegnati al dipendente.


                                                       30
6 - Implementazione


Codice 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.vb
Questo modulo contiene una serie di funzioni utili per la gestione del timesheet. Le funzioni contenute in
questo 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 l'esistenza di un file, dato il percorso come parametro.
        Public Function FileAccessibile(ByVal NomeFile As String) As Integer
        Funzione che verifica l'esistenza 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 dell'esistenza 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
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 l'oggetto relativo alla cartella specificata.
       Public Function FindAppts(ByVal myStartDate As Date, ByVal myEndDate As Date) As Outlook.Items
       Funzione per la ricerca di Appuntamenti all'interno 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 all'interno 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 all'interno 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 all'interno 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 all'interno 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 dall'utente.
       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 dell'utente.

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
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 l'utente.
            MsgBox("Error: " + ex.Message, MsgBoxStyle.Critical)
            Return False
        End Try

    End Function



Codice 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
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 Function




Impostazioni.vb
Questo form contiene una serie di funzioni utili per cambiare le impostazioni dell’add-in. Le funzioni
contenute 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 dell'utente 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 all'apertura 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 dell'utente: 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.vb
Questo form contiene una serie di funzioni utili per la modifica dei dati del dipendente. Le funzioni
contenute in questo modulo sono le seguenti:

       Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
       btnChiudi.Click

                                                         34
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 dell'utente.




Esportazione.vb
Questo form contiene una serie di funzioni utili per l’esportazione dei dati nel file Excel. Le funzioni
contenute 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 l'esistenza di un foglio all'interno di un WorkBook.
       Public Sub SistemaNome(ByVal ws As Excel.Worksheet)
       Funzione che recupera Nome e Cognome dell'utente, e li copia nel foglio Excel.
       Public Sub SistemaGiorni(ByVal ws As Excel.Worksheet, ByVal varData As Date)
       Funzione che imposta l'intestazione 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
6 - Implementazione


Function ValoreGiorno(ByVal dataInput As Date) As Integer
Funzione 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 Titoli
Sub 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 Progetti
Sub formattaRigaTotali(ByVal ws As Excel.Worksheet, ByRef numRiga As Integer, ByRef col As Integer, ByVal
numRigaInizio As Integer, ByVal str As String)
Funzione che imposta le formattazioni delle celle per la riga dei Totali
Sub 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 As
System.Windows.Forms.MouseEventArgs) Handles DateTimePickerN.MouseDown
Funzione eseguita all'evento "MouseDown" sul selettore N della data.
Private Sub ComboBoxN_MouseDown(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles ComboBoxN.MouseDown
Funzione eseguita all'evento "MouseDown" sulla combobox N
Private Sub chkN_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
chkN.CheckedChanged
Assegnazione del "valoreRadio" in base alla selezione dell'utente sulla CheckBox N.
Private Sub DateTimePickerN_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles DateTimePickerN.ValueChanged
Funzione eseguita alla modifica del valore del DateTimePicker N




                                                   36
7 - Conclusioni

7.1 - Risultati ottenuti
I risultati ottenuti rispettano i vincoli di progetto discussi in fase di analisi. L’applicativo sviluppato permette
la gestione dei timesheets dei dipendenti dell’azienda grazie all’integrazione di nuove funzionalità ad
Outlook 2010. Queste funzionalità sono state implementate con l’aggiunta della scheda “Time Sheet” nella
barra 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 svolto
Qui di seguito sono riportati alcuni indici atti a quantificare il lavoro svolto:

Codice vb:

        Classi: 7
        Metodi: 64
        Righe di codice: 1780

Database:

        Tabelle: 5
        Stored Procedure: 9




7.3 - Sviluppi futuri
Il progetto “Gestione Time Sheet” in futuro potrà essere sviluppato ulteriormente grazie alla creazione di
applicativi per gli smartphone: studiando opportunamente un meccanismo di sincronizzazione tra
smartphone e computer dell’azienda, la gestione dei timesheets potrà essere fatta anche in mobilità, senza
la necessità di dover essere all’interno della rete aziendale per poter utilizzare il sistema.




                                                         37
8 - Bibliografia

Riferimenti 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
Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010

More Related Content

What's hot

Italcementi comunita' europea bat x uriserv
Italcementi comunita' europea bat x uriservItalcementi comunita' europea bat x uriserv
Italcementi comunita' europea bat x uriservPino Ciampolillo
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...fcecutti
 
Manuale rwx62
Manuale rwx62Manuale rwx62
Manuale rwx62Rui Silva
 
La riforma del mercato del lavoro in una prospettiva di crescita
La riforma del mercato del lavoro in una prospettiva di crescitaLa riforma del mercato del lavoro in una prospettiva di crescita
La riforma del mercato del lavoro in una prospettiva di crescitaQuotidiano Piemontese
 
Orchestrazione delle risorse umane nel BPM
Orchestrazione delle risorse umane nel BPMOrchestrazione delle risorse umane nel BPM
Orchestrazione delle risorse umane nel BPMMichele Filannino
 
[MWT] Il web e la Pubblica Amministrazione
[MWT] Il web e la Pubblica Amministrazione[MWT] Il web e la Pubblica Amministrazione
[MWT] Il web e la Pubblica AmministrazioneSilvio D'Orazio
 
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3Regole applicative_dm_5_maggio_2011_25_06_2012_rev3
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3energymanager
 
Project planning and implementation according ECSS ST-M-10
Project planning and implementation according ECSS ST-M-10 Project planning and implementation according ECSS ST-M-10
Project planning and implementation according ECSS ST-M-10 Mario Gentili
 

What's hot (12)

Italcementi comunita' europea bat x uriserv
Italcementi comunita' europea bat x uriservItalcementi comunita' europea bat x uriserv
Italcementi comunita' europea bat x uriserv
 
Tesi peiretti
Tesi peirettiTesi peiretti
Tesi peiretti
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
 
Manuale rwx62
Manuale rwx62Manuale rwx62
Manuale rwx62
 
La riforma del mercato del lavoro in una prospettiva di crescita
La riforma del mercato del lavoro in una prospettiva di crescitaLa riforma del mercato del lavoro in una prospettiva di crescita
La riforma del mercato del lavoro in una prospettiva di crescita
 
Riforma mercato lavoro_230312
Riforma mercato lavoro_230312Riforma mercato lavoro_230312
Riforma mercato lavoro_230312
 
Orchestrazione delle risorse umane nel BPM
Orchestrazione delle risorse umane nel BPMOrchestrazione delle risorse umane nel BPM
Orchestrazione delle risorse umane nel BPM
 
Prossimi Step PON Ambienti Digitali
Prossimi Step PON Ambienti DigitaliProssimi Step PON Ambienti Digitali
Prossimi Step PON Ambienti Digitali
 
[MWT] Il web e la Pubblica Amministrazione
[MWT] Il web e la Pubblica Amministrazione[MWT] Il web e la Pubblica Amministrazione
[MWT] Il web e la Pubblica Amministrazione
 
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3Regole applicative_dm_5_maggio_2011_25_06_2012_rev3
Regole applicative_dm_5_maggio_2011_25_06_2012_rev3
 
Manuale sicurezza lavoro
Manuale sicurezza lavoroManuale sicurezza lavoro
Manuale sicurezza lavoro
 
Project planning and implementation according ECSS ST-M-10
Project planning and implementation according ECSS ST-M-10 Project planning and implementation according ECSS ST-M-10
Project planning and implementation according ECSS ST-M-10
 

Viewers also liked

Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...
Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...
Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...Saverio Tonon
 
Tesi laurea triennale Ingegneria Informatica - Francesco Bianchi
Tesi laurea triennale Ingegneria Informatica - Francesco BianchiTesi laurea triennale Ingegneria Informatica - Francesco Bianchi
Tesi laurea triennale Ingegneria Informatica - Francesco BianchiFrancesco Bianchi
 
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...Progettazione e sviluppo di un applicativo web e della sua base di dati per l...
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...dudinestefano
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroQuickBase, Inc.
 
Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Michele Maffucci
 

Viewers also liked (6)

Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...
Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...
Slide Realizzazione di un applicativo per la gestione di fogli di lavoro inte...
 
Tesi laurea triennale Ingegneria Informatica - Francesco Bianchi
Tesi laurea triennale Ingegneria Informatica - Francesco BianchiTesi laurea triennale Ingegneria Informatica - Francesco Bianchi
Tesi laurea triennale Ingegneria Informatica - Francesco Bianchi
 
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...Progettazione e sviluppo di un applicativo web e della sua base di dati per l...
Progettazione e sviluppo di un applicativo web e della sua base di dati per l...
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
 
Tesi Triennale Slide
Tesi Triennale SlideTesi Triennale Slide
Tesi Triennale Slide
 
Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1
 

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

Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...daniel_zotti
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Luca Bressan
 
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...artemedea
 
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...ozacchig
 
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Alberto Scotto
 
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Raffaele Bernardi
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...ciakana
 
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studio
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studioLa Reingegnerizzazione dei processi nel settore logistico: Un caso di studio
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studioNicola Cerami
 
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro AndreosèTesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosèguesta10af3
 
Un sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNUn sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNAlessandro Segatto
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Myrteza Kertusha
 
Piano triennale AREA Science Park 2011 e Progetti Premiali
Piano triennale AREA Science Park 2011 e  Progetti PremialiPiano triennale AREA Science Park 2011 e  Progetti Premiali
Piano triennale AREA Science Park 2011 e Progetti PremialiAREA Science Park
 
Tesi Case Roberto
Tesi Case RobertoTesi Case Roberto
Tesi Case Robertoguestffdfbc
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Matteo Miotto
 
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Davide Ciambelli
 

Similar to Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010 (20)

Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
 
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
Studio e realizzazione di un sw per la gestione dei profili e delle versioni ...
 
Tesi Tamiazzo09
Tesi Tamiazzo09Tesi Tamiazzo09
Tesi Tamiazzo09
 
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...
Porting evolutivo dell'applicazione per la gestione dei dispositivi del Comun...
 
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
Cloud Computing: Una Soluzione "Private" Basata Su Software IBM (Tesi di laur...
 
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
 
repairpdf_Oy51nCFX
repairpdf_Oy51nCFXrepairpdf_Oy51nCFX
repairpdf_Oy51nCFX
 
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studio
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studioLa Reingegnerizzazione dei processi nel settore logistico: Un caso di studio
La Reingegnerizzazione dei processi nel settore logistico: Un caso di studio
 
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro AndreosèTesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
Un sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMNUn sistema di persistenza per motori di workflow business-oriented BPMN
Un sistema di persistenza per motori di workflow business-oriented BPMN
 
Manuale sicurnet duvri
Manuale sicurnet duvriManuale sicurnet duvri
Manuale sicurnet duvri
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
 
Piano triennale AREA Science Park 2011 e Progetti Premiali
Piano triennale AREA Science Park 2011 e  Progetti PremialiPiano triennale AREA Science Park 2011 e  Progetti Premiali
Piano triennale AREA Science Park 2011 e Progetti Premiali
 
Compas Project
Compas ProjectCompas Project
Compas Project
 
Tesi Case Roberto
Tesi Case RobertoTesi Case Roberto
Tesi Case Roberto
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...
 
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
 

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

  • 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 2010 RELATORE LAUREANDO Prof. Maurizio Fermeglia Tonon Saverio Anno Accademico 2009/2010
  • 2.
  • 3. Indice 1 - 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 .............................................................................................................. 3 2 - Analisi 2.1 - Raccolta informazioni e definizione dei requisiti .................................................................................. 4 2.2 - Interfaccia utente di Outlook 2010 ....................................................................................................... 4 3 - 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
  • 4. 4 - Progettazione dell’applicativo 4.1 - Use case diagramm ............................................................................................................................. 15 4.2 - Activity diagramm ............................................................................................................................... 16 4.3 - Class diagramm.................................................................................................................................... 20 5 - 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.................................................................................................................. 26 6 - Implementazione ThisAddIn.vb ................................................................................................................................................ 27 Tools.vb ....................................................................................................................................................... 28 Tools.xml...................................................................................................................................................... 30 ModuloGestioneTimeSheet.vb .................................................................................................................... 31 Impostazioni.vb ........................................................................................................................................... 34 Anagrafica.vb ............................................................................................................................................... 34 Esportazione.vb ........................................................................................................................................... 35 7 - Conclusioni 7.1 - Risultati ottenuti .................................................................................................................................. 37 7.2 - Lavoro svolto ....................................................................................................................................... 37 7.3 - Sviluppi futuri ...................................................................................................................................... 37 8 - Bibliografia Riferimenti web ........................................................................................................................................... 38 ii
  • 5. 1 - Introduzione 1.1 - Obiettivo della tesi L’obiettivo che ci si è posti con questa tesi è la progettazione e lo sviluppo di un add-in di Outlook che permetta la gestione dei timesheets dei dipendenti all’interno di un’Azienda. Più precisamente, si vuole che l’utente abbia la possibilità di creare direttamente da Outlook i suoi timesheets, esportando i dati creati in Outlook sia su dei fogli di lavoro Excel che su un database condiviso nella rete aziendale. 1.2 - Risultato della tesi Il software creato, “Gestione Time Sheet”, rispetta i vincoli di progetto ed è utilizzabile dopo una semplice installazione e configurazione. Per i requisiti di installazione, si rimanda al capitolo 5.5. Figura 1 - Screenshot del programma "Gestione Time Sheet". 1
  • 6. 1 - Introduzione 1.3 - Stato dell’arte Al momento esistono diversi applicativi1 per la gestione dei timesheets, simili per funzionalità ma che utilizzano 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 dover installare alcun cd. 1.4 - Motivazioni Un timesheet è un metodo che viene utilizzato per tenere traccia delle quantità di tempo che un lavoratore dedica a svolgere delle determinate mansioni. In origine questo metodo veniva utilizzato dal datore di lavoro per determinare il libro paga dei dipendenti: successivamente, il timesheet è diventato utile anche per la fatturazione al cliente, per il calcolo dei costi e della loro stima, il loro monitoraggio e la loro gestione2. 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 la pianificazione di appuntamenti, per la gestione del proprio programma di lavoro: per questo motivo, è 1 Ad esempio “Replicon - Web TimeSheet” - http://www.replicon.com 2 Per approfondimenti http://en.wikipedia.org/wiki/Timesheet 2
  • 7. 1 - Introduzione stato richiesto di creare un add-in che, integrandosi nell’applicazione, potesse permettere la gestione dei timesheets 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 un nuovo sistema, ma utilizzeranno un software che già conoscono ed usano, con il conseguente vantaggio di una riduzione dei tempi nella creazione dei loro timesheets. 1.5 - Vincoli di progetto Sono 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
  • 8. 2 - Analisi 2.1 - Raccolta informazioni e definizione dei requisiti Il fine di questo progetto è la realizzazione di un applicativo integrato in Outlook 2010 per la gestione dei timesheets dei dipendenti di un’azienda. L’azienda che verrà considerata ha come scopo la realizzazione di un certo numero di progetti. Ogni progetto, per poter essere sviluppato e portato a termine, richiede di essere 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 ore che 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 i dipendenti che vi hanno partecipato. Per questo motivo si rende necessaria la memorizzazione dei dati inseriti 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 verranno caricate 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 saranno sempre le stesse che saranno presenti all’interno del database. 2.2 - Interfaccia utente di Outlook 2010 In Outlook 2010, l'interfaccia utente è interamente personalizzabile, incluso la barra multifunzione, la barra di accesso rapido e i menu di scelta rapida incorporati. Utilizzando del codice basato su XML, è possibile effettuare tale personalizzazione tramite la creazione di componenti aggiuntivi mediante Microsoft Visual Studio 2010. La parte dell’interfaccia utente di Outlook che sarà personalizzata, riguarderà l’aggiunta di una scheda nella barra multifunzione denominata “Time Sheet” e la modifica del menù contestuale al click dell’utente con il tasto destro del mouse sul calendario “Time Sheet”. La scheda che sarà aggiunta conterrà dei pulsanti che permetteranno la gestione del timesheet dell’utente (salvataggio dei dati nel database, creazione del file Excel, menù impostazioni, ecc.), mentre il menù contestuale al click dell’utente con il tasto destro del mouse nel calendario “Time Sheet” sarà integrato con un nuovo pulsante “Progetti”, che conterrà l’elenco di tutti i progetti che sono stati assegnati all’utente. 4
  • 9. 3 - Progettazione della base di dati 3.1 - Requisiti In questo capitolo verrà introdotta ed analizzata la struttura del database nella quale verranno poi memorizzati i dati relativi al Time Sheet di ogni dipendente. Esso dovrà prevedere delle tabelle per la memorizzazione dei progetti e delle attività annesse a tali progetti, oltre alla tabella per la memorizzazione e 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 determinato progetto che gli è stato assegnato: in Outlook una “attività” corrisponderà ad un appuntamento del calendario. Il database verrà concepito per essere utilizzato all’interno di una rete aziendale: ogni utente avrà delle proprie credenziali di accesso per poter accedere ai computer dell’azienda e verranno utilizzati i dati relativi a 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 poter separare 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 sua struttura. 3.2 - Rielaborazione delle frasi più significative Frasi di carattere generale. Si vuole realizzare un database che permetta la memorizzazione dei dati inerenti al Time Sheet dei vari dipendenti. Frasi relative alle Categorie. Una categoria è una classe a cui apparterranno uno o più progetti. Per ogni categoria 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 di inserimento, data di inizio progetto, data di fine progetto, stato del progetto, data ultima modifica, note, codice progetto. 5
  • 10. 3 - Progettazione della base di dati Frasi relative ai Dipendenti. I dati dei dipendenti sono memorizzati all’interno del database e potranno essere visualizzati e modificati dall’utente tramite un’apposita interfaccia che sarà aggiunta in Outlook. Per ogni 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 ad un 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 una attività 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 Collegamenti Categoria Rappresenta la tipologia di un Classe Progetto progetto. Progetto Lavoro che deve essere svolto. Categoria,Attività, Dipendente Attività 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
  • 11. 3 - Progettazione della base di dati 3.5 - Progettazione concettuale Per realizzare lo schema E/R viene utilizzata una strategia di tipo misto; si parte individuando i concetti principali 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 Relazioni Le entità sono gli oggetti principali del data base. Un'entità rappresenta un gruppo omogeneo d'informazioni. Nel seguente schema E-R sono rappresentate le entità che sono state individuate e le relazioni 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
  • 12. 3 - Progettazione della base di dati Analisi delle entità CATEGORIA IDCategoria 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. PROGETTO IDProgetto 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. DIPENDENTE Nome 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
  • 13. 3 - Progettazione della base di dati Residenza 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à APPARTENENZA Collega 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. ASSEGNAZIONE Collega 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
  • 14. 3 - Progettazione della base di dati Data ultima modifica Data dell’ultima modifica dell’assegnazione. Note Eventuali dettagli aggiuntivi riguardanti una certa assegnazione. 3.6 - Progettazione logica Analizzando il diagramma E/R si può notare che, la relazione ternaria “Assegnazione” può essere scomposta: 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ù progetti contemporaneamente: la relazione tra l’entità Progetto e l’entità Dipendente è quindi del tipo molti a molti. Allo scopo di semplificare la progettazione del database relazionale, una relazione M:N può essere convertita in due relazioni 1:N tramite l’utilizzo di un’entità associativa: l’utilizzo di tale entità permette di avere una visione più completa delle tabelle che comporranno il database. Progetto N Assegnazione M Dipendente Progetto 1 Richiesta N Assegnazione N Ricezione 1 Dipendente Così facendo, i dati utili in merito all’assegnazione di un determinato progetto ad un dipendente, si trovano nell’entità associativa “Assegnazione”. L’amministratore del database, quando vorrà abilitare un dipendente a lavorare ad un certo progetto, non farà altro che inserire un nuovo record nella tabella assegnazione 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 progetto che gli è stato assegnato. Un dipendente lavorerà solamente ai progetti che gli sono stati assegnati (dato che gli altri progetti non gli interessano) e quindi un’Attività riguarderà una certa Assegnazione: possono esserci più Attività differenti relative ad una determinata Assegnazione. Il diagramma E/R diventerà il seguente: 10
  • 15. 3 - Progettazione della base di dati Progetto 1 Richiesta N Assegnazione N Ricezione 1 Dipendente 1 Relazione N Attività Attributi Multipli & Composti Dall’analisi delle entità che è stata fatta in “Progettazione Concettuale”, relativamente all’entità “Dipendente”, sono stati evidenziati un attributo composto e due attributi multivalore. L’attributo composto relativo alla residenza del dipendente viene suddiviso in 4 attributi elementari “Indirizzo”, “Città”, “Provincia”, “CAP”. Gli attributi multivalore “Telefono” e “Cellulare” saranno trattati come degli attributi elementari per semplificare poi la gestione del database, perché rappresentano dei dati non essenziali 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
  • 16. 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 Dipendente PK 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
  • 17. 3 - Progettazione della base di dati 3.7 - Stored Procedure Una stored procedure è un programma generalmente scritto in SQL, mantenuto nel database stesso. Questi programmi permettono la definizione di parametri in ingresso e in uscita, la definizione di variabili, come anche la selezione di dati e la definizione di cicli3. Elenco delle stored procedure: Nome Parametri Descrizione AggiornaDatiUtente @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 datetime CopiaAttività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
  • 18. 3 - Progettazione della base di dati @IDProgetto int ElencoProgetti @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 datetime VerificaUtente @NomeUtente nvarchar(50), Verifica l’esistenza di un @Dominio nvarchar(50) dipendente. 14
  • 19. 4 - Progettazione dell’applicativo In questo capitolo si procede alla progettazione dell’applicativo mediante gli strumenti forniti dal linguaggio UML. Creato con l’intento di unificare in un unico standard le metodologie per il disegno nell’ambito della progettazione di sistemi software, l’UML (Unified Modeling Language) stabilisce un insieme di notazioni e simboli, una collezione di diagrammi composti da elementi grafici e testuali che consentono di descrivere il sistema a più livelli d’astrazione. 4.1 - Use case diagram Lo Use case diagram è lo strumento utilizzato per la descrizione delle funzionalità offerte dal software dal punto 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
  • 20. 4 - Progettazione dell’applicativo L’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 le impostazioni dell’applicazione Time Sheet. Tramite il click con il tasto destro del mouse sulla vista del calendario “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 diagram L’Activity diagram descrive i processi alla base di una data funzionalità del software. L’algoritmo pone in primo piano le singole attività evidenziando i sistemi responsabili che intervengono nel corso dell’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 all'utente Creazione file XML locale con lista progetti Comunicazione all'utente dell'esito dell'operazione 16
  • 21. 4 - Progettazione dell’applicativo Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente aggiorna 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 lista dei progetti che sono stati assegnati al dipendente. La scelta di creare un file XML locale è dovuta al fatto che, in mancanza di connessione con il database, l’utente sarebbe impossibilitato nella creazione di nuove attività 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 dell'attività 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 crea una nuova attività (intervallo di tempo dedicato a svolgere un lavoro) nel calendario “Time Sheet”. In dettaglio: 17
  • 22. 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 all'utente dell'esito dell'operazione Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente salva le attività che ha creato in Outlook all’interno del database. La cancellazione delle attività precedenti e l’inserimento delle nuove attività verranno effettuate considerando un certo intervallo temporale. In dettaglio: 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
  • 23. 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 all'utente dell'esito dell'operazione Il diagramma precedente rappresenta l’insieme delle operazioni che vengono svolte quando l’utente esporta 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
  • 24. 4 - Progettazione dell’applicativo 4.3 - Class diagram Utilizzando le strutture tipiche della programmazione ad oggetti, classi metodi ed attributi, il Class diagram ritrae il sistema sotto l’aspetto delle entità che ne fanno parte. ThisAddIn Tools ModuloGestioneTimeSheet Esportazione Anagrafica Impostazioni Il 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
  • 25. 5 - Interfaccia 5.1 - Introduzione In 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-in Installazione L’applicativo che è stato creato, può essere installato grazie ad un semplice setup che permette, in modo del tutto automatico, l’aggiunta dell’add-in ad Outlook 2010. Aprendo il file di setup apparirà la seguente schermata: Figura 3 - Installazione dell'add-in "Gestione Time Sheet". Dopo aver terminato l’installazione, aprendo Outlook l’add-in si avvierà automaticamente. 21
  • 26. 5 - Interfaccia Configurazione Se si ha la necessità di cambiare la stringa di connessione al database, all’interno della cartella di installazione del programma, sarà presente un file “configurazione.str” che conterrà la stringa di connessione utilizzata dal programma “Gestione Time Sheet” per il collegamento al database: modificando opportunamente tale stringa, si potrà cambiare il riferimento al database che verrà utilizzato dall’applicativo. 5.3 - Interfaccia dell’applicativo L’applicativo creato, viene eseguito con l’avvio di Outlook 2010. Esso si presenta con una scheda aggiuntiva denominata “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à introdotte dall’applicativo “Gestione Time Sheet”: Figura 5 - Contenuto della scheda “Time Sheet”. 22
  • 27. 5 - Interfaccia Il pulsante “Informazioni sistema” permette di visualizzare le informazioni relative alla macchina che sta eseguendo il programma. Il pulsante “Aggiorna Progetti” permette di aggiornare la lista dei progetti che sono stati assegnati al dipendente che sta utilizzando il programma. Il pulsante “Salva attività Database” permette di copiare tutte le attività presenti all’interno del calendario “Time Sheet” nel database. Il pulsante “Esporta attività Excel” apre un form che permette di impostare i parametri per l’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 dipendente che sta utilizzando il programma. 23
  • 28. 5 - Interfaccia Figura 7 - Form di modifica dati del dipendente. Il pulsante “Impostazioni Time Sheet” apre un form che permette di modificare le impostazioni dell’add-in. Figura 8 - Form di modifica delle impostazioni del programma. 24
  • 29. 5 - Interfaccia Passando nella sezione “Calendario” di Outlook si può notare che l’add-in, con il primo avvio, crea un calendario “parallelo” a quello standard denominato “Time Sheet”: cliccando con il tasto destro sulla vista del 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
  • 30. 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’installazione L’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.aspx 5 Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=0a391abd-25c1- 4fc0-919f-b21f31ab88b7 6 Requisiti di sistema e download: http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=889482FC-5F56- 4A38-B838-DE776FD4138C 26
  • 31. 6 - Implementazione In questo capitolo viene descritta l’implementazione dell’applicativo. Qui di seguito vengono presentate nel dettaglio le parti salienti dell’applicativo; verranno descritte le funzioni contenute in ognuna delle classi che compongono il programma e verranno analizzate le funzioni di maggior interesse per la creazione/gestione del “Time Sheet”. ThisAddIn.vb Questa 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 di connessione 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 richiamata la funzione “CreateRibbonExtensibilityObject” che permette di estendere l’interfaccia utente di Outlook. Alla chiusura di Outlook verranno richiamate le istruzioni contenute nella funzione Application_Quit(), che permetteranno di salvare le attività sul database. Codice eseguito all’avvio dell’add-in Private 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
  • 32. 6 - Implementazione di default.", vbCritical) Case "Non Esiste" MsgBox("Non è stato trovato il file relativo alla stringa di connessione: Verrà utilizzata la 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 l'accesso al database TimeSheet. Verifica di avere i permessi necessari per accedervi.", vbCritical) End If End Sub Codice utilizzato per estendere l’interfaccia utente. Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility Return New Tools() End Function Tools.vb Questa classe permette l’estensione dell’interfaccia utente di Outlook. Si analizzano qui di seguito i metodi callback 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
  • 33. 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 dell'utente. 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 classe estende l’interfaccia di Outlook aggiungendo una nuova scheda nella barra multifunzione e personalizzando il 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("<menu xmlns=""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
  • 34. 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 Function Codice utilizzato per inserire un nuovo appuntamento, in base alla selezione dell’utente. ' Funzione che crea un nuovo appuntamento, in base alla selezione dell'utente. 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 Sub Tools.xml Il file Tools.xml contiene il codice per la personalizzazione dell’interfaccia utente di Outlook. Nella prima parte viene aggiunta la scheda “Time Sheet” all’interno della barra multifunzione mentre nella seconda parte, viene aggiunto nel menù contestuale del calendario “Time Sheet” l’elemento “Progetti”, che conterrà l’elenco dei progetti che sono stati assegnati al dipendente. 30
  • 35. 6 - Implementazione Codice 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.vb Questo modulo contiene una serie di funzioni utili per la gestione del timesheet. Le funzioni contenute in questo 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 l'esistenza di un file, dato il percorso come parametro. Public Function FileAccessibile(ByVal NomeFile As String) As Integer Funzione che verifica l'esistenza 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 dell'esistenza 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
  • 36. 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 l'oggetto relativo alla cartella specificata. Public Function FindAppts(ByVal myStartDate As Date, ByVal myEndDate As Date) As Outlook.Items Funzione per la ricerca di Appuntamenti all'interno 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 all'interno 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 all'interno 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 all'interno 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 all'interno 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 dall'utente. 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 dell'utente. 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
  • 37. 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 l'utente. MsgBox("Error: " + ex.Message, MsgBoxStyle.Critical) Return False End Try End Function Codice 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
  • 38. 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 Function Impostazioni.vb Questo form contiene una serie di funzioni utili per cambiare le impostazioni dell’add-in. Le funzioni contenute 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 dell'utente 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 all'apertura 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 dell'utente: 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.vb Questo form contiene una serie di funzioni utili per la modifica dei dati del dipendente. Le funzioni contenute in questo modulo sono le seguenti: Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click 34
  • 39. 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 dell'utente. Esportazione.vb Questo form contiene una serie di funzioni utili per l’esportazione dei dati nel file Excel. Le funzioni contenute 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 l'esistenza di un foglio all'interno di un WorkBook. Public Sub SistemaNome(ByVal ws As Excel.Worksheet) Funzione che recupera Nome e Cognome dell'utente, e li copia nel foglio Excel. Public Sub SistemaGiorni(ByVal ws As Excel.Worksheet, ByVal varData As Date) Funzione che imposta l'intestazione 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
  • 40. 6 - Implementazione Function ValoreGiorno(ByVal dataInput As Date) As Integer Funzione 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 Titoli Sub 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 Progetti Sub formattaRigaTotali(ByVal ws As Excel.Worksheet, ByRef numRiga As Integer, ByRef col As Integer, ByVal numRigaInizio As Integer, ByVal str As String) Funzione che imposta le formattazioni delle celle per la riga dei Totali Sub 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 As System.Windows.Forms.MouseEventArgs) Handles DateTimePickerN.MouseDown Funzione eseguita all'evento "MouseDown" sul selettore N della data. Private Sub ComboBoxN_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ComboBoxN.MouseDown Funzione eseguita all'evento "MouseDown" sulla combobox N Private Sub chkN_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkN.CheckedChanged Assegnazione del "valoreRadio" in base alla selezione dell'utente sulla CheckBox N. Private Sub DateTimePickerN_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePickerN.ValueChanged Funzione eseguita alla modifica del valore del DateTimePicker N 36
  • 41. 7 - Conclusioni 7.1 - Risultati ottenuti I risultati ottenuti rispettano i vincoli di progetto discussi in fase di analisi. L’applicativo sviluppato permette la gestione dei timesheets dei dipendenti dell’azienda grazie all’integrazione di nuove funzionalità ad Outlook 2010. Queste funzionalità sono state implementate con l’aggiunta della scheda “Time Sheet” nella barra 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 svolto Qui di seguito sono riportati alcuni indici atti a quantificare il lavoro svolto: Codice vb: Classi: 7 Metodi: 64 Righe di codice: 1780 Database: Tabelle: 5 Stored Procedure: 9 7.3 - Sviluppi futuri Il progetto “Gestione Time Sheet” in futuro potrà essere sviluppato ulteriormente grazie alla creazione di applicativi per gli smartphone: studiando opportunamente un meccanismo di sincronizzazione tra smartphone e computer dell’azienda, la gestione dei timesheets potrà essere fatta anche in mobilità, senza la necessità di dover essere all’interno della rete aziendale per poter utilizzare il sistema. 37
  • 42. 8 - Bibliografia Riferimenti 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