12
Attività Formativa 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

Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Embed Size (px)

Citation preview

Page 1: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Attività FormativaAttività 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

Page 2: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Il progettoIl progetto

Studio delle reti di Petri e di MySQLStudio delle reti di Petri e di MySQL Analisi del problemaAnalisi del problema Progettazione del modello dei dati Progettazione del modello dei dati

(modellizzazione): strutturazione del (modellizzazione): strutturazione del modello tramite UML (class diagram)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 Reingegnerizzazione delle classi e test di

unitàunità Test finale – Demo (progetto della demo Test finale – Demo (progetto della demo

e realizzazione del programma).e realizzazione del programma).

Page 3: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Strumenti utilizzatiStrumenti utilizzati

Linguaggio C++Linguaggio C++ IDE : Dev-C++ 4.9.7.0IDE : Dev-C++ 4.9.7.0

DatabaseDatabase MySQLMySQL

UML : Universal Modelling UML : Universal Modelling LanguageLanguage

Page 4: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Reti di PetriReti di Petri

Sono un insieme di nodi, archi e Sono un insieme di nodi, archi e transazioni.transazioni.

Rappresentano un flusso di lavoroRappresentano un flusso di lavoro L’avanzamento del lavoro è indicato dai L’avanzamento del lavoro è indicato dai

“token”“token”Nodo

Token

Arco

Transazione

Page 5: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Obiettivo dell’attivitàObiettivo dell’attività

Produzione di un sistema software Produzione di un sistema software che realizzi un WFE in grado di che realizzi un WFE in grado di essere configurato relativamente a:essere configurato relativamente a: Diversi workflow che deve gestireDiversi workflow che deve gestire Gli utenti ed i loro ruoli nell’evoluzione Gli utenti ed i loro ruoli nell’evoluzione

degli workflow.degli workflow. Il WFE è inoltre capace di eseguire Il WFE è inoltre capace di eseguire

molti threads basati sullo stesso molti threads basati sullo stesso workflow.workflow.

Page 6: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Reti nel workflow engineReti nel workflow engine

Un flusso di lavoro è costituito da Un flusso di lavoro è costituito da attività che possono essere svolte in attività che possono essere svolte in successione e/o in parallelo e le reti successione e/o in parallelo e le reti sono la base per gestire tale flusso.sono la base per gestire tale flusso.

Un workflow engine, utilizzando una Un workflow engine, utilizzando una rete di Petri precostituita, è in grado rete di Petri precostituita, è in grado di gestire lo stato di avanzamento di di gestire lo stato di avanzamento di uno o più lavori anche uno o più lavori anche contemporaneamente.contemporaneamente.

Page 7: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Class Diagram UML: i Class Diagram UML: i packagespackages

I packages sono realizzati mediante le directories

API

model test

Page 8: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

User

idname

passwordroleid

insert()del()

check()update()getId()

getRole()

(f rom Use Case View)

Role

idname

insert()delete()update()set()

EntityListlenlist

getByPriori ty()

AccessListidfunctionidroleid

insert()delete()update()getId()

FunctionListlenlist

getByEnti ty()

Entity

idnamepriority

insert()delete()update()getId()

TokenType

iddbtable WorkFlow

idnamenid

insert()delete()update()getId()getNid()

FunctionidnameentityidinMainMenu : BooleantokenTypeid

insert()delete()update()getId()

JobStepsListlenlist

getByJobid()

TokenidtokenTypeidtableid

Jobidnext

Job()getNex()

TransactionidinArcsoutArcs

insert()delete()update()getId()getInArcs()getOutArcs()

Nodeidnameend : Booleanfunctionid

insert()delete()update()getId()idEndNode()getFunctionid()

JobStepsidjobidarcidnodeidexecutionTimeuseridtokenidpending

insert()delete()update()getId()

Arcidnamedirectionnidtid

insert()delete()update()getId()getDirection()getNid()getTid()

ArcListlenlist

getByFrom()getByTo()

Db

Class diagram UML del

modello dei dati su cui è basata

l’applicazione

Page 9: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Architettura generaleArchitettura generale

Il programma realizzato è un workflow Il programma realizzato è un workflow engine.engine.Si basa su classi che generano una serie Si basa su classi che generano una serie di nodi, archi e transazioni che di nodi, archi e transazioni che permettono di strutturare le reti di Petri.permettono di strutturare le reti di Petri.Ogni singola classe (ad esempio nodo) Ogni singola classe (ad esempio nodo) contiene una serie di funzioni che contiene una serie di funzioni che generano, eliminano e aggiornano il generano, eliminano e aggiornano il nodo.nodo.Tutte le informazioni relative a Tutte le informazioni relative a workflow, threads, utenti, ruoli ecc… workflow, threads, utenti, ruoli ecc… sono gestite mediante un database.sono gestite mediante un database.

Page 10: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

StatisticheStatistiche

Dimensione Programma : Dimensione Programma : 32 32 MBMB

Linee di codice totali : Linee di codice totali : 52005200 Numero di classi : Numero di classi : 2828 Header Files : Header Files : 2727 Sorgenti C++ :Sorgenti C++ : 3737 Funzioni totali : Funzioni totali : 205205 Ore procapite progetto :Ore procapite progetto : 140 140 Ore procapite programma :Ore procapite programma : 9595

Page 11: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

Maglioni Just In Time!Maglioni Just In Time!Negoziante

(Alex)

Responsabile lana(Gab)

Responsabile Produzione(Paolo)

Spedizioni(Alessio)

Responsabile colori(Ric)

Work Flow Engine

Page 12: Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A

BibliografiaBibliografia

TestiTesti : : ““MySQL Guida completa” di Mark MySQL Guida completa” di Mark

MaslakowskiMaslakowski "C++ Linguaggio, libreria standard, principi "C++ Linguaggio, libreria standard, principi

di programmazione” di Bjarne Stroustrup di programmazione” di Bjarne Stroustrup ““C++ Guida Facile” di Paul SnaithC++ Guida Facile” di Paul Snaith

InternetInternet : : http://nicolo.dia.uniroma3.it/AI%2004%20modhttp://nicolo.dia.uniroma3.it/AI%2004%20mod

1/1PETRI%2004.ppt1/1PETRI%2004.ppt www.cplusplus.comwww.cplusplus.com www.mysql.itwww.mysql.it

Si ringraziano Paolo e Alessio per aver cortesemente prestato i propri nomi al “responsabile di produzione” e al “corriere”