Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 28-Aug-2023 15:55 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 138 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! INTRODUZIONE GENERALE\\
\\
La struttura di un ordine xxx, istanza di un processo yyy (tabella WFA), viene specificata in uno script, individuato con le seguenti regole:\\
* Lo script viene inizialmente cercato come membro xxx del file sorgente SCP_WFA_F1 (questa funzione è da approfondire, per ora non è utilizzata).\\
* Se assente si risale al membro yyy nel file sorgente SCP_WFA.\\
* Se assente si risale al membro zzz nel file sorgente SCP_WFA, dove zzz è il gruppo processo definito nella tabella del processo yyy.\\
\\
!!! STRUTTURA DELLA RETE\\
\\
La definizione del processo è centrata sulla dichiarazione delle sue transizioni, che saranno convertite in impegni da eseguire e in attività nel corso dell'esecuzione.\\
Per ogni transizione (TRA) vanno definiti:\\
* I luoghi in ingresso alla transizione (tag FROM).\\
* I luoghi in uscita alla transizione (tag TO).\\
* (opzionale) Il programma di dichiarazione / presa in carico dell'esecuzione della transizione (tag DIC, PRC).\\
* (opzionali) Le azioni esterne eseguibili dall'utente contestualmente all'esecuzione della transizione (tag EXT).\\
* (opzionali) Le conseguenze automatiche dell'esecuzione della transizione (tag CSG.EXT).\\
\\
!!! CONSIDERAZIONI SULLE ISTRUZIONI\\
\\
Per una spiegazione dettagliata degli attributi consultare il wizard nell'editor grafico ed i relativi help di campo.\\
\\
!! LUOGHI\\
\\
I luoghi sono definiti all'interno del tag FROM se sono in ingresso alla transizione, TO se in uscita.\\
Deve essere definito almeno (ma non necessariamente uno) luogo iniziale; la presenza di luoghi finali non è indispensabile (lo è per chiudere gli ordini di workflow: un ordine viene chiuso quando TUTTI i luoghi finali hanno il token).\\
\\
!! REQUISITI\\
\\
Una transizione è pronta se sono soddisfatti sia i requisiti sui luoghi sia i requisiti esterni.\\
\\
! Requisiti sui luoghi\\
\\
Se non impostato si assume implicitamente un and-join (tutti i luoghi precedenti devono avere il token).\\
Può essere specificata, nel tag FROM, una di queste modalità alternative:\\
* Requisiti sui luoghi in OR (Tip="O"): basta che un luogo precedente abbia il token.\\
* Requisiti sui luoghi in X-OR (Tip="X"): solo un luogo precedente deve avere il token\\
* Programma (Tip="P", Pgm="NomePgm): si passa la schiera dei luoghi con i rispettivi token: il programma decide se rendere pronta la transizione. Può implementare exclusive-or, oppure requisiti particolari (ad esempio a maggioranza: se ci sono cinque luoghi precedenti, basta che tre abbiano il token).\\
\\
! Requisiti esterni\\
\\
I requisiti esterni rendono pronta una transizione in base alla situazione del mondo esterno.\\
\\
Si può impostare uno dei seguenti requisiti:\\
* Programma: si esegue un programma, a cui si passa la transizione, che ritorna se essa è attivabile.\\
* Condizione: si controlla una condizione: se è verificata la transizione è attivabile.\\
Per l'esposizione delle variabili utilizzabili in una condizione riferirsi all'opportuna sezione.\\
\\
!! CONSEGUENZE\\
\\
Dopo l'esecuzione di una transizione (attività) vengono eseguite le conseguenze associate alla transizione.\\
\\
! Conseguenze sui luoghi\\
\\
Definiscono i luoghi in cui si mette il token dopo che una transizione è stata eseguita.\\
Se non impostata la modalità di assegnazione dei token si assume implicitamente l'and-split (TUTTI i luoghi successivi ricevono il token).\\
Si può, in alternativa, impostare una delle due seguenti modalità nel tag TO:\\
* Programma (Tip="P"): si esegue un programma, in cui si impostano i luoghi in cui mettere il token. E' cura di chi realizza il programma di assicurarsi che venga scritto almeno un token, per non mandare in stallo il processo.\\
* Condizioni (Tip="C"): il luogo o i luoghi in cui mettere il token vengono scelti in base a delle condizioni specificate nel seguito.\\
\\
Nel caso di conseguenza con condizioni, essa può essere automatica (eseguita dal motore di workflow all'avanzamento) oppure manuale (ogni condizione rappresenta un'opzione per l'utente, che ne sceglie da 1 a n).\\
Esempio di selezione automatica di condizioni:\\
;;TO Tip="C"\\
;;WHN Con="Condizione 1 ........"\\
;;LUO Val="CodiceLuogo 1"\\
;;LUO Val="CodiceLuogo 2"\\
;;WHN Con="Condizione 2 ........"\\
;;LUO Val="CodiceLuogo 3"\\
;;OTH\\
;;LUO Val="CodiceLuogo 2"\\
;;LUO Val="CodiceLuogo 4"\\
Si imposta una struttura di selezione: TUTTE le condizioni WHN che sono verificate vengono selezionate; in assenza di condizioni valide si prende la strada dell'OTH, obbligatorio.\\
Un luogo può essere presente più di una volta, in diverse condizioni.\\
Nell'esempio il luogo 2 è attivato dalla condizione 1 e dall'OTH.\\
\\
Le conseguenze sui luoghi vengono valutate dopo aver eseguito le conseguenze esterne, quindi è possibile utilizzare nelle loro condizioni valori di OAV che sono stati modificati da queste ultime.\\
\\
Per quanto riguarda la selezione manuale, bisogna impostare la keyword Sst nell'istruzione TRA. A questo punto si enumerano le scelte possibili da parte dell'utente con la WHN, impostando nel campo Con soltanto un'enumerazione di valori (1, 2, ...).\\
\\
! Conseguenze esterne\\
\\
Le conseguenze esterne (facoltative) permettono di codificare le azioni "cieche" sul mondo esterno che vengono eseguite all' esecuzione di un'attività o di un passaggio di stato signifcativo.\\
Si possono assimilare al flusso di inserimento dell'attività stessa; a differenza di quest'ultimo, la selezione delle azioni è più flessibile, in quanto è possibile condizionare in modo strutturato le azioni da eseguire.\\
\\
Deve essere presente inzialmente il tag che definisce che la parte sottostante è una conseguenza esterna (;;CSG.EXT), con il relativo parametro che indica il tipo di conseguenza (ATT/PRC/DIC...). Questo va seguito da un blocco di flusso, per specificare le funzioni da eseguire (si veda più avanti).\\
\\
!! DICHIARAZIONE/PRESA IN CARICO/DISTRIBUZIONE/ASSEGNAZIONE\\
\\
È possibile impostare il programma che esegue la dichiarazione dell'attività che esegue la transizione, con la sintassi ;;yyy.xxx, dove yyy vale DIC nel caso di dichiarazione di esecuzione, PRC nel caso di presa in carico, e dove xxx rappresenta il tipo di azione da eseguire (attualmente è implementato il valore FUN, per lanciare programmi funizzati o servizi)\\
Esempio: ;;DIC.FUN Fun="A(Programma;Funzione;Metodo) P(Parametri)\\
\\
Nel caso di programmi funizzati viene passato in chiave 1 l'impegno che si sta trattando (Oggetto di tipo F2), mentre in chiave 2 il tipo di azione (dichiarazione o presa in carico).\\
Nel caso di chiamate a funzioni di Looc.up viene passato in chiave 1 l'impegno che si sta trattando, mentre lo specificare il tipo di azione è lasciato alla funzione / metodo di chiamata del servizio.\\
\\
Se non è stata impostato questo tag, si assume come default il programma WFATT_01 a struttura funizzata, a cui viene passato in modo automatico, nella funzione, il tipo di dichiarazione (es. ;;DIC.FUN Fun="A(WFATT_01;DIC))\\
Ovviamente è possibile definire un tag di presa in carico e non uno di esecuzione, o viceversa.\\
In questi casi viene assunto il default per il tag mancante.\\
\\
!! AZIONI ESTERNE\\
\\
Le azioni esterne permettono di codificare le azioni sul mondo esterno che possono essere eseguite contemporaneamente allo svolgimento di un'attività.\\
Deve essere presente il tag che definisce che la parte sottostante è una serie di azioni esterne (;;EXT), seguito da un blocco di flusso, per specificare le funzioni da eseguire (si veda più avanti).\\
\\
NB: le azioni esterne POSSONO essere eseguite dall'utente DURANTE un'attività, le conseguenze esterne VENGONO eseguite automaticamente AL TERMINE dell'attività!\\
\\
!! BLOCCHI DI FLUSSO\\
Un blocco di flusso descrive un insieme di funzioni, che il motore di workflow lancia (nel caso di conseguenze esterne) o presenta all'utente (nel caso di azioni esterne).\\
Sono previsti sia tag di definizione funzioni sia tag di selezione.\\
\\
! Tag di definizione funzioni.\\
Si utilizzano per descrivere le azioni che verranno eseguite (;;AZI.xxx), dove xxx rappresenta il tipo di azione da eseguire; attualmente è implementato il valore FUN, per lanciare sia programmi funizzati che funzioni Looc.up.\\
In questo caso la sintassi completa è ;;AZI.FUN Fun="A(Programma;Funzione;Metodo) 1(...) ... 6(...) P(Parametri)" Cls="zzz",\\
dove zzz è la classe di esecuzione, utilizzata solo nel caso di azioni esterne (serve alla scheda di impegno per decidere rappresentare un'azione come scheda o pulsante).\\
\\
In chiave 1 viene passato, di default:\\
* l'impegno (F2), se l'azione è esterna o di dichiarazione (sotto i tag EXT o xxx.FUN).\\
* l'attività (F4), se l'azione è una conseguenza esterna (sotto il tag CSG.EXT).\\
Nel codice 2 viene passato, di default:\\
* Il tipo di azione (ASS, PRC, DIS, DIC), se l'azione è di dichiarazione.\\
* Il tipo di conseguenza esterna, intesa come stato (ASG, PRO) o attività (ATT, ASS, PRC, DIC, DIS), nel caso di conseguenza esterna.\\
* niente, nel caso di azioni esterne.\\
Se nella definizione delle azioni nello script viene definito qualcosa di diverso negli oggetti 1 e 2 questo ha la precedenza rispetto alle informazioni sopra descritte.\\
\\
Il parametro P e gli oggetti da 3 a 6 sono sempre lasciati a disposizione dell'utilizzatore per passare parametri liberi.\\
\\
! Tag di condizione\\
Si utilizzano per impostare condizioni sull'eseguibilità su insiemi di azioni (condizioni IF, le azioni tra l'IF e l'ENDIF solo eseguite solo se la condizione è valida).\\
Il modo di passare le informazioni dall'istanza di workflow alla condizione sono gli OAV dell'attività o dell'impegno, che possono essere aggiornati (ad esempio come parametri) dalla dichiarazione dell'attività stessa.\\
\\
Nel caso di conseguenze esterne le azioni vengono eseguite nella sequenza in cui sono codificate: in tal modo è possibile condizionare le azioni successive. Nel caso di azioni esterne è l'utente che sceglie quali azioni eseguire e in che ordine.\\
\\
Se un'azione richiede un'informazione a video che viene poi memorizzata, e se essa è raggiungibile tramite OAV di variabili, la si può inserire in una condizione di selezione di un IF successivo all'azione eseguita.\\
A questo proposito gli OAV utilizzati nelle condizoni, vengono 'rinfrescati' ad ogni lettura, dato che è stata utilizzata la modalità di rilettura forzata degli attributi ad ogni nuovo richiamo (anche se relativi all'ultimo oggetto trattato).\\
This page has only one version
«