120 likes | 276 Views
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
E N D
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++ • IDE : Dev-C++ 4.9.7.0 • Database • MySQL • UML : Universal Modelling Language
Token Reti di Petri • Sono un insieme di nodi, archi e transazioni. • Rappresentano un flusso di lavoro • L’avanzamento del lavoro è indicato dai “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.
API model test Class Diagram UML: i packages 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 : 32 MB • Linee di codice totali : 5200 • Numero di classi : 28 • Header Files : 27 • Sorgenti C++ : 37 • Funzioni totali : 205 • Ore procapite progetto : 140 • Ore procapite programma : 95
Maglioni Just In Time! Negoziante (Alex) Responsabile colori (Ric) Responsabile lana (Gab) 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”