Sviluppo di un Workflow Engine - Università degli Studi di Roma

Attività Formativa
Sviluppo di un
WORKFLOW ENGINE
di
Dott. Riccardo Gasperoni
Alessandro Caricato
Gabriele Trabucco
in collaborazione con
Progesi S.p.A.
e con la supervisione della
Dott. Alessandra Donnini
Il progetto






Studio delle reti di Petri e di MySQL
Analisi del problema
Progettazione del modello dei dati
(modellizzazione): strutturazione del modello
tramite UML (class diagram)
Prima stesura delle classi e test di unità
Reingegnerizzazione delle classi e test di unità
Test finale – Demo (progetto della demo e
realizzazione del programma).
Strumenti utilizzati

Linguaggio C++


Database


IDE : Dev-C++ 4.9.7.0
MySQL
UML : Universal Modelling Language
Reti di Petri



Sono un insieme di nodi, archi e transazioni.
Rappresentano un flusso di lavoro
L’avanzamento del lavoro è indicato dai “token”
Token
Nodo
Arco
Transazione
Obiettivo dell’attività

Produzione di un sistema software che realizzi
un WFE in grado di essere configurato
relativamente a:
Diversi workflow che deve gestire
 Gli utenti ed i loro ruoli nell’evoluzione degli
workflow.


Il WFE è inoltre capace di eseguire molti threads
basati sullo stesso workflow.
Reti nel workflow engine
Un flusso di lavoro è costituito da attività che
possono essere svolte in successione e/o in
parallelo e le reti sono la base per gestire tale
flusso.
Un workflow engine, utilizzando una rete di
Petri precostituita, è in grado di gestire lo stato
di avanzamento di uno o più lavori anche
contemporaneamente.
Class Diagram UML: i packages
API
model
test
I packages sono realizzati mediante le directories
Class diagram
UML del
modello dei
dati su cui è
basata
l’applicazione
Architettura generale
Il programma realizzato è un workflow engine.
Si basa su classi che generano una serie di nodi, archi
e transazioni che permettono di strutturare le reti di
Petri.
Ogni singola classe (ad esempio nodo) contiene una
serie di funzioni che generano, eliminano e
aggiornano il nodo.
Tutte le informazioni relative a workflow, threads,
utenti, ruoli ecc… sono gestite mediante un database.
Statistiche








Dimensione Programma :
Linee di codice totali :
Numero di classi :
Header Files :
Sorgenti C++ :
Funzioni totali :
Ore procapite progetto :
Ore procapite programma :
32 MB
5200
28
27
37
205
140
95
Maglioni Just In Time!
Negoziante
(Alex)
Responsabile lana
(Gab)
Responsabile colori
(Ric)
Responsabile Produzione
(Paolo)
Spedizioni
(Alessio)
Bibliografia

Testi :




“MySQL Guida completa” di Mark Maslakowski
"C++ Linguaggio, libreria standard, principi di
programmazione” di Bjarne Stroustrup
“C++ Guida Facile” di Paul Snaith
Internet :



http://nicolo.dia.uniroma3.it/AI%2004%20mod1/1PETRI
%2004.ppt
www.cplusplus.com
www.mysql.it
Si ringraziano Paolo e Alessio per aver cortesemente prestato i propri nomi al “responsabile di produzione” e al “corriere”