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

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

Embed Size (px)

DESCRIPTION

Tesi di Laurea Triennale in Ingegneria Informatica.

Citation preview

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

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

Page 2: Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010
Page 3: Realizzazione di un applicativo per la gestione di fogli di lavoro integrato in outlook 2010

i

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

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

ii

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

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

1

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".

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

2

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

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

3

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.

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

4

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.

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

5

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.

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

6

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

progetto.

Classe Progetto

Progetto Lavoro che deve essere svolto. Categoria,Attività,

Dipendente

Attività Tempo che un dipendente dedica ad

un progetto.

Lavoro Progetto, Dipendente

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.

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

7

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.

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à”.

C ategoria Appartenenza Progetto Assegnazione D ipendente

Attiv ità

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

8

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.

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

9

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.

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

10

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.

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:

Progetto Richiesta Assegnazione1 N Ricezione DipendenteN 1Assegnazione

Progetto AssegnazioneN M Dipendente

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

11

3 - Progettazione della base di dati

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.

Progetto Richiesta Assegnazione1 N Ricezione DipendenteN 1

Relazione

1

Attività

N

Assegnazione

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

12

3 - Progettazione della base di dati

Schema E/R finale ristrutturato

Schema relazionale dedotto dallo schema E/R finale

Categoria

PK IDCategoria

Nome

Produttiva?

Data inserimento

Data ultima modifica

Note

Progetto

PK IDProgetto

Nome

Data inizio

Data fine

Data inserimento

Data ultima modifica

Note

FK1 IDCategoria

Dipendente

PK Nome Utente

PK Dominio

Nome

Cognome

Indirizzo

Città

Provincia

CAP

Email

Telefono

Cellulare

Pagina web

Data inserimento

Data ultima modifica

Note

Assegnazione

PK,FK1 IDProgetto

PK,FK2 Nome Utente

PK,FK2 Dominio

Data inserimento

Data ultima modifica

Note

Attività

PK IDAttività

Descrizione

DataOra inizio

DataOra fine

Data inserimento

Data ultima modifica

Note

FK1 Nome Utente

FK1 Dominio

FK1 IDProgetto

Appartenenza

0,N

1,1

Attività

IDCategoria

Nome

Data Inserimento

Data ultima modifica

Note

IDProgetto

Nome

Data Inizio

Data fine

Data di inserimento

Data ultima modifica

Note

Progetto

Categoria

IDAtività

Descrizione

DataOra Inizio

Durata

Data di inserimento

Data ultima modifica

Note Nome Utente

Nome

Cognome

Data di inserimento

Data ultima modifica

Note

Pagina WEB

Cellulare

Telefono

Email

Data di inserimento

Data ultima modifica

Note

Dipendente

Dominio

Indirizzo

Città

Provincia

Cap

AssegnazioneRichiesta Ricezione0,N 1,1 1,1 0,N

0,N

1,1

Relazione

Produttiva?

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

13

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),

@Cognome nvarchar(50),

@Indirizzo nvarchar(50),

@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)

Aggiorna i dati del dipendente in

base ai parametri ricevuti in

input.

AttivitàUtente @DataInizio datetime,

@DataFine datetime,

@Nome_Utente nvarchar(50),

@Dominio nvarchar(50)

Ottiene l’elenco di tutte le attività

di un dipendente, relative ad un

certo periodo di tempo.

CancellaAttivitàUtente @Original_Nome_utente nvarchar(50),

@Original_Dominio nvarchar(50),

@Inizio datetime,

@Fine datetime

Cancella tutte le attività del

dipendente in un determinato

periodo di tempo.

CopiaAttivitàDB @DataOra_inizio datetime,

@Durata int,

@Nome_utente nvarchar(50),

@Dominio nvarchar(50),

Crea un nuovo record nella

tabella Attività, in base al valore

dei parametri.

3 Maggiori informazioni su http://it.wikipedia.org/wiki/Stored_procedure

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

14

3 - Progettazione della base di dati

@IDProgetto int

ElencoProgetti @NomeUtente nvarchar(50),

@Dominio nvarchar(50)

Ottiene l’elenco dei progetti che

sono stati assegnati ad un

dipendente.

InfoUtente @NomeUtente nvarchar(50),

@Dominio nvarchar(50)

Ottiene i dati relativi ad un

dipendente.

InserisciUtente @NomeUtente nvarchar(50),

@Dominio nvarchar(50)

Inserisce un nuovo dipendente

nella tabella Dipendenti.

TotaleAttivitàPeriodo @Inizio datetime,

@Nome_Utente nvarchar(50),

@Dominio nvarchar(50),

@Fine datetime

Ottiene il numero delle attività

presenti nel database all’interno

di un certo periodo di tempo.

VerificaUtente @NomeUtente nvarchar(50),

@Dominio nvarchar(50)

Verifica l’esistenza di un

dipendente.

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

15

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.

Aggiornamento

lista progetti

Utente

Applicazione TimeSheet

Excel

Database TimeSheet

Esportazione

attività

Salvataggio

attività

Interrogazione

Creazione foglio

di lavoro

Modifica dati

personali

Inserimento/

Cancellazione

Modifica record

Inserimento

attività

Outlook

Impostazioni

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

16

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.

Aggiornamento progetti

Applicazione Time Sheet Database Time Sheet

Verifica connessione con il database

Comunicazione all'utente dell'esito dell'operazione

Connessione disponibileConnessione non disponibile

Lettura progetti assegnati all'utente

Creazione file XML locale con lista progetti

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

17

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

Click con il tasto destro del mouse nella vista del calendario "Time Sheet"

Selezione progetto dalla lista

Caricamento lista progetti da file XML e creazione menù "Progetti"

Selezione del periodo dell'attività nel calendario "Time Sheet"

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:

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

18

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.

Salvataggio Attività

Applicazione Time Sheet Database Time Sheet

Verifica connessione con il database

Cancellazione Attività precedenti

Comunicazione all'utente dell'esito dell'operazione

Connessione disponibile

Connessione non

disponibile

Inserimento nuove attività

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.

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

19

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.

Esportazione Attività

Applicazione Time Sheet File Excel

Verifica esistenza file Excel e permessi di scrittura

Creazione nuovi fogli di lavoro

Comunicazione all'utente dell'esito dell'operazione

Esiste ed è accessibile

Il file non è accessibile

Selezione periodo di esportazione

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.

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

20

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

Anagrafica

Esportazione

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.

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

21

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.

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

22

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”.

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

23

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.

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

24

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.

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

25

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”.

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

26

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

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

27

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

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

28

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)

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

29

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

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

30

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.

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

31

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)

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

32

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

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

33

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

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

34

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

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

35

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.

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

36

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

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

37

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.

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

38

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/

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