25.07.2013 Views

Capitolo 2 Progettazione del terminale SIFA

Capitolo 2 Progettazione del terminale SIFA

Capitolo 2 Progettazione del terminale SIFA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Capitolo</strong> 2<br />

<strong>Progettazione</strong> <strong>del</strong> <strong>terminale</strong> <strong>SIFA</strong><br />

Il <strong>terminale</strong> <strong>SIFA</strong> è un sistema polifunzionale e molto complesso. Per tale motivo la<br />

consegna <strong>del</strong> progetto prevedeva l’implementazione di un processo BPEL contenente solo<br />

alcune procedure che il <strong>terminale</strong> <strong>SIFA</strong> reale implementa.<br />

Tra queste abbiamo scelto le procedure di iscrizione all’esame e di cancellazione <strong>del</strong>l’iscrizione<br />

ad un esame. Nel dettaglio il workflow di funzionamento <strong>del</strong> nostro <strong>terminale</strong> <strong>SIFA</strong><br />

è il seguente:<br />

Un utente si collega fornendo la matricola, a questo punto può scegliere se iscriversi ad<br />

un esame o cancellarsi da un esame a cui risultava precedentemente iscritto. In caso di<br />

scelta <strong>del</strong>la prima operazione, l’iscrizione, all’utente viene mostrata la lista degli esami<br />

disponibili. L’utente a questo punto sceglie a quale esame iscriversi e conferma la scelta.<br />

Il sistema effettuerà l’iscrizione all’esame ed invierà una mail di conferma all’indirizzo<br />

email <strong>del</strong>l’utente stesso.<br />

Se alla prima scelta l’utente decidesse invece di cancellarsi da un esame a cui risultava<br />

precedentemente iscritto, il workflow sarebbe leggermente diverso. La scelta verrebbe<br />

eseguita sulla lista esami a cui l’utente risulta già iscritto, mentre alla conferma il sistema<br />

procederebbe nella cancellazione avvisando sempre l’utente con una mail.<br />

Definito questo workflow, che non è altro che la rappresentazione discorsiva <strong>del</strong> futuro<br />

BPEL, è stato necessario capire come progettare i servizi che il processo BPEL andrà poi<br />

a chiamare. Abbiamo optato per creare due web services, uno dedicato alle operazioni<br />

di iscrizione, cancellazione e di ricezione <strong>del</strong>le liste esami, l’altro dedicato all’invio mail.<br />

Questa tipologia di architettura ci è sembrata molto conveniente e segue un’approccio<br />

DRY nell’affrontare il problema, poichè adibire all’invio mail un web service dedicato permette<br />

essere meno ripetitivi nella definizione <strong>del</strong> web service gestore esami. Ciò significa<br />

che il web service mailer si occupa solo di spedire le mail:<br />

• Invia mail: riceve in input il tipo di messaggio, il codice esame e la matricola<br />

Il web service gestore esami invece è stato definito con le seguenti operazioni:<br />

• Iscrizione: riceve in input il codice esame e la matricola<br />

• Cancellazione: riceve in input il codice esame e la matricola<br />

3


4 <strong>Capitolo</strong> 2. <strong>Progettazione</strong> <strong>del</strong> <strong>terminale</strong> <strong>SIFA</strong><br />

• Ricezione <strong>del</strong>la lista esami disponibili: riceve in input la matricola<br />

• Ricezione <strong>del</strong>la lista esami a cui l’utente è iscritto: riceve in input la matricola<br />

Ovviamente questi web service effettuano alcune operazioni in modo intrinseco, ad esempio<br />

il web service mailer cerca automaticamente l’indirizzo email associato ad una tale<br />

matricola.<br />

Progettare il flusso BPEL una volta definiti i web services e definita la sequenza <strong>del</strong>le<br />

operazioni è risultato decisamente banale. Vedremo in pratica nel capitolo seguente come<br />

è stato implementato il progetto secondo i costrutti BPEL, associando le chiamate ai web<br />

service in modo coerente con ciò che è stato descritto nella fase di progettazione.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!