• Non ci sono risultati.

Capitolo 4: Un caso pratico: il workflow per l’automazione del processo di gestione delle

4.6 Web Services

Come abbiamo visto, il processo realizzato utilizza i Web Services per ottenere informazioni dall’esterno in modo semplice e veloce: in particolare, ne vengono usati due, uno utilizzato per ricavare informazioni lato client, l’altro pensato perlopiù per svolgere operazioni lato server. Entrambi accedono ad un unico database (quello della rete PiaggioNet) per ricavare i dati che devono essere poi forniti al sistema E-Work in risposta alle chiamate di metodo compiute da quest’ultimo. Prima di esaminarli approfonditamente, però, analizziamo le tabelle della base di dati della rete a cui accedono per ottenere le informazioni utili al sistema24:

Anagrafica: questa tabella contiene i dati anagrafici di tutti gli utenti registrati alla rete (nome, cognome, matricola, centro di costo, ente, codice intranet e così via).

DatiUfficio: comprende le informazioni logistiche relative alla localizzazione dei vari utenti registrati alla rete (numero di telefono, fax, e-mail, ecc.). La chiave primaria di questa tabella è il codice intranet dell’impiegato.

CapoPersonale: contiene i dati relativi ai vari Direttori del Personale presenti nelle aziende del gruppo e permette di individuare quello associato all’utente che compila il Foglio di Viaggio.

Resp: questa tabella memorizza al suo interno tutte le informazioni relative ai Responsabili (diretti e di primo livello) indicati dagli utenti nel corso della compilazione del loro Foglio di Viaggio, indicando per ogni dipendente (identificato dal suo codice intranet) il codice del Responsabile, il livello di quest’ultimo (1 se diretto, 2 se di primo livello) ed il servizio per cui l’utente gli è sottoposto.

Il Web Service DataService, le cui funzioni sono invocate, come abbiamo visto, da script eseguiti lato client, contiene i seguenti metodi:

GetData: questa funzione consente di ottenere dalle tabelle Anagrafica e DatiUfficio le informazioni relative a tutti gli utenti il cui cognome inizia con le lettere contenute nella stringa passata come argomento (necessarie per la costruzione della tabella che appare a tempo di esecuzione quando viene premuto il tasto per la ricerca di uno specifico utente). Questi dati sono ritornati allo script che ha invocato la funzione sotto forma di un array di oggetti25, riportato all’interno del messaggio XML di risposta.

24 Ovviamente i nomi delle tabelle e delle loro colonne sono stati alterati per evitare di divulgare i dettagli tecnici di

realizzazione della rete PiaggioNet.

25 Gli oggetti contenuti nell’array sono tutti di classe

Impiegato, il cui codice non è riportato in quanto non particolarmente significativo: basti dire che un oggetto di questa classe contiene come variabili tutte le informazioni necessarie per riempire i campi del questionario (nome, cognome, e-mail, matricola, centro di costo, codice intranet) e come metodi solo il costruttore (il quale assegna semplicemente alle variabili di classe gli argomenti con cui è invocato) e le funzioni get e set delle rispettive variabili.

GetDataPerCodice: passando come argomento al Web Service il codice intranet di un utente, questo metodo restituisce tutte le informazioni anagrafiche e logistiche relative a quella persona. Anche questa funzione restituisce tali dati sotto forma di un array di stringhe dall’ordine predefinito, riportato all’interno del messaggio XML di risposta.

GetCdp: questa funzione, che prende come argomento il codice intranet dell’utente che richiede la trasferta, restituisce, dopo aver interrogato il database, tutti i dati relativi al suo Direttore del Personale (non solo nome e cognome, ma anche il suo indirizzo e-mail ed il suo codice intranet) sotto forma di un’unica stringa in cui i vari campi sono separati dal carattere “|”.

Il codice che implementa questi metodi è riportato in appendice B.

Il Web Service chiamato Service, invece, contiene una serie di operazioni che sono perlopiù invocate lato server, attraverso delle chiamate effettuate automaticamente dal sistema in certi punti del processo (per esempio, al completamento di una certa azione o all’ingresso in un particolare stage). Le funzioni che mette a disposizione sono quindi le seguenti:

GetResp: al caricamento del questionario per la specifica dei livelli autorizzativi, viene invocata questa funzione, la quale, prendendo come argomenti in ingresso il codice intranet dell’utente di cui si vuole conoscere i Responsabili ed il numero del servizio26 a cui fare riferimento, legge dal database i dati sia del Responsabile diretto sia di quello di primo livello (nome, cognome, e-mail e codice intranet), restituendo un array di oggetti27 (uno per ogni Responsabile), incluso poi nel messaggio XML di risposta.

UpdateResp: invocato automaticamente dal sistema al salvataggio del questionario relativo ai livelli autorizzativi, questo metodo, che prende come parametri in ingresso i codici intranet dell’utente e del Responsabile scelto ed il numero del servizio, si occupa di memorizzare nella tabella Resp il nuovo Responsabile diretto (quindi di livello 1), cancellando quello precedente e restituendo però il suo codice intranet, il quale sarà confrontato dal sistema con quello del Responsabile indicato dall’utente, per inviare, nel caso siano diversi, una e-mail al vecchio Responsabile per informarlo della scelta (come richiesto dalle specifiche del processo).

UpdateResp1Liv: invocata anch’essa dal sistema al salvataggio della form per la specifica dei livelli autorizzativi (ma solo se il Responsabile di primo livello indicato dall’utente non dipende da quello diretto), questa funzione, che ha come argomenti i codici intranet dell’utente e del Responsabile di primo livello scelto ed il numero del servizio, memorizza nella tabella Resp il nuovo Responsabile di primo livello (quindi di livello 2), cancellando quello precedente.

GetDirDesc: invocata anch’essa automaticamente dal sistema per ottenere la descrizione dell’ente di cui fa parte l’utente che compila il Foglio di Viaggio (informazione visualizzata nel questionario relativo ai dati anagrafici), questa funzione, ottenuto come parametro in ingresso il codice intranet del richiedente, ritorna una stringa contenente la descrizione stessa. Questo dato è stato separato dagli altri dello stesso questionario (ottenuti anch’essi tramite Web Service) su indicazione del tutor aziendale, poiché la tabella da cui ricavare questa informazione era distinta dalle altre e non disponibile a tempo di sviluppo.

Il codice di implementazione dei vari metodi del Web Service è riportato in appendice B.

26 Anche se per quanto riguarda questo processo il numero del servizio a cui fare riferimento per la scelta dei

Responsabili è sempre il numero 50, questo dato è stato passato come argomento, e non realizzato tramite una costante, per poter utilizzare la stessa funzione anche in altri processi, i quali si riferiscono a servizi diversi.

27 Questi oggetti appartengono ad un’altra classe, chiamata

Responsabile, molto simile a quella Impiegato: l’unica