Parametri e Variabili del Workflow
L'utilizzo strategico di parametri e variabili è cruciale per creare Workflow dinamici e automatizzati. Questi strumenti permettono di rendere i flussi di lavoro riutilizzabili, fornendo dati specifici ad ogni avvio, di mantenere informazioni utili durante l'elaborazione e di creare una sequenza logica di attività interconnesse.
1. Parametri del Workflow
I parametri sono valori di input definiti per l'intero Workflow. Possono essere creati accedendo alla sezione delle sue proprietà. All'interno delle proprietà, troverai due tab dedicati: "Parametri" e "File".
Tab "Parametri"
In questa sezione è possibile definire parametri di diverso tipo.
- Aggiunta di un parametro: Per inserire un nuovo parametro, clicca sul pulsante “+Aggiungi Parametro”. Verrà creata una nuova riga da configurare.
- Configurazione: Per ogni parametro è necessario definire:
- Tipo: Seleziona il tipo di dato dal menu a tendina. Le opzioni disponibili sono:
- NUMERICO: Per valori numerici.
- STRINGA: Per valori testuali.
- DATA: Per date e orari.
- ENCRYPT: Per valori sensibili che devono essere memorizzati e gestiti in forma cifrata.
- ESPRESSIONE: Per definire valori dinamici tramite espressioni.
- LISTA VALORI: Per elenchi di valori.
- Nome: Assegna un nome univoco al parametro (es. "x").
- Valore: Inserisci il valore di default del parametro (es. "1").
- Rimozione: Per eliminare un parametro, clicca sull'icona del meno (-) alla fine della riga.
Tab "File"
Questa sezione è dedicata alla gestione di parametri di tipo file, utili per caricare documenti (es. CSV, XLSX) che il workflow dovrà processare.
- Aggiunta di un file: Clicca su "+ Aggiungi File" per creare un nuovo parametro di tipo file.
- Configurazione:
- Nome parametro file: Definisci un nome per il parametro (es. "test_01").
- Scegli file: Clicca su questo pulsante per caricare il file dal tuo computer. Il nome del file caricato e la sua dimensione in byte verranno mostrati automaticamente.
- Verranno creati 3 tipi di parametri associati al file: “.filename”, “.file” (un path assoluto) e “.content”
Utilizzo dei Parametri al lancio del Workflow
Modale di Lancio: Quando un workflow viene eseguito, i suoi parametri vengono mostrati in una modale di avvio. Questo permette all'utente di personalizzare i valori di input per quella specifica esecuzione, senza dover modificare il Workflow.
Modularità (Sub-Workflows): I parametri sono fondamentali per rendere i Workflow riutilizzabili. Possono essere personalizzati e passati come input a task specifici quali: Run Workflow (per eseguire un sotto-workflow), Parallel Run Workflow e Iterator.
2. Variabili del Workflow
A differenza dei parametri, le variabili hanno uno scope puramente interno e servono a gestire i dati intermedi durante l'esecuzione del flusso.
- Creazione: Le variabili non si definiscono nelle proprietà del workflow, ma vengono create attraverso un task specifico chiamato Dichiara Variabili.
- Vincolo: È importante notare che all'interno di un singolo workflow può esistere un solo task Dichiara Variabili.
- Modifica: La modifica del valore delle variabili è consentita unicamente attraverso l'utilizzo dei task Imposta Variabili.
- Creazione: Le variabili non si definiscono nelle proprietà del workflow, ma vengono create attraverso un task specifico chiamato Dichiara Variabili.
- Vincolo: È importante notare che all'interno di un singolo workflow può esistere un solo task Dichiara Variabili.
- Modifica: La modifica del valore delle variabili è consentita unicamente attraverso l'utilizzo dei task Imposta Variabili.
3. Utilizzo di Parametri e Variabili – Menu “Lista Parametri”
Il menu “Lista Parametri” è una componente essenziale del Workflow. Consente di creare processi dinamici gestendo il passaggio di dati tra i task e l’utilizzo di valori calcolati durante l’esecuzione, rendendo il workflow più flessibile e adattabile.
Accesso e utilizzo
All’interno delle schede “Configurazione” e “Condizioni di Output” di ciascun task è disponibile il pulsante “Parametri ≡”, che apre il menu “Lista Parametri”.
Da questo pannello è possibile trascinare (drag-and-drop) un parametro dalla lista e rilasciarlo nel campo di input desiderato (ad esempio nei campi Attachments o Content di un’email).
L’operazione inserisce automaticamente nel campo il riferimento dinamico al parametro, formattato secondo la sintassi:
`#>nome_parametro<#`
4. Il menu “Lista Parametri” nella scheda “Configurazione”
Il menu è organizzato in sezioni, ognuna delle quali espone una diversa tipologia di dato dinamico.
Parametri Runtime
Questa sezione espone le variabili di sistema relative all'esecuzione in corso. Sono parametri di sola lettura, valorizzati automaticamente dalla piattaforma.
- Contesto Workflow: Informazioni sull'intera esecuzione del processo.
- $$SYBOT_USER: L'utente che ha avviato il Workflow.
- $$RUN_ID: L'ID univoco di questa specifica esecuzione.
- $$WORKFLOW_ID: L'ID univoco del Workflow.
- $$WORKFLOW_NAME: Il nome del Workflow.
- Contesto Task: Informazioni sul Task immediatamente precedente.
- $$LAST_TASK_ID: L'ID del Task precedente.
- $$LAST_TASK_NAME: Il nome del Task precedente.
- $$LAST_TASK_TYPE: Il tipo del Task precedente (es. “db” per i Task "Database" ).
Parametri Workflow
Elenca tutti i parametri di input definiti per l'intero Workflow nelle sezioni "Parametri" e "File". Per i parametri di tipo "File", vengono esposti attributi specifici per accedere a diverse parti dell'informazione:
- .file: Il percorso completo del file.
- .filename: Il solo nome del file.
- .content: Il contenuto del file (se testuale).
Variabili Workflow
Mostra le variabili create tramite il Task "Dichiara Variabili". Queste variabili mantengono il loro stato durante l'esecuzione e possono essere lette o modificate (tramite il Task "Imposta Variabili") in qualsiasi punto del flusso successivo alla loro dichiarazione.
Operatori Aritmetici
Questa sezione fornisce scorciatoie per l'inserimento degli operatori matematici standard. Vengono utilizzati per eseguire calcoli in tempo reale, combinando valori statici o parametri dinamici.
| Operatore | Descrizione | Esempio di Utilizzo |
|---|---|---|
| + | Addizione | #>Declare variables.contatore<# + 1 |
| - | Sottrazione | #>TotaleOrdini.count<# - 10 |
| * | Moltiplicazione | #>Prodotto.prezzo<# * #>Ordine.quantità<# |
| / | Divisione | #>FatturatoAnnuale.valore<# / 12 |
| % | Modulo | #>Controllo loop.loopCount<# % 2 (Restituisce il resto di una divisione, utile per determinare se un numero è pari o dispari) |
Funzioni
Questa sezione espone un insieme di funzioni predefinite per l'esecuzione di operazioni complesse che vanno oltre i semplici calcoli aritmetici. Tra queste, è presente una suite di funzioni dedicate alla gestione della data e dell'ora correnti, fondamentali per la generazione di timestamp dinamici e per la formattazione di output temporali.
| Funzione | Descrizione | Valore Restituito (Esempio) |
|---|---|---|
| Date.datetime | Restituisce la data e l'ora correnti. | 2025-09-17 10:30:00 |
| Date.date | Restituisce solo la data corrente. | 2025-09-17 |
| Date.time | Restituisce solo l'ora corrente. | 10:30:00 |
| Date.unix | Restituisce la data e l'ora correnti in formato Unix Timestamp (numero di secondi trascorsi dal 1° gennaio 1970). | 1757893800 |
| Date.format("...") | Formatta la data e l'ora correnti secondo un modello personalizzato. | 17/09/2025 10:30:00 (usando "d/m/Y H:i:s") |
Output dei Task Precedenti
Questa sezione è il cuore del flusso di dati. Viene popolata dinamicamente con un elenco di tutti i Task che precedono quello attualmente selezionato nel diagramma. Espandendo un Task in questa lista, si ha accesso a tutti i suoi parametri di output, che possono essere quindi trascinati e utilizzati come input per il Task corrente. Ad esempio, il result di un Task Database può essere usato nel Content di un TaskE-Mail Out v.2 per inviare un report via email.
Sintassi di Inserimento
Quando si utilizza un elemento dalla "Lista Parametri", questo viene inserito automaticamente nel campo di input con una sintassi specifica: #>nome_task.nome_parametro<#. Ad esempio:
`#>E-Mail Out.body<#`
`#>Importa Testo.result<#`
`#>Database.Dataset.nome<#`
Questa notazione agisce come un segnaposto. Durante l'esecuzione del workflow, #>Importa Testo.result<# verrà sostituito con il valore reale prodotto dal task "Importa Testo".
Note
- Nel task Database per usare i parametri nella sezione Clausola FROM e Statement, va usata la seguente sintassi:
#>dbobj:nome_tabella<#(dopo ">" va usato "dbobj:")
5. Il menu “Lista Parametri” nella scheda “Condizioni Output”
Quando si accede al menu "Lista Parametri" dalla scheda "Condizioni Output" di un Task, la sua funzione principale è quella di assistere nella costruzione di espressioni logiche complesse. Queste espressioni determinano quale percorso il Workflow seguirà dopo l'esecuzione del Task.
La struttura di base del menu e le sezioni Parametri Runtime, Parametri Workflow, Variabili Workflow, Funzioni e Output dei Task Precedenti sono identiche a quelle descritte nel capitolo precedente.
La differenza fondamentale risiede nell'aggiunta di due sezioni specifiche per la costruzione di logica booleana: Operatori di Confronto e Operatori Logici.
Operatori di Confronto
Questa sezione fornisce scorciatoie per inserire operatori utilizzati per confrontare due valori. Il risultato di un confronto è sempre un valore booleano (vero o falso), che è la base per qualsiasi decisione di flusso.
| Operatore | Descrizione | Esempio di Utilizzo in un'Espressione |
|---|---|---|
| == | Uguale (confronto di valore, con conversione di tipo) | #>Unix Search Process.exitStatus<# == 0 |
| === | Strettamente uguale (confronto di valore e di tipo) | #>Chiamata REST.httpCode<# === 200 (confronta un numero con un numero) |
| != | Diverso (confronto di valore) | #>Variabili Workflow.stato<# != 'Completato' |
| !== | Strettamente diverso (confronto di valore e di tipo) | #>Database.count<# !== '0' |
< / > | Minore di / Maggiore di | #>Iterator.Dataset.Count<# > 10 |
<= / >= | Minore o uguale di / Maggiore o uguale di | #>Controllo loop.loopCount<# <= 5 |
| in | Verifica se un valore è presente in una lista o array. | |
| not in | Verifica se un valore non è presente in una lista o array. | |
| contains | Verifica se una stringa contiene un'altra sottostringa. | contains(#>Importa Testo.result<#, 'ERROR') |
Operatori Logici
Questi operatori sono utilizzati per combinare due o più espressioni di confronto, permettendo di costruire condizioni complesse e multi-fattoriali.
| Operatore | Descrizione | Esempio di Utilizzo in un'Espressione |
|---|---|---|
| and | Restituisce vero solo se entrambe le espressioni sono vere. | #>Chiamata REST.httpCode<# === 200 and #>Chiamata REST.response<# contains 'success' |
| or | Restituisce vero se almeno una delle espressioni è vera. | #>StatoServizio.result<# == 'stopped' or #>StatoServizio.exitStatus<# != 0 |
| not | Inverte il risultato di un'espressione (da vero a falso e viceversa). | not (#>Variabili Workflow.utente_attivo<#) |
L'utilizzo combinato di parametri, funzioni e di questi operatori logici e di confronto consente di definire con precisione granulare il comportamento del Workflow in risposta a qualsiasi risultato proveniente dai Task eseguiti.