Allegato tecnico Workflow 

Durante l'esecuzione di un Workflow, e durante la sua firma, si dispone di un contesto molto ricco per quanto riguarda classi di variabili e variabili locali in linea. Questo contesto dipende dal tipo di Workflow e dal processo in corso (Workflow originale, firma, Workflow successivo ad un primo Workflow). Questo allegato descrive l'algoritmo usato dal motore del Workflow e specifica nel dettaglio le variabili utilizzabili ad ogni stadio.

Occorre notare che l'assistente di formula fornisce un'elenco di varibili derivanti dal contesto per costruire delle formule in maniera più idonea possibile.

Algoritmo principale Workflow oggetto

Un Workflow di tipo oggetto si scompone in una serie di fasi qui di seguito elencate:

Inizializzazione delle variabili d'ambiente

Questa fase consiste nell'assegnare delle variabili globali. Si dispone in particolare della variabile USRWRK che corrisponde all'utente corrente del workflow di origine.

Elaborazione della regola di assegnazione

In questa fase, vengono interpretate le formule indicate nella regola, e le si memorizzano in una variabile dimensionata chiamata VALEXP. Ciò permette di disporre in particolare dei valori aggregati che non sono utilizzati obbligatoriamente come criteri di definizione dei destinatari, ma semplicemente utili nel procedimento del Workflow (per esempio per decidere l'invio di un messaggio in funzione dei valori minimo, massimo e medio di un elemento).

Il numero di valori calcolati è contenuto nella variabile NBCOL.

Si cercherà in seguito, a partire dai valori calcolati, la riga della regola corrispondente, per alimentare il riquadro di variabili USER (indicizzato da 1 a 10 al massimo).

Elaborazione del Workflow

Questa fase si suddivide in varie fasi intermedie. Si determinano inizialmente un certo numero di valori:

  • si inizializza la variabile CTX, che contiene il contesto corrente a partire dalle formule parametrizzate. Questo contesto è memorizzato nello storico del Workflow e sarà in seguito restituito se un ulteriore evento del Workflow viene attivato in seguito al primo.
  • Si alimentano le variabili S_USER, S_CLEOBJ, S_ABREV, che definiscono l'utente all'origine del Workflow, la chiave dell'oggetto o del gruppo di righe ed il codice dell'oggetto interessato.
  • Si calcola S_NBRUSER, che fornisce il numero di firmatari realmente definiti nella regola.

In seguito, si verificano le condizioni di esecuzione nella testata del Workflow. Se queste condizioni sono soddisfatte, si realizzano le seguenti operazioni:

  • Costituzione del contesto di ritorno (icona).
  • Attribuzione di un numero di crono ad ogni elaborazione di una regola. Nel caso di un Workflow manuale, viene fatta un'attribuzione ogni volta che viene cambiato il valore della chiave sulla tabella principale (se non esistono campi raggruppamento) o il valore di raggruppamento (se ce n'è uno).
  • Attribuzione di un numero di crono per ogni riga (se esiste un raggruppamento ce ne sono varie per ogni gruppo ).
  • Esecuzione dell'azione di inizio di Workflow (se ne esiste una e se sono soddisfatte le condizioni).
  • Se deve essere inviato un messaggio, o effettuato un avanzamento, ricerca degli utenti delegati.
  • Se deve essere inviato un messaggio, elaborazione del messaggio.
  • Se deve essere effettuato un avanzamento, elaborazione dell'avanzamento.
  • Esecuzione dell'azione di tipo fine di Workflow (se ne esiste una e se sono soddisfatte le condizioni di esecuzione).

Elaborazione del messaggio

Questa fase realizza le seguenti operazioni:

  • Costituzione del testo tramite assemblaggio del testo principale e del testo del dettaglio delle righe (se ne esistono).
  • Costituzione dell'oggetto del messaggio.
  • Visualizzazione della finestra di modifica del messaggio (se il messaggio è modificabile e se l'attivazione interattiva).
  • Transazione di scrittura nelle tabelle corrispondenti: AWRKHISMES contiene il corpo del messaggio, AWRKHISJOI gli allegati, e AWRKHISDES i destinatari.
  • Invio del messaggio se l'opzione di invio di gruppo non è attivata. Altrimenti, l'invio di gruppo sarà fatto alla fine dell'elaborazione del workflow.

Elaborazione dell'avanzamento

Questa fase realizza l'aggiornamento della riga di avanzamento da elaborre nella tabella AWRKHISSUI. La transazione corrispondente è separata da quelle precedenti (ma viene eseguita solo se le precedenti sono sono andate a buon fine).

Algoritmo principale del Workflow firma

Un Workflow di tipo firma è attivato in seguito ad un'azione di firma (sia manuale dal piano di lavoro, sia automatica in seguito ad un altro evento di Workflow o di una notifica tramite un clic su un link).

Le fasi corrispondenti sono le seguenti:

Inizializzazione delle variabili ereditate

Le variabili ereditate dal contesto di firma sono alimentate in questa fase. Queste variabili sono le seguenti:

NUMORG

numero cronologico di origine.

USRORG

destinario dell'evento di origine.

NUMSIG

crono su cui è stato attivato il processo di firma.

USRDES

destinatario del crono su cui è stato attivato il processo di firma.

USRWRK

utente che firma.

MAIWRK

indirizzo di posta elettonica del firmatario, quando la firma si effettua tramite un link http esterno.

LEVSIG

Livello di firma (l'evento di origine assume il numero 0, gli eventi che si susseguono assumono i numeri successivi a partire da 1).

RETORG

Chiave dell'oggetto su cui è stato attivato il Workflow di origine.

CONTXT

Riferimento dell'icona di ritorno.

CLEOBJ

Numero del crono firmato.

CTX(1..15)

Variabili del contesto.

S_USER

Destinatario che ha attivato il Workflow di origine.

S_CLEOBJ

Chiave di attivazione (oggetto o raggruppamento).

S_ABREV

Abbreviazione dell'oggetto del Workflow di origine.

S_NBRUSR

Numero di utenti definiti nella regola del Workflow di origine

Algortimo di elaborazione di una firma

La fase della firma di un evento si realizza con il seguente processo:

  • inizializzazione del contesto di firma.
  • Verifica dell'esistenza del crono e blocco.
  • Valutazione (in base alle condizioni) della lista delle risposte autorizzate.
  • Inserimento di una risposta tra le risposte possibili.
  • Blocco della scheda che ha generato il primo avanzamento.
  • Caricamento delle classi di variabili [F]
  • Aggiornamento della variabile RESULT in funzione della risposta
  • Modifica di questa variabile tramite inserimento (se la risposta è modificabile)

In seguito, la transazione di firma vera e propria viene effettuata:

  • Esecuzione delle azioni di firma se ce ne sono
  • Aggiornamento del campo corrispondente alla risposta (se esiste)
  • Elaborazione della regola di Workflow associata alla firma (se ce n'è una)
  • Aggiornamento della riga di avanzamento (flag firmato, firmatario corrispondente).

inizializzazione del contesto di firma.

Quando un utente firma un avanzamento, le variabili disponibili nel contesto sono le seguenti:

CRONO

crono dell'evento su cui si pone una firma.

USRDES

codice utente del destinatario.

USRSIG

Codice utente del firmatario.

USRMAIL

indirizzo di posta elettonica del firmatario, quando la firma si effettua tramite un link http esterno.

NUMORG

Crono evento di origine su cui è stata effettuata la prima firma.

USRORG

Destinatario di questo evento.

LEVSIG

Livello di firma (l'evento di origine assume il numero 0, gli eventi che si susseguono assumono i numeri successivi a partire da 1).

USRTOP

Destinatario principale (gli altri sono dei delegati).

NUMGRP

Gruppo dell'evento da firmare.

CTX(1..15)

Variabili del contesto.

S_USER

Destinatario che ha attivato il Workflow di origine.

S_CLEOBJ

Chiave di attivazione (oggetto o raggruppamento).

S_ABREV

Abbreviazione dell'oggetto del Workflow di origine.

S_NBRUSR

Numero di utenti definiti nella regola del Workflow di origine

Il riquadro di variabili REPCHR permette di sapere se altri destinatari dello stesso evento hanno già firmato. Si conta infatti il numero di gruppi (un gruppo è uguale ad una riga nel riquadro dei firmatari, dal momento in cui un delegato ha firmato, l'evento è firmato e non può essere firmato una seconda volta da un altro membro dello stesso gruppo).

Si ha allora:

REPCHR(0) = numero di risposte rimanenti da effettuare: se per esempio ci sono 4 righe di firmatari nella descrizione dell'evento e se solo uno ha firmato, questo valore sarà uguale a 3.

REPCHR(N°), dove N° può valere da 1 a 10, fornisce il numero di firmatari che hanno risposto con la risposta posizionata sulla riga numero N° nel riquadro delle risposte.

Queste variabili permettono soprattutto di condizionare le fasi successive per il fatto che l'ultimo firmatario in attesa ha risposto, o di lavorare sulle logiche maggioritarie di firma.