Show Menu
THEMEN×

Scripts/JavaScript-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:
  • Jede Aktivität verfügt über ein Initialisierungscript. Dieses wird bei Aktivierung der Aktivität ausgeführt. Es initialisiert die Variablen oder ändert die Eigenschaften der Aktivität.
  • Die 'JavaScript-Code'-Aktivität dient einzig der Ausführung eines Scripts.
  • Die 'Test'-Aktivität evaluiert JavaScript-Ausdrücke, um die richtige Transition zu aktivieren.
  • Die meisten Textfelder sind JavaScript-Templates: Sie können zwischen <%= und %> JavaScript-Ausdrücke enthalten. Darüber hinaus besteht Zugriff auf eine Dropdown-Liste, die die Erstellung der Ausdrücke erleichtert.

Script-Objekte

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 ist xtk:workflow .
  • task : Stellt die ausgeführten Aufgaben dar. Das Schema dieses Objekts ist xtk:workflowTask .
  • event : Stellt die Ereignisse dar, die die ausgeführte Aufgabe aktiviert haben. Das Schema dieses Objekts ist 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 ist 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.
Die Objekteigenschaften sind schreibgeschützt mit Ausnahme der Unter-Eigenschaften der vars-Eigenschaft.
Die meisten Eigenschaften werden erst nach Ausführung einer elementaren Aufgabe oder zum Zeitpunkt der Instanzpassivierung aktualisiert. Daher entsprechen die abgerufenen Werte nicht unbedingt dem aktuellen, sondern in der Regel dem vorangegangenen Status.
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 Assistenten zu schließen und starten Sie den Workflow mithilfe der Aktionsschaltflächen oben rechts der Workflow-Liste. Rufen Sie nach 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

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

Instanzvariablen ( instance.vars.xxx ) sind mit allgemeinen Variablen vergleichbar und gelten für alle Aktivitäten.

Aufgabenvariablen

Aufgabenvariablen ( task.vars.xxx ) sind mit lokalen Variablen vergleichbar. Nur die laufende Aufgabe kann auf sie zugreifen. Sie werden für persistente Aktivitäten verwendet, um Daten beizubehalten, und gegebenenfalls zum Austausch von Werten zwischen verschiedenen Skripts innerhalb einer Aktivität.

Ereignisvariablen

Ereignisvariablen ( vars.xxx ) ermöglichen den Austausch von Daten zwischen elementaren Aufgaben eines Workflow-Prozesses. Sie werden von der Aufgabe übermittelt, die die laufende Aufgabe aktiviert hat. Es besteht die Möglichkeit, sie zu ändern oder neue Ereignisvariablen zu definieren, die dann an die anschließenden Aktivitäten übermittelt werden.
Bei Verwendung einer UND-Verknüpfung fusionieren die Variablen. Wenn eine Variable mehrmals definiert wurde entsteht ein Konflikt und es wird ein unbestimmter Wert ausgegeben.
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 alle Zeichenfolgenvariablen. 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.

Anwendungsbeispiele

Weitere Anwendungsbeispiele für Workflows sind in diesem Abschnitt verfügbar.
Beispiel 1
In diesem Beispiel wird eine Instanzvariable verwendet, um den auf eine Population anzuwendenden Aufspaltungsprozentsatz dynamisch zu berechnen.
  1. Erstellen Sie einen Workflow und fügen Sie eine Startaktivität hinzu.
  2. Fügen Sie eine JavaScript-Code-Aktivität hinzu und konfigurieren Sie sie, um eine Instanzvariable zu erstellen.
    Beispiel: instance.vars.segmentpercent = 10;
  3. Fügen Sie eine Abfrageaktivität hinzu und wählen Sie entsprechend Ihren Anforderungen Empfänger für die Zielgruppe aus.
  4. 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.
  5. 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.
    activity.transitions.extractOutput[0].limiter.percent = instance.vars.segmentpercent;
    
    
  6. 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.
  7. Speichern und starten Sie den Workflow. Das dynamische Sampling wird entsprechend der Instanzvariablen angewendet.
Beispiel 2
  1. Ausgehend vom Workflow des vorangehenden Beispiels wird das Script der JavaScript-Code -Aktivität durch folgendes Script ersetzt:
    instance.vars.foo = "bar1"
    vars.foo = "bar2"
    task.vars.foo = "bar3"
    
    
  2. Ergänzen Sie dann das Initialisierungsscript der Ende -Aktivität um folgendes Script:
    logInfo("instance.vars.foo = " + instance.vars.foo)
    logInfo("vars.foo = " + vars.foo)
    logInfo("task.vars.foo = " + task.vars.foo)
    
    
  3. Starten Sie den Workflow und rufen Sie das Protokoll auf:
    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').

Instanzvariablen in Abfragen aufrufen

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 an: $(instance/vars/xxx) .
Beispiel:
  1. Erstellen Sie eine Instanzvariable, die über die JavaScript-Code -Aktivität den internen Namen eines Versands definiert: instance.vars.deliveryIN = "DM42"
  2. Erstellen Sie eine Abfrage mit den Empfängern als Zielgruppen- und als Filterdimension. Geben Sie in den Bedingungen an, alle Empfänger zu suchen, an die der von der Variablen bezeichnete Versand gerichtet war.
    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

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

logInfo(message) wurde bereits weiter oben erläutert. Diese Funktion fügt einen Eintrag zum Protokoll hinzu.
logError(message) fügt eine Fehlernachricht zum Protokoll hinzu. Die Ausführung des Scripts wird unterbrochen und der Workflow wechselt in den Fehlerstatus (standardmäßig wird die Instanz ausgesetzt).

Initialisierungsscript

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 ist jedoch das Initialisierungsscript zu verwenden. Dieses Script wird vor Ausführung der Aufgabe ausgewertet. Die Variable activity referenziert die der Aufgabe entsprechende Aktivität. Die Eigenschaften dieses Objekts können geändert werden und betreffen nur diese Aufgabe.