Show Menu
ARGOMENTI×

Script e modelli JavaScript

Gli script consentono di calcolare i valori, scambiare dati tra diverse attività del 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à è attivata e può essere utilizzato per inizializzare le variabili e per modificare le proprietà.
  • L'attività 'codice JavaScript' viene semplicemente utilizzata per eseguire uno script.
  • L'attività "Test" valuta le espressioni JavaScript al fine di attivare la transizione appropriata.
  • La maggior parte dei campi di testo sono modelli JavaScript: Le espressioni JavaScript possono essere incluse tra <%= e %>. Questi campi offrono un pulsante che consente di aprire un elenco a discesa per facilitare l’immissione delle espressioni.

Oggetti esposti

JavaScript eseguiti nel contesto di un flusso di lavoro accedono a una serie di oggetti globali aggiuntivi.
  • instance : Rappresenta il flusso di lavoro in esecuzione. Lo schema di questo oggetto è xtk:workflow .
  • task : Rappresenta le attività in corso di esecuzione. Lo schema di questo oggetto è xtk:workflowTask .
  • event : Rappresenta gli eventi che hanno attivato l'attività da eseguire. Lo schema di questo oggetto è xtk:workflowEvent . Questo oggetto non è inizializzato per le attività di tipo AND-join che sono state 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 in genere contiene un elemento ma può contenere diversi elementi per le attività di tipo AND-join che sono state attivate in base a diverse transizioni.
  • activity : Rappresenta il modello dell'attività da eseguire. Lo schema di questo oggetto dipende dal tipo di attività. Questo oggetto può essere modificato dallo script di inizializzazione, in altri script, le modifiche con effetti indeterminabili.
Le proprietà disponibili per questi oggetti possono essere visualizzate in un elenco a discesa facendo clic sul pulsante situato a destra della barra degli strumenti dello script.
Le proprietà di questi oggetti sono di sola lettura, ad eccezione delle proprietà secondarie della proprietà vars.
La maggior parte di queste proprietà vengono aggiornate solo dopo l'esecuzione di un'attività elementare o quando l'istanza è passivata. I valori letti non corrispondono necessariamente allo stato corrente ma a quello precedente.
Esempio
In questo esempio, e negli esempi seguenti, create un flusso di lavoro che include un'attività codice ​JavaScript e un'attività End , come illustrato nel diagramma seguente.
Fate doppio clic sull'attività del codice ​JavaScript e inserite lo script seguente:
logInfo("Label: " + instance.label)
logInfo("Start date: " + task.creationDate)

La logInfo(message) funzione inserisce un messaggio nel registro.
Fate clic OK per chiudere la procedura guidata di creazione, quindi avviate il flusso di lavoro utilizzando i pulsanti di azione situati in alto a destra dell’elenco dei flussi di lavoro. Al termine dell'esecuzione, consultare il registro. Vengono visualizzati 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

Le variabili sono le proprietà libere degli instance , task e event degli oggetti. I tipi JavaScript autorizzati per queste variabili sono string , number e Date .

Variabili di istanza

Le variabili di istanza ( instance.vars.xxx ) sono paragonabili alle variabili globali. Sono condivisi da tutte le attività.

Variabili attività

Le variabili 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 lo scambio di dati tra i diversi script di una stessa attività.

Variabili evento

Le variabili evento ( vars.xxx ) consentono lo scambio di dati tra le attività elementari di un processo di workflow. Queste variabili vengono trasmesse dall’attività che ha attivato l’attività in corso. È possibile modificarle e definirne di nuove. Vengono quindi trasmesse alle seguenti attività.
Nel caso di attività di tipo AND-join , le variabili vengono unite ma se una stessa variabile viene definita due volte, si verifica un conflitto e il valore rimane indeterminato.
Si tratta delle variabili utilizzate più spesso e dovrebbero essere utilizzate in preferenza per le variabili di istanza.
Alcune variabili di evento vengono modificate o lette dalle varie attività. Sono tutte variabili di tipo stringa. Ad esempio, un’esportazione imposta la vars.filename variabile 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à.

Esempi

Esempio 1
In questo esempio, una variabile di istanza viene utilizzata per calcolare dinamicamente la percentuale di divisione da applicare a una popolazione.
  1. Create un flusso di lavoro e aggiungete un'attività di avvio.
  2. Aggiungete e configurate un'attività codice JavaScript per definire una variabile di istanza.
    Ad esempio: instance.vars.segmentpercent = 10;
  3. Aggiungi un'attività di query e destinatari di destinazione in base alle tue esigenze.
  4. Aggiungete un'attività Split e configuratela per eseguire un campionamento casuale della popolazione in arrivo. La percentuale di campionamento può essere qualsiasi cosa desiderata. In questo esempio viene impostato su 50%.
    È questa percentuale che viene aggiornata dinamicamente grazie alla variabile di istanza precedentemente definita.
  5. All'interno della sezione dello script di inizializzazione della scheda Avanzate dell'attività Split, definire 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.
    activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
    
    
  6. Verificate che il complemento sia generato in una transizione separata dell'attività Split e aggiungete le attività End dopo ciascuna transizione in uscita.
  7. Salvate ed eseguite il flusso di lavoro. Il campionamento dinamico viene applicato in base alla variabile di istanza.
Esempio 2
  1. Eseguite il flusso di lavoro dall'esempio precedente e sostituite lo script dell'attività Codice ​JavaScript con il seguente script:
    instance.vars.foo = "bar1"
    vars.foo = "bar2"
    task.vars.foo = "bar3"
    
    
  2. Aggiungete lo script seguente allo script di inizializzazione dell'attività End :
    logInfo("instance.vars.foo = " + instance.vars.foo)
    logInfo("vars.foo = " + vars.foo)
    logInfo("task.vars.foo = " + task.vars.foo)
    
    
  3. Avviate il flusso di lavoro, quindi controllate il registro.
    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 il codice ​JavaScript accede alle variabili di istanza e di evento, ma le variabili di attività non sono accessibili dall'esterno ('undefined').

Chiamata di una variabile di istanza in una query

Una volta specificata una variabile di istanza in un'attività, potete riutilizzarla in una query del flusso di lavoro.
Pertanto, per chiamare una variabile instance.vars.xxx = "yyy" in un filtro, immettete $(instance/vars/xxx) .
Ad esempio:
  1. Create una variabile di istanza che definisca il nome interno di una consegna tramite JavaScript code : instance.vars.deliveryIN = "DM42" .
  2. Create una query le cui dimensioni di targeting e filtro sono i destinatari. Nelle condizioni, specificate che desiderate trovare tutti i destinatari a cui è stato inviato il recapito specificato dalla variabile.
    Come promemoria, queste informazioni vengono memorizzate nei registri di consegna.
    Per fare riferimento alla variabile di istanza nella Value colonna, immettere $(instance/vars/@deliveryIN) .
    Il flusso di lavoro restituirà i destinatari della distribuzione DM42.

Funzioni avanzate

Oltre alle funzioni JavaScript standard, sono disponibili funzioni speciali per la manipolazione dei file, la lettura o la modifica dei dati nel database o l'aggiunta di messaggi al registro.

Journal

logInfo(message) è stato illustrato negli esempi precedenti. Questa funzione aggiunge un messaggio di informazione al giornale di registrazione.
logError(message) aggiunge un messaggio di errore al registro. Lo script interrompe l'esecuzione e il flusso di lavoro cambia in stato di errore (per impostazione predefinita, l'istanza viene messa in pausa).

Script di inizializzazione

A determinate condizioni, potete modificare una proprietà di un'attività al momento dell'esecuzione.
La maggior parte delle proprietà delle attività possono essere calcolate in modo dinamico, utilizzando un modello JavaScript o perché le proprietà del flusso di lavoro consentono esplicitamente di calcolare il valore da uno script.
Per altre proprietà, tuttavia, è necessario utilizzare lo script di inizializzazione. Questo script viene valutato prima dell'esecuzione dell'attività. La activity variabile fa riferimento all'attività corrispondente all'attività. Le proprietà di questa attività possono essere modificate e interesseranno solo questa attività.