Scripts/JavaScript-Templates javascript-scripts-and-templates
Scripts dienen zur Berechnung von Werten, dem Austausch von Daten zwischen verschiedenen Aufgaben des Prozesses und der Ausführung von spezifischen Aktionen mithilfe von SOAP-Calls.
In einem Workflow-Diagramm sind Scripts allgegenwärtig:
-
Alle Aktivitäten verfügen über Initialisierungsskripte. Ein Initialisierungsskript wird ausgeführt, wenn die Aktivität aktiviert wird, und kann zum Initialisieren von Variablen und Anpassen der Eigenschaften verwendet werden.
-
Die ‘JavaScript-Code’-Aktivität dient einzig der Ausführung eines Scripts.
-
Die ‘Test’-Aktivität wertet JavaScript-Ausdrücke aus, um die richtige Transition zu aktivieren.
-
Die meisten Textfelder sind JavaScript-Vorlagen: JavaScript-Ausdrücke können zwischen <%= und %> eingefügt werden. Diese Felder enthalten eine Schaltfläche, über die eine Dropdown-Liste zum Eingeben von Ausdrücken geöffnet werden kann.
Script-Objekte objects-exposed
Jedes im Rahmen des Workflows ausgeführte JavaScript greift auf eine Reihe von globalen Objekten zu.
- instance: Stellt den Workflow dar, der ausgeführt wird. Das Schema dieses Objekts lautet xtk:workflow.
- task: Stellt die ausgeführten Aufgaben dar. Das Schema dieses Objekts lautet xtk:workflowTask.
- event: Stellt die Ereignisse dar, die die ausgeführte Aufgabe aktiviert haben. Das Schema dieses Objekts lautet xtk:workflowEvent. Dieses Objekt wird nicht für Aktivitäten vom Typ Und-Verknüpfung initialisiert, die von mehreren Transitionen aktiviert wurden.
- events: Stellt die Liste der Ereignisse dar, die die aktuelle Aufgabe aktiviert haben. Das Schema dieses Objekts lautet xtk:workflowEvent. Diese Tabelle enthält in der Regel ein Element, kann jedoch mehrere Aktivitäten vom Typ Und-Verknüpfung enthalten, die anhand mehrerer Transitionen aktiviert wurden.
- activity: Stellt das Modell der ausgeführten Aufgabe dar. Das Schema dieses Objekts hängt vom Aktivitätstyp ab. Das Objekt kann vom Initialisierungs-Script geändert werden; in anderen Scripten werden Änderungen unbestimmbare Folgen haben.
Die verfügbaren Eigenschaften dieser Objekte sind über die Dropdown-Liste rechts in der Symbolleiste des Scripts abrufbar.
Beispiel
Für das vorliegende Beispiel und die folgenden wird wie unten dargestellt ein Workflow mit einer JavaScript-Code-Aktivität und einem Ende benötigt.
Öffnen Sie die JavaScript-Code-Aktivität und fügen Sie das folgende Script ein:
logInfo("Label: " + instance.label)
logInfo("Start date: " + task.creationDate)
Die Funktion logInfo(message) erstellt einen Eintrag im Protokoll.
Klicken Sie auf OK, um den Erstellungsassistenten zu schließen, und starten Sie dann den Workflow mithilfe der Aktionsschaltflächen oben rechts in der Workflow-Liste. Rufen Sie am Ende der Ausführung das Protokoll auf. Bei korrekter Ausführung werden zwei dem Script entsprechende Nachrichten angezeigt: Ein Eintrag zeigt den Workflow-Titel, der zweite das Datum der Script-Aktivierung.
Variablen variables
Variablen sind freie Eigenschaften der Objekte instance, task und event. Die für diese Variablen zulässigen JavaScript-Typen sind string,number und Date.
Instanzvariablen instance-variables
Instanzvariablen (instance.vars.xxx) sind mit globalen Variablen vergleichbar. Sie werden von allen Aktivitäten geteilt.
Aufgabenvariablen task-variables
Aufgabenvariablen (task.vars.xxx) sind mit lokalen Variablen vergleichbar. Sie werden nur von der aktuellen Aufgabe verwendet. Diese Variablen werden von persistenten Aktivitäten zum Aufbewahren von Daten verwendet und manchmal genutzt, um Daten zwischen den verschiedenen Skripten derselben Aktivität auszutauschen.
Ereignisvariablen event-variables
Ereignisvariablen (vars.xxx) ermöglichen den Austausch von Daten zwischen den elementaren Aufgaben eines Workflow-Prozesses. Diese Variablen werden von der Aufgabe übergeben, die die in Bearbeitung befindliche Aufgabe aktiviert hat. Es ist möglich, sie zu ändern und neue zu definieren. Sie werden dann an die folgenden Aktivitäten weitergeleitet.
Ereignisvariablen sind die am häufigsten verwendeten Variablen und sind Instanzvariablen vorzuziehen.
Bestimmte Ereignisvariablen werden von den verschiedenen Aktivitäten geändert oder gelesen. Dies sind alles String-Variablen. Beispiel: Ein Export definiert die Variable vars.filename mit dem vollständigen Namen der Datei, die gerade exportiert wurde. Alle diese gelesenen oder geänderten Variablen werden in Über Aktivitäten in den Abschnitten Eingabeparameter und Ausgabeparameter der Aktivitäten beschrieben.
Anwendungsfälle example
Beispiel 1
In diesem Beispiel wird eine Instanzvariable verwendet, um den auf eine Population anzuwendenden Aufspaltungsprozentsatz dynamisch zu berechnen.
-
Erstellen Sie einen Workflow und fügen Sie eine Startaktivität hinzu.
-
Fügen Sie eine JavaScript-Code-Aktivität hinzu und konfigurieren Sie sie, um eine Instanzvariable zu erstellen.
Beispiel:
instance.vars.segmentpercent = 10;
-
Fügen Sie eine Abfrageaktivität hinzu und wählen Sie entsprechend Ihren Anforderungen Empfänger für die Zielgruppe aus.
-
Fügen Sie eine Aufspaltungsaktivität hinzu und konfigurieren Sie sie so, dass eine Stichprobe für die eingehende Population vorgenommen wird. Der Stichprobenprozentsatz kann beliebig sein. In diesem Beispiel ist er auf 50 % festgelegt.
Dieser Prozentsatz wird dank der zuvor definierten Instanzvariablen dynamisch aktualisiert.
-
Definieren Sie im Abschnitt „Initialisierungs-Script“ auf dem Tab „Erweitert“ der Aufspaltungsaktivität eine JS-Bedingung. Die JS-Bedingung wählt den zufälligen Stichprobenprozentsatz der ersten Transition aus der Aufspaltungsaktivität aus und aktualisiert ihn auf einen Wert, der von der zuvor erstellten Instanzvariablen festgelegt wurde.
code language-none activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
-
Stellen Sie sicher, dass das Komplement in einer separaten Transition der Aufspaltungsaktivität generiert wird, und fügen Sie nach jeder der ausgehenden Transitionen Endaktivitäten hinzu.
-
Speichern und starten Sie den Workflow. Das dynamische Sampling wird entsprechend der Instanzvariablen angewendet.
Beispiel 2
-
Ausgehend vom Workflow des vorangehenden Beispiels wird das Script der JavaScript-Code-Aktivität durch folgendes Script ersetzt:
code language-none instance.vars.foo = "bar1" vars.foo = "bar2" task.vars.foo = "bar3" -
Ergänzen Sie dann das Initialisierungsscript der Ende-Aktivität um folgendes Script:
code language-none logInfo("instance.vars.foo = " + instance.vars.foo) logInfo("vars.foo = " + vars.foo) logInfo("task.vars.foo = " + task.vars.foo) -
Starten Sie den Workflow und rufen Sie das Protokoll auf:
code language-none Workflow finished task.vars.foo = undefined vars.foo = bar2 instance.vars.foo = bar1 Starting workflow (operator 'admin')
Das Beispiel zeigt, dass die Aktivität JavaScript-Code auf die Instanz- und Ereignisvariablen zugreift, während die Aufgabenvariablen ausserhalb der Aufgaben nicht verfügbar sind (‘undefined’).
Aufrufen von Instanzvariablen in Abfragen calling-an-instance-variable-in-a-query
In Aktivitäten definierte Instanzvariablen können in Workflow-Abfragen wiederverwendet werden.
Geben Sie beispielsweise zum Abruf der Variablen instance.vars.xxx = “yyy” folgende Filterbedingung ein: $(instance/vars/@xxx).
Beispiel:
-
Erstellen Sie eine Instanzvariable, die über die JavaScript-Code-Aktivität den internen Namen eines Versands definiert: instance.vars.deliveryIN = “DM42”
-
Erstellen Sie eine Abfrage, deren Zielgruppenbestimmungs- und Filterdimensionen die Empfängerinnen und Empfänger sind. Geben Sie in den Bedingungen an, dass Sie alle Empfängerinnen und Empfänger suchen möchten, denen der durch die Variable spezifizierte Versand gesendet wurde.
Hinweis: Diese Informationen werden in den Versandlogs gespeichert.
Geben Sie in der Spalte Wert $(instance/vars/@deliveryIN) an, um sich auf die Instanzvariable zu beziehen.
Der Workflow gibt die Empfänger aus, die den Versand DM42 erhalten haben.
Erweiterte Funktionen advanced-functions
Neben den Standard-JavaScript-Funkionen stehen spezifische Funktionen zur Verfügung, um Dateien zu bearbeiten, Daten der Datenbank zu lesen oder zu ändern oder Nachrichten in das Protokoll einzutragen.
Protokoll journal
logInfo(message) wurde bereits in den obigen Beispielen erläutert. Diese Funktion fügt dem Protokoll eine Informationsnachricht hinzu.
logError(message) fügt dem Protokoll eine Fehlermeldung hinzu. Die Ausführung des Skripts wird unterbrochen und der Workflow wechselt in den Fehlerstatus (standardmäßig wird die Instanz pausiert).
Initialisierungsskript initialization-script
Eine Aktivitätseigenschaft kann unter bestimmten Bedingungen zum Zeitpunkt der Ausführung geändert werden.
Die Mehrzahl der Aktivitätseigenschaften kann dynamisch berechnet werden, entweder unter Verwendung eines JavaScript-Templates oder weil die Workflow-Eigenschaften die Berechnung des Werts durch ein Script explizit erlauben.
Für andere Eigenschaften müssen Sie jedoch das Initialisierungsskript verwenden. Dieses Skript wird vor Ausführung der Aufgabe ausgewertet. Die Variable activity verweist auf die der Aufgabe entsprechende Aktivität. Die Eigenschaften dieses Objekts können geändert werden und betreffen nur diese Aufgabe.
Verwandte Themen
Beispiele für JavaScript-Code in Workflows