Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 17-Oct-2019 10:02 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 added 74 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
Un processo è un insieme di compiti, eseguiti sia da persone, sia in modo automatico, collegate tra loro da precedenze.\\
La rappresentazione delle dinamiche di esecuzione di un processo avviene mediante il modello delle reti di Petri, descritte nel seguito.\\
La definizione di una rete di Petri viene effettuata in uno script collegato al processo.\\
\\
!!! Componenti elementari\\
I componenti elementari che descrivono un processo sono i seguenti:\\
* Transizione: rappresenta un compito da eseguire, graficamente è descritta con un rettangolo.\\
* Luogo: rappresenta una posizione a cui può essere giunto un processo, graficamente descritto con un cerchio.\\
* Arco (orientato) collega una transizione ad un luogo, o viceversa; graficamente viene descritto da una freccia.\\
* Token: rappresenta lo stato di attivazione di un luogo; graficamente è un pallino nero all'interno del luogo. NB: in un dato istante possono essere presenti più token su luoghi diversi in una rete di Petri.\\
\\
Un processo deve iniziare e terminare con dei luoghi.\\
\\
Vediamo di seguito un semplice esempio di processo, costituito dai luoghi L01, L02, L03 e dalle transizioni T01, T02. Il luogo L01 contiene un token.\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0003.png' caption='' width='100%' style='max-width: 100%;'}]!!! Esecuzione di un processo\\
Un processo viene eseguito eseguendo alcune o tutte le transizioni che lo compongono (svolgimento dei compiti previsti).\\
\\
L'esecuzione di una transizione si compone di due elementi:\\
* I requisiti per cui essa può avvenire. In prima istanza una transizione può scattare quando tutti i luoghi in ingresso sono attivi (presenza di token).\\
* Le conseguenze prodotte quando essa avviene: vengono eliminati tutti i token dei luoghi precedenti, ed aggiunti a tutti i luoghi a cui essa punta.\\
\\
All'inizio del processo tutti i luoghi di partenza contengono un token. Nell'esempio illustrato in queste condizioni la transizione T01 è eseguibile, perchè il suo luogo in ingresso (L01) contiene un token.\\
\\
L'esecuzione della transizione T01 toglie il token dal luogo L01 e ne mette uno nel luogo L02: a questo punto T01 non può più essere eseguita e diventa attiva T02:\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0004.png' caption='' width='100%' style='max-width: 100%;'}]L'esecuzione di T02 sposta il token da L02 a L03:\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0005.png' caption='' width='100%' style='max-width: 100%;'}]Dal momento che il luogo L03 è finale (non porta in nessuna transizione) il processo è terminato.\\
\\
L'esempio appena illustrato rappresenta quindi un semplice processo composto da due compiti in sequenza.\\
\\
!!! Esempi\\
\\
!! Mutua esclusione\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0006.png' caption='' width='100%' style='max-width: 100%;'}]Sia T01 che T02 possono essere eseguite, perchè il luogo in ingresso ad entrambe (L01) contiene un token.\\
L'esecuzione di una delle due transizioni (ad es. T01) toglie il token dal luogo L01 (disattivando così l'altra transizione, ad es. T02) e lo mette nel luogo L02.\\
Dal momento che il luogo L03 è finale (non porta in nessuna transizione) il processo è terminato:\\
\\
!! Parallelismo\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0007.png' caption='' width='100%' style='max-width: 100%;'}]Sia T01 che T02 possono essere eseguite, perchè l luoghi in ingresso ad entrambe (L01/L02) contiengono un token.\\
L'esecuzione di T01 e di T02 sposta i token, rispettivamente, da L01 a L03 e da L02 a L04; la transizione successiva, T03, può quindi essere eseguita solo dopo l'esecuzione sia di T01 che di T02, perchè deve esserci un token sia in L02 che in L04.\\
\\
!! Diramazioni complesse\\
[{Image src='immagini/MBDOC-WFBASE_015/WF-FIG0008.png' caption='' width='100%' style='max-width: 100%;'}]All'esecuzione della transizione T01 il processo può chiedere all'utente di scegliere in quale luogo, L02 o L03, mettere il token: nel primo caso viene attivata la transizione T02, la cui esecuzione riattiverà la T01 (eseguendo quindi un loop), mentre nel secondo la T03.\\
\\
Si noti che configurazioni alternative della transizione T01 potrebbero implicare:\\
* tutti i luoghi (L02, L03) vengono riempiti automaticamente dall'esecuzione della transizione T01: in questo modo T02 e T03 si attivano contemporaneamente.\\
* i luoghi (uno o più) in cui deve essere posto il token vengono calcolati automaticamente dal motore di workflow, eventualmente sulla base di ragionamenti complessi.\\
\\
Queste diverse configurazioni non sono rappresentate graficamente (sono impostazioni di script) ma danno luogo a comportamenti diversi dei processi.\\
\\
\\
!!! In pratica\\
\\
* Si definisce un processo, compilando in uno script la rete di Petri che lo definisce.\\
* Si possono così istanziare degli ordini di workflow sulla base del modello definito\\
** un ordine è costituito da più impegni, ognuno modellato da una transizione nella rete di Petri del processo\\
** si attivano gli impegni per cui è attiva (eseguibile) la relativa transizione nella rete di Petri\\
** l'esecuzione di un impegno è l'esecuzione della relativa transizione, per cui viene aggiornata la rete di Petri relativa all'ordine e viene effettuato così l'avanzamento (si attivano gli impegni successivi)\\
\\
\\
!!! Accenno alle estensioni\\
\\
!! Requisiti esterni\\
\\
L'esecuzione di un impegno può essere condizionata da fattori esterni alla rete di Petri (es. attributi di oggetti di Sme.up, quando sono modificabili fuori dal workflow).\\
\\
!! Conseguenze esterne\\
\\
L'esecuzione di un impegno, oltre ad agire sulla rete di Petri spostando i token (e facendo così avanzare l'ordine), può avere come conseguenza l'esecuzione di un flusso di programmi funizzati (definiti nello script), che possono modificare ad esempio oggetti di Sme.up.\\
This page has only one version
«