Jitterbit Script Skriptsprache im Jitterbit Design Studio
Die Skriptsprache Jitterbit kann in allen Arten von Scripts innerhalb von Jitterbit verwendet werden, einschließlich Scripts, die als Projektelemente innerhalb von Operationen erstellt werden, sowie Scripts innerhalb von Transformation. Siehe Script erstellen für Anweisungen zum Erstellen eines Script und zur Verwendung des Script Generators in Jitterbit.
Syntax
Jedes Jitterbit Script ist immer umgeben von einer Reihe von <trans>
...</trans>
Tags. Dies gilt für Scripts, die als Projektelemente erstellt werden, sowie für „Formula Builder“ Scripts, die innerhalb von Transformation erstellt werden.
Notiz
Das Ergebnis, das in einem Jitterbit Script oder einer Formel zurückgegeben wird, ist der zurückgegebene Wert der letzten Anweisung des Script vor dem schließenden </trans>
Tag.
Innerhalb des <trans>
...</trans>
Tags, "//" markiert den Anfang eines Kommentars und wirkt sich auf den Text bis zum Ende dieser Zeile aus. Kommentare sind weder Teil des ausgeführten Script noch des transformierten Ergebnisses.
Ein einzeiliger Kommentar könnte beispielsweise folgendermaßen aussehen:
<trans>
// This is a comment
DbLookup(...)
</trans>
Sie können auch einen Blockkommentar verwenden:
<trans>
/* This is a multi-line comment
This line is also a comment
This is the final line of the comment */
DbLookup(...)
</trans>
Darüber hinaus unterstützt Jitterbit reguläre Ausdrücke als Mittel zum Angeben und Erkennen von Textzeichenfolgen, einschließlich bestimmter Zeichen, Wörter oder Zeichenmuster. Jitterbit unterstützt die reguläre Ausdruckssyntax der Programmiersprache Perl 5.
<trans>
RegExMatch(<input>,<expression>,...)
</trans>
Weitere Informationen finden Sie unter http://www.boost.org/doc/libs/1_49_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html.
Funktionen und Datenelemente
Ein Jitterbit Script besteht aus integrierten Funktionen, Datenelementen und auszuführender Logik, getrennt durch Semikolon (;). Die Jitterbit Script hat nur wenige Kontrollstrukturen, dafür aber viele Funktionen, die speziell für die Datenmanipulation entwickelt wurden.
Funktionen
Alle integrierten Jitterbit-Funktionen, die beim Erstellen eines Script unter der Tab Funktionen verfügbar sind, stehen als Referenz unter Formel-Generator zur Verfügung.
Globale Datenelemente
Sie können beim Erstellen eines Script auf alle globalen Datenelemente unter der Tab Datenelemente zugreifen. Dazu gehören globale Variablen, Projektvariablen und Jitterbit-Variablen. Siehe Globale Variablen und Projektvariablen für weitere Informationen. Jitterbit-Variablen sind einzeln unter Jitterbit-Variablen dokumentiert.
Auf globale Datenelemente kann entweder zugegriffen werden, indem vor dem Elementnamen ein $-Zeichen eingegeben wird, oder indem der Set
Und Get
Funktionen.
Variablennamen können aus Buchstaben (a-z, A-Z), Zahlen (0-9), Punkten und Unterstrichen bestehen. Andere Zeichen sind nicht zulässig. (Beachten Sie, dass im Fall von lokalen Variablen, das Punktzeichen ist nicht zulässig.)
Dieses Beispiel referenziert ein globales Datenelement mithilfe von $
So erstellen Sie ein globales Wörterbuch:
<trans>
$org.lookup.currency=Dict();
$org.lookup.currency[1]="USD";
$org.lookup.currency[2]="EUR";
</trans>
Hier wird ein globales Datenelement zu einem anderen globalen Datenelement unter Verwendung des Set
Und Get
Funktionen:
<trans>
Set("op2", Get("op"));
</trans>
Beachten Sie, dass Sie bei bestimmten Jitterbit-Variablen, da sie Datenelemente beschreiben, die einen Bindestrich enthalten, ein Zeichen, das in Variablennamen nicht zulässig ist, auf diese verweisen müssen, indem Sie entweder Set
oder Get
Funktionen:
<trans>
Get("jitterbit.source.http.response.header.Content-Type");
</trans>
Quelldatenelemente
Wenn Sie ein im Rahmen der Transformation erstelltes Script verwenden, haben Sie auch Zugriff auf Quelldatenelemente. Quelldatenelemente dienen zur Referenzierung von Quelldaten und werden über ihre Pfade im Quellbaum referenziert. Weitere Informationen finden Sie unter Script erstellen.
Dieses Beispiel weist ein Quelldatenelement einem globalen Datenelement zu:
<trans>
$org.calculate.operand1=root$transaction.request$body$Calculate$input.Operand1$;
</trans>
Lokale Datenelemente
Sie können auch lokale Datenelemente, auch lokale Variablen genannt, verwenden, die Sie im selben Script erstellen und verwenden. Siehe Lokale Variablen für weitere Informationen. Die Eigenschaften lokaler Datenelemente sind wie folgt:
- Ein lokales Datenelement wird nur innerhalb des Ausdrucks definiert und verwendet; sobald sein Wert im Ausdruck zugewiesen ist, wird das lokale Datenelement gelöscht. Daher besteht kein Grund zur Sorge, wenn es zwischen dem Wert eines lokalen Datenelements im aktuellen Ausdruck und den Werten anderer Ausdrücke zu Konflikten kommt.
- Das lokale Datenelement kann nicht definiert oder abgerufen werden durch
set()
/get()
Funktionen. RunScript()
Sie können dem Script Argumente übergeben, zBRunScript(SCRIPT_ID, 5, "abc",...)
. Werte im Script können vordefinierten lokalen Variablen _1, _2... zugewiesen werden. In diesem Beispiel stellt _1 den ganzzahligen Wert 5 dar, während _2 den Zeichenfolgenwert „abc“ darstellt. Die lokale Variable muss definiert werden, bevor auf sie verwiesen werden kann, außer im Fall der oben beschriebenen Eingabeargumente _1, _2,....- Der
ArgumentList()
Die Funktion steht zur Neudefinition einer Liste lokaler Datenelemente als Eingabeargumente zur Verfügung.
Datentypen
Alle Quelldatenelemente und globalen Datenelemente, die nicht null sind, haben einen ihnen zugeordneten Typ. Jitterbit unterstützt die folgenden Datentypen: Integer, Long, Float, Double, Date, String, Boolean, Timespan, Bit, Binary und Array. Datenelementtypen können mithilfe der Funktionen in Conversion geändert werden Kategorie.
Arrays
Ein Array ist eine Sammlung von Datenelementen. Jedes Mitglied in der Sammlung kann von jedem unterstützten Typ sein, einschließlich Arrays. Auf die Mitglieder eines Arrays kann über den Befehl Get()
Und Set()
Methoden oder die Verwendung von []
array
Syntax. Arrays sind nullindiziert und Indizes sind numerisch, sequenziell und können nicht übersprungen werden.
Sie können auch Arrays globaler Variablen erstellen. Eine globale Array-Variable ist ein Array anderer globaler Variablen, die wiederum Arrays sein können.
Festlegen eines Arrays
Sie können Werte in einem Array mit festlegen Set()
Methode mit dieser Syntax:
type Set(string name, type value [, int index1, int index2, ...])
Dies setzt den Wert der globalen Variable mit dem angegebenen Namen auf value und gibt den Wert zurück. Wenn das erste Argument ein Array oder der Name eines Array-Datenelements ist, können Sie den Wert eines Array-Elements festlegen, indem Sie dessen Index (oder Indizes für mehrdimensionale Arrays) als drittes Argument angeben.
Nicht alle Elemente in einem Array müssen vom gleichen Typ sein. Sie können beispielsweise ein Array erstellen, das ein Datum, eine Ganzzahl und eine Zeichenfolge enthält. Sie können sogar Arrays innerhalb anderer Arrays erstellen.
Dieses Beispiel erstellt ein Array mit drei Elementen unterschiedlichen Typs, wobei jeder Eintrag das aktuelle Datum und die aktuelle Uhrzeit darstellt:
<trans>
$right_now = Now();
Set($now, $right_now, 0);
Set($now, Long($right_now), 1);
Set($now, String($right_now), 2);
</trans>
Da Arrays nullindiziert sind, befindet sich das erste Element am Index 0 und das letzte Element am Index (Größe -1). Um Daten an ein Array anzuhängen, übergeben Sie entweder einen negativen Indexwert oder die Größe des Arrays (Length($arr)
). Das Setzen eines Elements mit einem Index, der größer als die Größe des Arrays ist, führt zu einem Index-Out-of-Range-Fehler. Das Setzen von Nicht-Array-Datenelementen kann auch mit dem $de_name
Syntax.
Hier sind Beispiele zum Festlegen von Werten in einem Array:
// Set the n:th entry in an array to the string "value"
Set($arr, "value", n-1);
// Another way to set the n:th entry an array
Set($arr, "value", Length($arr));
// Sets the value to a new element at the end of the array
Set($arr, "value", -1);
// Set the n:th entry of the m:th array
Set($record_set, "value", m-1, n-1);
Hinweis
Weitere Syntax, die zum Definieren von Werten in einem Array verwendet werden kann, finden Sie im Abschnitt Wörterbuch- und Array-Funktionen.
Auf ein Array zugreifen
Sie können auf die Elemente eines Arrays zugreifen, indem Sie Get()
Methode:
type Get(string name[, int index1, int index2, ...])
Dies gibt den Wert der globalen Variable mit dem angegebenen Namen zurück. Wenn das erste Argument ein Array oder der Name eines Array-Datenelements ist, können Sie ein bestimmtes Element abrufen, indem Sie dessen Index (oder Indizes für ein mehrdimensionales Array wie einen Datensatz) als zweites Argument angeben.
Arrays sind nullindiziert. Um auf das Array zuzugreifen, müssen Sie den Index des Arrays als zweites Argument angeben n:th
Element eines Arrays namens "arr"
, verwenden Get("arr", n-1)
. Bei mehrdimensionalen Arrays müssen Sie alle Indizes angeben. Für den Zugriff auf die n:th
Spalte der m:th
Zeile in einem Array namens ResultSet
du würdest verwenden Get("ResultSet", m-1, n-1)
. Der Versuch, ein Element über das Ende des Arrays hinaus abzurufen, führt zu einem Array-Außer-Bereich-Fehler.
Dies sind Beispiele für das Abrufen von Werten aus einem Array:
// Return the third array element
Get($arr, 2);
// Another way to return the third array element
Get("arr", 2);
// Get the n:th element of the m:th array in arr
Get($arr, m-1, n-1);
Dieses Beispiel zeigt, wie Sie zunächst ein Script erstellen, das ein Array erstellt und zurückgibt. Der zweite Block zeigt, wie dieses Script ausgeführt und der zurückgegebene Wert einer Variablen zugewiesen wird.
<trans>
// Script to build and return an array
a = Array();
a[Length(a)] = "A";
a[Length(a)] = "B";
a[Length(a)] = "C";
a;
</trans>
<trans>
// Call the script to retrieve the array
$Arr = RunScript("<TAG>Scripts/Build Array</TAG>";
</trans>
Bestimmte Formel-Builder Funktionen geben Arrays zurück. Zum Beispiel: SelectNodesFromXMLAny()
gibt die Ergebnisse einer XPath Abfrage als Array zurück DbExecute()
Funktion gibt einen Datensatz als zweidimensionales Array zurück: zuerst Zeilen, dann Spalten. Dieses Beispiel gibt die ausgewählten Daten als Array von Arrays zurück (dargestellt durch die ausgewählten Zeilen und Spalten):
<trans>
$resultSet = DbExecute("Project Name/Sources/Database Name", "select Result from SimpleCalculatorResults");
$firstRow = Get($resultSet, 0);
$thirdColumnOfSecondRow = $resultSet[2][3];
$secondColumnOfThirdRow = Get($resultSet, 3, 2);
</trans>
Hinweis
Weitere Syntax, die zum Zugriff auf Werte in einem Array verwendet werden kann, finden Sie im Abschnitt Wörterbuch- und Array-Funktionen.
Wörterbücher
In Jitterbit ist ein Wörterbuch ein spezieller Typ eines globalen Variablenarrays, das Key-Value Paare enthält. Die Schritte und Funktionen sind:
-
Initialisieren Sie das Wörterbuch mit Dict Funktion:
$d = Dict();
-
Daten mit einem Schlüssel und einem Wert laden:
$d['4011'] = 'Banana'; $d['4063'] = 'Tomato';
-
Überprüfen Sie mit
Haskey
, ob der Schlüssel bereits im Wörterbuch vorhanden ist Funktion:HasKey($d,'4011'); // Returns true
Im Beispiel haben wir bereits den Schlüssel '4011' geladen, also
HasKey
würde zurückkehrentrue
.HasKey($d,'4089'); // Returns false
Wenn der Schlüssel nicht bereits geladen wurde, z. B. „4089“,
HasKey
würde zurückkehrenfalse
. -
Suchen Sie den Wert im Wörterbuch, indem Sie den Schlüssel übergeben und den Wert zurückerhalten:
$d['4011']; // Returns 'Banana'
In diesem Beispiel wäre der zurückgegebene Wert
Banana
.
Beachten Sie bei Wörterbüchern die folgenden Merkmale:
- Der Umfang der Wörterbücher ist auf den Workflow beschränkt. Wenn beispielsweise eine Operation ein Wörterbuch mit 10.000 Datensätzen lädt, werden nur die Operationen, die mit den Pfaden „Bei Erfolg“ oder „Bei Fehler“ verknüpft sind, oder mit dem
RunOperation()
Funktion - hat Zugriff auf dieses Wörterbuch. Wenn eine Operation jedoch chunking und Threading verwendet und eine Transformation hat, die ein Wörterbuch füllt, ist dieses Wörterbuch inkonsistent. Dies liegt daran, dass Jitterbit keine Werte nimmt, die Variablen von mehreren Operation zugewiesen wurden, und sie zu einem einzigen Wertesatz verkettet. Dies gilt für alle globalen Variablen und Arrays. Um dieses Problem zu vermeiden, verwenden Sie die Standardwerte für chunking/Threading, wenn Sie eine Operation erstellen, die Wörterbücher füllt. - Wörterbücher sind sehr schnell beim Finden von Schlüsseln und Zurückgeben von Werten, da sie eine binäre Suche verwenden. Ein Schlüssel kann normalerweise nach fünf bis sechs Versuchen gefunden werden. Vergleichen Sie diese Suche dagegen mit dem Aufwand, der erforderlich ist, um ein Array mit 10.000 Datensätzen zu durchlaufen, um einen bestimmten Schlüssel zu finden.
- Wörterbücher werden so geschrieben, dass sie den für die Verarbeitung verfügbaren Serverspeicher nicht wesentlich beeinträchtigen.
Betreiber
Dies ist eine Zusammenfassung der vom Jitterbit Script unterstützten Operatoren. Das Jitterbit Script versucht, die Argumente zu konvertieren, um die Operation zu aktivieren. Wenn dies nicht möglich ist, wird ein Fehler gemeldet.
Arithmetik
Operator | Beschreibung |
---|---|
+ | Addiert zwei Zahlen oder verkettet zwei Zeichenfolgen. Wenn eine Zeichenfolge zu etwas anderem addiert wird, werden beide Argumente in Zeichenfolgen umgewandelt. Wenn beide Argumente Zahlen sind, ist das Ergebnis vom Typ „Double“. |
++ | Erhöht den Wert um 1. Beispiel: $count++; Wenn ein Präfix vorhanden ist, geht die Zuweisung der Erhöhung voraus. |
+= | Verkettet einen String oder fügt Zahlen zur Zielvariable hinzu. Beispiel: $count+=2 ist das gleiche wie $count=$count+2 . |
- | Subtrahiert zwei Zahlen. Das Ergebnis ist vom Typ „Double“. |
-- | Dekrementiert einen Wert um 1. Beispiel: $count--; Wenn ein Präfix vorhanden ist, geht die Zuweisung der Dekrementierung voraus. |
-= | Subtrahiert Zahlen von der Zielvariable. Beispiel: $count-=2 ist das gleiche wie $count=$count-2 . |
/ | Dividiert zwei Zahlen. Das Ergebnis ist vom Typ „Double“. |
* | Multipliziert zwei Zahlen. Das Ergebnis ist vom Typ „Double“. |
^ | Potenziert das erste Argument mit dem zweiten Argument. Wenn beide Argumente Ganzzahlen sind, ist das Ergebnis eine Ganzzahl. |
Logisch
Operator | Beschreibung |
---|---|
& | Logischer UND-Operator. Das Ergebnis ist vom Typ Boolean && kann ebenfalls verwendet werden. Dies ist immer ein Kurzschlussoperator, d. h. wenn das linke Argument als „false“ ausgewertet wird, wird das rechte Argument nicht ausgewertet. |
| | Logischer ODER-Operator. Das Ergebnis ist vom Typ Boolean || kann ebenfalls verwendet werden. Dies ist immer ein Kurzschlussoperator, d. h. wenn das linke Argument als wahr ausgewertet wird, wird das rechte Argument nicht ausgewertet. |
Vergleich
Verwenden Sie die folgenden Operatoren, um die Werte zweier Argumente desselben Datentyps zu vergleichen:
Operator | Beschreibung |
---|---|
= | Weist einer Variablen zu. Das rechte Argument wird dem linken Argument zugewiesen. |
== | Äquivalenzoperator. Gibt „true“ zurück, wenn die Argumente gleich sind. Gibt „false“ zurück, wenn sie nicht gleich sind. |
!= | Nicht äquivalenter Operator. Gibt „true“ zurück, wenn die Argumente nicht gleich sind. Gibt „false“ zurück, wenn sie gleich sind. |
< > <= >= | Vergleichsoperatoren. Gibt „true“ oder „false“ zurück. |
Hinweis
Das Vergleichen von Argumenten unterschiedlicher Datentypen wird nicht unterstützt.
Negation
Operator | Beschreibung |
---|---|
! | Negationsoperator. Wandelt einen wahren Wert in einen falschen um und umgekehrt. Beispiel:
|
Anordnung
Operator | Beschreibung |
---|---|
{ } | Wird zum Erstellen eines Arrays verwendet. Beispiele:
|
Escape-Sequenzen
Jitterbit erkennt diese Escape-Sequenzen, wenn sie in Literalzeichenfolgen verwendet werden:
Sequenz | Definition |
---|---|
\t | Registerkarte |
\r | Wagenrücklauf |
\n | Neue Zeile |
Literale Zeichenfolgen müssen in doppelte Anführungszeichen ("
) oder einfache Anführungszeichen ('
).
Das umgebende Anführungszeichen muss mit einem Backslash maskiert werden, wenn es innerhalb der Zeichenfolge verwendet wird. Backslashs müssen möglicherweise maskiert werden, wenn sie mit einem der Escape-Sequenzzeichen verwendet werden. Beispiel:
$str = "String with line break.\nThat's the last line.";
$str = 'Tony "The Gun" Marcello';
$str = "Tony \"The Gun\" Marcello";
$path = "C:\\tacos"
Kontrollstrukturen
Die Jitterbit Script Skriptsprache enthält keine Steueranweisungen wie if
oder while
Schleifen. Stattdessen können Sie Jitterbit-Funktionen verwenden, um die gleiche Funktionalität zu erreichen. Siehe die Case
, If
, Und While
Funktionen unter Logische Funktionen. Der Eval
Funktion unter Allgemeine Funktionen kann als „Try-Catch“-Anweisung verwendet werden.
Notiz
- Die maximal zulässige Anzahl von Schleifeniterationen in Harmony beträgt 50.000.
- Die maximale Anzahl von Schleifeniterationen in der Jitterbit Script Skriptsprache ist pro einzelne Schleife. Informationen zum Erhöhen der zulässigen Anzahl von Iterationen pro Schleife in einem Jitterbit Script Script finden Sie unter Jitterbit.scripting.while.max_iterations in Skripting von Jitterbit-Variablen.
- Die maximale Anzahl von Schleifeniterationen in JavaScript beträgt pro Script (Aggregat aller Schleifen innerhalb eines Script). Informationen zum Erhöhen der maximalen Anzahl von Schleifeniterationen in JavaScript finden Sie unter Javascript - Schleife in JavaScript.