At line 1 added 77 lines |
%%(display:none) |
{{{ |
WikiUp |
}}} |
/% |
[{TableOfContents }]\\ |
!!! Problematica\\ |
\\ |
Nei casi in cui un utente debba interagire con un numero non determinabile a priori di persone (ad esempio mettere a conoscenza dell'esecuzione di un lavoro un insieme di volta in volta variabile di utenti) le reti di Petri non riescono da sole a descrivere in maniera soddisfacente il processo.\\ |
Questo perchè ogni impegno (inteso come compito elementare svolto da un utente, quale la presa visione di un'informazione) deriva da una distinta transizione nella rete: nel caso in esame sarebbe quindi necessario disporre di uno script con un numero variabile di transizioni.\\ |
Per questo motivo è necessario introdurre degli strumenti per permettere la creazione di più impegni a fronte di una stessa transizione, in un numero di volta in volta variabile: le liste di distribuzione.\\ |
\\ |
!!! Implementazione\\ |
\\ |
Una lista di distribuzione è costituita da:\\ |
* Un impegno master, in cui un utente si fa carico di decidere a quanti e quali utenti inviare degli impegni slave\\ |
* N impegni slave, a risposta facoltativa o obbligatoria\\ |
\\ |
La dinamica dell'esecuzione di una lista di distribuzione è:\\ |
* L'utente sull'impegno master prende in carico l'impegno: viene creata una pre-lista sulla base delle informazioni contenute nello script del workflow.\\ |
* L'utente sull'impegno master può modificare tale lista, aggiungengo o rimuovendo elementi.\\ |
* L'utente sull'impegno master distribuisce la lista: gli impegni slave si attivano e finiscono nelle worklist dei rispettivi utenti.\\ |
* Quando tutti gli impegni slave a risposta obbligatoria sono stati eseguiti l'impegno master viene dichiarato automaticamente e il workflow può avanzare.\\ |
L'utente master può continuare ad aggiungere elementi alla lista fino alla dichiarazione dell'impegno master, ovvero fino a quando l'ultimo impegno slave non viene eseguito.\\ |
\\ |
!! Liste di distribuzione automatiche\\ |
\\ |
Se l'impegno master è automatico le liste di distribuzione vengono create automaticamente a partire dallo script, in tal caso non saranno ovviamente modificabili.\\ |
\\ |
!! Liste di distribuzione differite\\ |
\\ |
Si può impostare sulla T master di creare la lista di distribuzione direttamente alla creazione dell'ordine. In questo modo è possibile all'interno di impegni non master (precedenti la distribuzione) modificare la lista, che verrà eseguita automaticamente in un secondo momento.\\ |
\\ |
!!! Impegni slave\\ |
\\ |
Vengono creati:\\ |
* Alla presa in carico del master\\ |
* Se la transizione master è solo di distribuzione (no presa in carico) all'attivazione\\ |
* Se la transizione master è automatica alla distribuzione\\ |
* Se specificato nello script direttamente alla creazione dell'ordine\\ |
\\ |
Vengono resi pronti alla distribuzione.\\ |
Le distribuzioni possono essere multiple, ovvero mentre la transizione master è attiva (non sono ancora stati chiusi gli slave a risposta obbligatoria) è sempre possibile aggiungere impegni e distribuirli.\\ |
\\ |
Gli impegni slave possono trovarsi solo nello stato "non pronto" oppure "pronto"; il passaggio di stato a "pronto" avviene solo per impegni assegnati con la distribuzione.\\ |
\\ |
!!! Sugli script\\ |
\\ |
Operazioni necessarie per definire una lista di distribuzione:\\ |
* Compilare una transizione master: è una transizione normale\\ |
* Compilare una o più transizioni slave\\ |
** senza luoghi FROM/TO\\ |
** con la keyword Mas valorizzata sulla transizione master (es. Mas="T01")\\ |
** gli utenti di esecuzione (classe o utente singolo) servono a identificare il gruppo di utenti a cui verrà distribuita: per ogni utente appartenente agli utenti che possono eseguire un impegno slave verrà creato (o proposto) un impegno.\\ |
** la keyword Rfa="1" indica che una transizione slave è a risposta facoltativa, quindi ininfluente ai fini dell'avanzamento del master.\\ |
\\ |
Quindi:\\ |
* nelle transizioni normali viene creato un solo impegno eseguibile da uno e uno solo utente tra quelli assegnati alla transizione\\ |
* nelle transizioni slave viene creato un impegno PER OGNI utente tra quelli assegnati alla transizione slave\\ |
\\ |
!!! Programmi coinvolti\\ |
\\ |
Sono:\\ |
* WFWFC0:\\ |
** crea gli impegni slave da script, alla presa in carico o all'attivazione se la transizione master è senza presa in carico.\\ |
** effettua le dichiarazioni automatiche della master quando sono finite le slave con risposta obbligatoria.\\ |
* WFSUP_02: è utilizzato per la modifica di liste di distribuzione, ovvero per aggiungere o togliere impegni slave oltre a quelli da script.\\ |
* WFWFA0_AS: aggiorna la memoria per le azioni master-slave.\\ |
* WFWFB0: crea gli slave alla creazione dell'ordine, se specificato sulla T master.\\ |
\\ |
!!! Varianti\\ |
\\ |
Da implementare:\\ |
* Gestione di risposte diversificate sugli impegni slave (non solo presa visione ma decisioni):\\ |
** G08 alla dichiarazione con scelta multipla\\ |
** Conseguenze di dichiarazione sugli impegni slave per eventuale chiusura altri impegni sulla prima risposta negativa.\\ |
** Sugli impegni successivi: testing delle scelte effettuate negli impegni slave.\\ |