Script e modelli JavaScript javascript-scripts-and-templates
Gli script consentono di calcolare i valori, scambiare dati tra diverse attività nel processo ed eseguire operazioni specifiche utilizzando chiamate SOAP.
Gli script sono onnipresenti in un diagramma di flusso di lavoro:
-
Tutte le attività dispongono di script di inizializzazione. Uno script di inizializzazione viene eseguito quando l’attività viene attivata e può essere utilizzato per inizializzare le variabili e modificare le proprietà.
-
L’attività "Codice JavaScript" viene semplicemente utilizzata per eseguire uno script.
-
L’attività "Test" valuta le espressioni JavaScript per attivare la transizione appropriata.
-
La maggior parte dei campi di testo sono modelli di JavaScript: le espressioni JavaScript possono essere incluse tra <%= e %>. Questi campi offrono un pulsante che apre un elenco a discesa per facilitare l’immissione di espressioni.
Oggetti esposti objects-exposed
Gli script Java eseguiti nel contesto di un flusso di lavoro accedono a una serie di oggetti globali aggiuntivi.
- istanza: rappresenta il flusso di lavoro in esecuzione. Lo schema di questo oggetto è xtk:workflow.
- attività: rappresenta le attività in esecuzione. Lo schema di questo oggetto è xtk:workflowTask.
- event: rappresenta gli eventi che hanno attivato l'attività in esecuzione. Lo schema di questo oggetto è xtk:workflowEvent. Questo oggetto non è inizializzato per attività di tipo AND-join attivate da più transizioni.
- eventi: rappresenta l'elenco degli eventi che hanno attivato l'attività corrente. Lo schema di questo oggetto è xtk:workflowEvent. Questa tabella contiene in genere un elemento, ma può contenere diverse attività di tipo AND-join attivate in base a diverse transizioni.
- attività: rappresenta il modello dell'attività in esecuzione. Lo schema di questo oggetto dipende dal tipo di attività. Questo oggetto può essere modificato dallo script di inizializzazione, in altri script, modifiche con effetti indeterminabili.
Le proprietà disponibili per questi oggetti possono essere visualizzate in un elenco a discesa facendo clic sul pulsante a destra della barra degli strumenti dello script.
Esempio
In questo esempio e negli esempi seguenti creare un flusso di lavoro che includa un'attività JavaScript code e un'attività End come illustrato nel diagramma seguente.
Fare doppio clic sull'attività Codice JavaScript e inserire lo script seguente:
logInfo("Label: " + instance.label)
logInfo("Start date: " + task.creationDate)
La funzione logInfo(message) inserisce un messaggio nel registro.
Fai clic su OK per chiudere la procedura guidata di creazione, quindi avvia il flusso di lavoro utilizzando i pulsanti di azione in alto a destra nell'elenco dei flussi di lavoro. Al termine dell’esecuzione, consulta il registro. Dovresti visualizzare due messaggi corrispondenti allo script: uno visualizza l’etichetta del flusso di lavoro, l’altro visualizza la data in cui lo script è stato attivato.
Variabili variables
Le variabili sono le proprietà libere degli oggetti instance, task e event. I tipi di JavaScript autorizzati per queste variabili sono string, number e Date.
Variabili dell’istanza instance-variables
Le variabili di istanza (instance.vars.xxx) sono paragonabili alle variabili globali. Sono condivise da tutte le attività.
Variabili attività task-variables
Le variabili dell'attività (task.vars.xxx) sono paragonabili alle variabili locali. Vengono utilizzati solo dall'attività corrente. Queste variabili vengono utilizzate dalle attività persistenti per conservare i dati e talvolta vengono utilizzate per scambiare dati tra i diversi script di una stessa attività.
Variabili di evento event-variables
Le variabili evento (vars.xxx) consentono lo scambio di dati tra le attività elementari di un processo di workflow. Queste variabili vengono passate dall'attività che ha attivato l'attività in corso. È possibile modificarli e definirne di nuovi. Vengono quindi passate alle seguenti attività.
Gli eventi sono le variabili utilizzate più di frequente e devono essere utilizzati al posto delle variabili di istanza.
Alcune variabili evento vengono modificate o lette dalle varie attività. Si tratta di tutte variabili di tipo stringa. Ad esempio, un'esportazione imposta la variabile vars.filename con il nome completo del file appena esportato. Tutte queste variabili lette o modificate sono documentate in Informazioni sulle attività, nelle sezioni Parametri di input e Parametri di output delle attività.
Casi d’uso example
Esempio 1
In questo esempio, viene utilizzata una variabile di istanza per calcolare dinamicamente la percentuale divisa da applicare a una popolazione.
-
Crea un flusso di lavoro e aggiungi un’attività Start.
-
Aggiungi e configura un’attività di codice JavaScript per definire una variabile di istanza.
Esempio:
instance.vars.segmentpercent = 10;
-
Aggiungi un’attività Query e indirizza i destinatari in base alle tue esigenze.
-
Aggiungi un’attività Split e configurala per eseguire un campionamento casuale della popolazione in ingresso. La percentuale di campionamento può essere qualsiasi cosa a tua scelta. In questo esempio è impostato su 50%.
È questa percentuale che viene aggiornata dinamicamente grazie alla variabile di istanza definita in precedenza.
-
All’interno della sezione Script di inizializzazione della scheda Avanzate dell’attività Dividi, definisci una condizione JS. La condizione JS seleziona la percentuale di campionamento casuale della prima transizione proveniente dall’attività Split e la aggiorna a un valore impostato dalla variabile di istanza creata in precedenza.
code language-none activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
-
Assicurati che il complemento sia generato in una transizione separata dell’attività Split e aggiungi le attività End dopo ciascuna delle transizioni in uscita.
-
Salva ed esegui il flusso di lavoro. Il campionamento dinamico viene applicato in base alla variabile dell’istanza.
Esempio 2
-
Prendi il flusso di lavoro dell'esempio precedente e sostituisci lo script dell'attività Codice JavaScript con lo script seguente:
code language-none instance.vars.foo = "bar1" vars.foo = "bar2" task.vars.foo = "bar3"
-
Aggiungi lo script seguente allo script di inizializzazione dell'attività End:
code language-none logInfo("instance.vars.foo = " + instance.vars.foo) logInfo("vars.foo = " + vars.foo) logInfo("task.vars.foo = " + task.vars.foo)
-
Avvia il flusso di lavoro, quindi controlla il registro.
code language-none Workflow finished task.vars.foo = undefined vars.foo = bar2 instance.vars.foo = bar1 Starting workflow (operator 'admin')
Questo esempio mostra che l'attività che segue JavaScript Code accede alle variabili di istanza e alle variabili di evento, ma le variabili di attività non sono accessibili dall'esterno ('undefined').
Chiamata di una variabile di istanza in una query calling-an-instance-variable-in-a-query
Dopo aver specificato una variabile di istanza in un’attività, puoi riutilizzarla in una query del flusso di lavoro.
Per chiamare una variabile instance.vars.xxx = "yyyy" in un filtro, immettere $(instance/vars/xxx).
Ad esempio:
-
Creare una variabile di istanza che definisce il nome interno di una consegna tramite JavaScript code: instance.vars.deliveryIN = "DM42".
-
Crea una query le cui dimensioni di targeting e filtro sono i destinatari. Nelle condizioni, specifica che desideri trovare tutti i destinatari a cui è stata inviata la consegna specificata dalla variabile.
Come promemoria, queste informazioni vengono memorizzate nei registri di consegna.
Per fare riferimento alla variabile di istanza nella colonna Value, immettere $(instance/vars/@deliveryIN).
Il flusso di lavoro restituirà i destinatari della consegna DM42.
Funzioni avanzate advanced-functions
Oltre alle funzioni standard di JavaScript, sono disponibili funzioni speciali per la manipolazione di file, la lettura o la modifica di dati nel database o l'aggiunta di messaggi al registro.
Diario journal
logInfo(message) è stato descritto negli esempi precedenti. Questa funzione aggiunge un messaggio informativo al giornale di registrazione.
logError(message) aggiunge un messaggio di errore al registro. Lo script interrompe l’esecuzione e il flusso di lavoro passa allo stato di errore (per impostazione predefinita, l’istanza viene messa in pausa).
Script di inizializzazione initialization-script
In determinate condizioni, puoi modificare una proprietà di un’attività al momento dell’esecuzione.
La maggior parte delle proprietà delle attività può essere calcolata dinamicamente utilizzando un modello di JavaScript o perché le proprietà del flusso di lavoro consentono esplicitamente di calcolare il valore tramite uno script.
Per altre proprietà, tuttavia, è necessario utilizzare lo script di inizializzazione. Questo script viene valutato prima dell’esecuzione dell’attività. La variabile activity fa riferimento all'attività corrispondente all'attività. Le proprietà di questa attività possono essere modificate e influiranno solo su questa attività.
Argomenti correlati
Esempi di codice JavaScript nei flussi di lavoro