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”