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 Studio delle reti di Petri e di MySQL Analisi del problema Analisi del problema Progettazione del modello dei dati (modellizzazione): strutturazione del modello tramite UML (class diagram) Progettazione del modello dei dati (modellizzazione): strutturazione del modello tramite UML (class diagram) Prima stesura delle classi e test di unità Prima stesura delle classi e test di unità Reingegnerizzazione delle classi e test di unità Reingegnerizzazione delle classi e test di unità Test finale – Demo (progetto della demo e realizzazione del programma). Test finale – Demo (progetto della demo e realizzazione del programma).
Strumenti utilizzati Linguaggio C++ Linguaggio C++ IDE : Dev-C IDE : Dev-C Database Database MySQL MySQL UML : Universal Modelling Language UML : Universal Modelling Language
Reti di Petri Sono un insieme di nodi, archi e transazioni. Sono un insieme di nodi, archi e transazioni. Rappresentano un flusso di lavoro Rappresentano un flusso di lavoro Lavanzamento del lavoro è indicato dai token Lavanzamento del lavoro è indicato dai token Nodo Token Arco Transazione
Obiettivo dellattività Produzione di un sistema software che realizzi un WFE in grado di essere configurato relativamente a: Produzione di un sistema software che realizzi un WFE in grado di essere configurato relativamente a: Diversi workflow che deve gestire Diversi workflow che deve gestire Gli utenti ed i loro ruoli nellevoluzione degli workflow. Gli utenti ed i loro ruoli nellevoluzione degli workflow. Il WFE è inoltre capace di eseguire molti threads basati sullo stesso 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 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. 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 I packages sono realizzati mediante le directories API modeltest
Class diagram UML del modello dei dati su cui è basata lapplicazione
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 Dimensione Programma : 32 MB Linee di codice totali : 5200 Linee di codice totali : 5200 Numero di classi : 28 Numero di classi : 28 Header Files : 27 Header Files : 27 Sorgenti C++ :37 Sorgenti C++ :37 Funzioni totali : 205 Funzioni totali : 205 Ore procapite progetto :140 Ore procapite progetto :140 Ore procapite programma :95 Ore procapite programma :95
Maglioni Just In Time! Negoziante (Alex) Responsabile lana (Gab) Responsabile Produzione (Paolo) Spedizioni (Alessio) Responsabile colori (Ric)
Bibliografia Testi : Testi : MySQL Guida completa di Mark Maslakowski MySQL Guida completa di Mark Maslakowski "C++ Linguaggio, libreria standard, principi di programmazione di Bjarne Stroustrup "C++ Linguaggio, libreria standard, principi di programmazione di Bjarne Stroustrup C++ Guida Facile di Paul Snaith C++ Guida Facile di Paul Snaith Internet : Internet : %2004.ppt %2004.ppt %2004.ppt %2004.ppt Si ringraziano Paolo e Alessio per aver cortesemente prestato i propri nomi al responsabile di produzione e al corriere