JavaScript in Jitterbit Design Studio
JavaScript ist ab Version 8.24.2 für Skripte verfügbar, die als Teil einer Operation erstellt werden (d. h. als Projektelement). Derzeit ist JavaScript nicht für die Verwendung in Transformationszuordnungen oder im Skript-Pad verfügbar. Unter Skript erstellen finden Sie Anweisungen zum Erstellen eines neuen JavaScript und zur Verwendung des Skript-Builders in Jitterbit.
Wichtig
Für bessere Leistung empfehlen wir, JavaScript nur zu verwenden, wenn kein Jitterbit Script-Äquivalent verfügbar ist.
JavaScript-Unterstützung in Jitterbit
Jitterbits JavaScript-Engine unterstützt den Standard ECMA-262 v5.1 wie von ECMA International spezifiziert. Diese JavaScript-Version bietet native Unterstützung für JSON und die Definition und Verwendung von Funktionen in Skripten. Jitterbits JavaScript entspricht der standardmäßigen JavaScript-Objektmanipulation und dem Verhalten.
Warnung
Obwohl Jitterbit JavaScript basierend auf dem Standard unterstützt, sind nicht alle JavaScript-Funktionen verfügbar. Jitterbit unterstützt diese JavaScript-Funktionen nicht:
- Document Object Model (DOM) Web APIs
- Mozilla integrierte Funktionen und Objekte
- Bestimmte JavaScript-Typen wie
SetundMap - Zugriff auf Java-Objekte
Einfache Datentypen, Arrays und JSON-Objekte werden vollständig unterstützt. Jitterbit-Maps werden auch in JavaScript unterstützt. JavaScript behandelt Jitterbit-Maps als JSON-Objekte, und Jitterbit Scripts behandeln JSON-Objekte als Jitterbit-Maps. Auf JSON-Eigenschaften wird über Map-Schlüssel zugegriffen.
Beispiel: Gegeben ist dieses in JavaScript definierte JSON-Objekt:
var $myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}
};
In einem Jitterbit Script wird auf das Objekt über eine Map zugegriffen. Greifen Sie auf die Eigenschaft "car3" wie folgt zu:
$mycar = $myObj["cars"]["car3"];
Neues JavaScript erstellen
Innerhalb Ihres Projekts in Jitterbit Studio gibt es mehrere Möglichkeiten, ein neues JavaScript als Projektelement zu erstellen:
-
Klicken Sie in der Baumstruktur auf der linken Seite mit der rechten Maustaste auf den Bereich Scripts und wählen Sie New JavaScript.
-
Klicken Sie in einer vorhandenen Operation mit der rechten Maustaste auf einen beliebigen Einfügungspunkt
und wählen Sie Insert > Script. Oder klicken Sie mit der rechten Maustaste auf eine Quelle oder ein Ziel und wählen Sie Insert Before This > Script oder Insert After This > Script. Ein Skript-Symbol wird im Operationsgraph angezeigt. Führen Sie dann einen der folgenden Schritte aus:-
Klicken Sie mit der rechten Maustaste auf das Skript-Symbol und wählen Sie Create New JavaScript.
-
Doppelklicken Sie auf das Skript-Symbol und klicken Sie auf die Schaltfläche Create New JavaScript.
-
Skript-Builder verwenden
Nachdem Sie ein neues JavaScript in Jitterbit erstellt haben, können Sie Ihr JavaScript direkt im Skriptbereich eingeben.
Hinweis
Im Gegensatz zu einem Jitterbit Script, das erfordert, dass das Skript in <trans> ... </trans>-Tags eingebunden ist, sind für Skripte in JavaScript keine Tags erforderlich. Geben Sie stattdessen einfach Ihr JavaScript direkt im Skriptbereich ein.

Funktionen
Die verfügbaren Funktionen in einem JavaScript sind in vier Kategorien verfügbar.

Jitterbit
Diese Kategorie enthält eine Liste von Funktionen, die spezifisch für Jitterbit sind. Diese umfassen eine begrenzte Anzahl von Standard-Jitterbit-Funktionen sowie eine Reihe von JavaScript-Funktionen, die spezifisch für Jitterbit sind.
Derzeit ist eine begrenzte Anzahl der Jitterbit Script-Funktionen zur Verwendung in JavaScript verfügbar. Um eine dieser Jitterbit-Funktionen in Ihrem JavaScript zu verwenden, stellen Sie der Funktion "jitterbit." voran. Diese Jitterbit-Funktionen sind zur Verwendung in JavaScript in Jitterbit verfügbar:
-
Jitterbit.ReadFile(string source_id[, string file_name])
Liest eine Datei aus der angegebenen Quelle, wie in Formula Builder Dateifunktionen beschrieben. Der zurückgegebene Wert ist eine Zeichenkette. Beispiel: In JavaScript mit dieser Jitterbit-Funktion eine Datei lesen:var MyData = Jitterbit.ReadFile("<TAG>Sources/myfile</TAG>"); -
Jitterbit.WriteFile(string target_id, type file_contents[, string file_name])
Schreibt in eine Datei und leert diese automatisch. Es wird kein Wert zurückgegeben. Siehe WriteFile unter Formula Builder Dateifunktionen. -
Jitterbit.DbExecute(string database_id, string sql_str, ...)
Führt eine SQL-Anweisung in einer Datenbank aus und gibt die Ergebnisse zurück. Der zurückgegebene Wert ist eine Zeichenkette. Siehe DBExecute unter Formula Builder Datenbankfunktionen. -
Jitterbit.DbLookup(string database_id, string sql_str)
Führt eine SQL-Anweisung in einer Datenbank aus und gibt das erste Ergebnis zurück, das den angegebenen Kriterien entspricht. Der zurückgegebene Wert ist eine Zeichenkette. Siehe DBLookup unter Formula Builder Datenbankfunktionen. -
Jitterbit.GetVar(string name)undJitterbit.SetVar(string name, string value)Warnung
Die Funktionen
Jitterbit.GetVarundJitterbit.SetVarermöglichen die Verwendung von Variablen, die Punkte im Variablennamen enthalten. Die Verwendung von Punkten in einem Variablennamen wird jedoch nicht empfohlen. Da der Wert beim Setzen der Variablen in eine Zeichenkette konvertiert wird, können diese Funktionen nicht mit komplexen Datentypen wie Arrays, Dictionaries oder JSON-Objekten verwendet werden. Es wird empfohlen, globale Variablen ohne Punkte zu erstellen und stattdessen Unterstriche anstelle von Punkten zu verwenden sowie die Standard-Dollar-Syntax$wie unter Globale Variablen beschrieben zu nutzen.Die Funktion
Jitterbit.GetVarruft eine zuvor zugewiesene Jitterbit-Globalvariable ab (eine Variable mit dem Präfix "Jitterbit"). Der zurückgegebene Wert ist der entsprechende Datentyp.Die Funktion
Jitterbit.SetVarweist einen Wert einer Jitterbit-Globalvariablen zu (eine Variable mit dem Präfix "Jitterbit"). Der zurückgegebene Wert ist eine Zeichenkette. Dieses Beispiel verwendet eine benutzerdefinierte API, die einen Vorgang mit JavaScript ausführt, derJitterbit.GetVarundJitterbit.SetVarverwendet:var response="Hello World"; response += "\r\nOperation Name: " + Jitterbit.GetVar("$jitterbit.operation.name"); response += "\r\ntest_var: " + Jitterbit.GetVar("$jitterbit.api.request.parameters.test_var"); Jitterbit.SetVar("$jitterbit.api.response.headers.content_type","text/plain"); Jitterbit.SetVar("$jitterbit.api.response.headers.test_header", "This is a header test"); Jitterbit.SetVar("$jitterbit.api.response",response);
In dieser Kategorie sind mehrere Funktionen enthalten, die für die Verwendung mit JavaScript in Jitterbit angepasst wurden. Diese Funktionen haben nicht das Präfix "Jitterbit.".
-
WriteToOperationLog
Sendet Ausgaben an das aktuelle Jitterbit-Operationsprotokoll. Wurde für die Verwendung mit JavaScript in Jitterbit entwickelt und funktioniert ähnlich wie die Jitterbit-Funktion, die in Formula Builder Protokollierungs- und Fehlerfunktionen beschrieben ist. -
SetScriptOutputundSetScriptResult
Legt die Ausgabe für das Skript fest. Diese beiden Funktionen sind Aliase und können je nach Vorliebe verwendet werden. Im Gegensatz zu Jitterbit-Skripten, die automatisch den Wert der letzten Zeile zurückgeben, geben Jitterbit-JavaScripts nicht automatisch einen Wert zurück. Mit einer dieser Funktionen kann das Skriptergebnis in JavaScript zurückgegeben werden. Beispiel:var MyVariable = "Hello World"; WriteToOperationLog(MyVariable); SetScriptResult(MyVariable);
Schlüsselwörter
Diese Kategorie enthält eine Liste von JavaScript-Schlüsselwörtern im ECMAScript 5.1-Standard und wird hier zur Referenz aufgeführt.
Häufig verwendete Funktionen
Diese Kategorie enthält eine Liste von JavaScript-Funktionen im ECMAScript 5.1-Standard, die für Jitterbit-Benutzer relevant sein können. Diese Kategorie ist nicht umfassend – Sie können auch andere JavaScript-Funktionen verwenden, die hier nicht aufgeführt sind, wie z. B. JavaScript Array-, Date- und String-Objekte und ihre zugehörigen Funktionen.
Hinweis
Eine umfassende Liste der JavaScript-Funktionen finden Sie im ECMAScript 5.1-Standard unter https://www.ecma-international.org/ecma-262/5.1/.
Math
Diese Kategorie enthält Funktionseigenschaften, die für das JavaScript math-Objekt gemäß dem ECMAScript 5.1-Standard verfügbar sind. Diese Kategorie wird zur einfachen Referenzierung bereitgestellt. Die umfassende Dokumentation finden Sie im ECMAScript 5.1-Standard.
Projektelemente
In JavaScript können Sie auf Projektelemente wie Quellen und Ziele zugreifen, genau wie in einem Jitterbit Script. Obwohl Jitterbit Scripts Jitterbit JavaScripts aufrufen können, ist das Gegenteil derzeit nicht möglich. Jitterbit JavaScripts können keine anderen Scripts oder Operationen aufrufen.
Datenelemente
Dieser Tab bietet Zugriff auf Datenelemente, die global in Ihrem Projekt verfügbar sind, einschließlich Globale Variablen, Variablen und Jitterbit-Variablen.
Hinweis
Wenn ein JavaScript-Script fehlschlägt, gehen alle Änderungen an Variablenwerten innerhalb dieses Scripts verloren. Variablenänderungen werden nur beibehalten, wenn das Script erfolgreich abgeschlossen wird.

Globale Variablen
Alle Jitterbit-Variablen können über Ihr JavaScript aufgerufen und aktualisiert werden. Alle neu definierten globalen JavaScript-Variablen werden zu globalen Jitterbit-Variablen.
Die Syntax zum Festlegen und Abrufen einer globalen Variablen hängt davon ab, ob der Name der globalen Variablen einen Punkt enthält.
Warnung
Die Funktionen Jitterbit.GetVar und Jitterbit.SetVar sind dafür ausgelegt, die Verwendung von Variablen mit Punkten im Variablennamen zu ermöglichen. Die Verwendung von Punkten in einem Variablennamen wird jedoch nicht empfohlen. Da der Wert beim Festlegen der Variablen in eine Zeichenkette konvertiert wird, können diese Funktionen nicht mit komplexen Datentypen wie Arrays, Dictionaries oder JSON-Objekten verwendet werden. Stattdessen wird empfohlen, globale Variablen ohne Punkte zu erstellen und stattdessen Unterstriche anstelle von Punkten zu verwenden sowie die Standard-Syntax mit Dollarzeichen $ zu verwenden, wie unter Globale Variablen beschrieben.
Vermischen Sie nicht Jitterbit.SetVar- und Jitterbit.GetVar-Aufrufe mit $-Präfixen für die Referenzierung derselben Variablen. Die Verwendung beider Zugriffsmethoden für dieselbe Variable kann zu Laufzeitproblemen führen.
Hinweis
Weitere Informationen zu den Funktionen Jitterbit.GetVar und Jitterbit.SetVar finden Sie im vorherigen Abschnitt Funktionen.
Globale Variable festlegen
-
Namen ohne Punkte (empfohlen): Eine globale Variable ohne Punkte im Namen kann mit dem Befehl
var $erstellt oder aktualisiert werden, oder mit einem Dollarzeichen$ohnevaraktualisiert werden.var $:Mitvarund einem Dollarzeichen$am Anfang erstellt das Codebeispielvar $serverURL="https://www.example.com"eine globale Variable namens "serverURL" mit dem Wert "https://www.example.com" oder aktualisiert diese. Neue globale Variablen, die initialisiert werden, müssen dem$mitvarvorangestellt sein.$:Mit einem Dollarzeichen$vorangestellt aktualisiert das Codebeispiel$serverURL="https://www.example.com"dieselbe globale Variable namens "serverURL" mit derselben URL. Dies funktioniert nur für globale Variablen, die bereits initialisiert sind.
-
Namen mit Punkten (nicht empfohlen): Eine globale Variable mit Punkten im Namen kann nur mit der Funktion
Jitterbit.SetVarerstellt oder aktualisiert werden. -
Jitterbit.SetVar:MitJitterbit.SetVarerstellt oder aktualisiert das CodebeispielJitterbit.SetVar("$server.URL", "https://www.example.com")eine globale Variable namens "server.URL"mit dem Wert "https://www.example.com", die als String behandelt wird. Beachten Sie, dass das Dollarzeichen$muss im Variablennamen enthalten sein, sonst wird die Variable nicht global für das Jitterbit-System.
Eine globale Variable abrufen
-
Namen ohne Punkte: Der Wert einer globalen Variable ohne Punkte im Namen lässt sich durch Voranstellen eines Dollarzeichens
$abrufen.$:Mit einem Dollarzeichen$vorangestellt ruft das Codebeispiel$serverURLden Wert der globalen Variable "serverURL"ab.
-
Namen mit Punkten: Der Wert einer globalen Variable mit Punkten im Namen lässt sich nur mit der Funktion
Jitterbit.GetVarabrufen.Jitterbit.GetVar:MitJitterbit.GetVargibt das CodebeispielJitterbit.GetVar("$server.URL")den String-Wert der globalen Variable namens "server.URL"zurück. Beachten Sie, dass das Dollarzeichen$muss im Variablennamen enthalten sein, um den globalen Wert aus dem Jitterbit-System zu lesen.
Projektvariablen
Projektvariablen werden zunächst als Projektelement in Design Studio erstellt. Nach der Erstellung einer Projektvariable können Sie Werte dafür über Design Studio, die Management Console oder Citizen Integrator festlegen. Weitere Informationen zum Erstellen und Aktualisieren von Projektvariablen finden Sie unter Projektvariablen.
In Jitterbit JavaScript hängt die Syntax zum Abrufen des Werts einer Projektvariable davon ab, ob der Name der Projektvariable einen Punkt enthält.
-
Namen ohne Punkte: Der Wert einer Projektvariable ohne Punkte im Namen lässt sich durch ein vorangestelltes Dollarzeichen
$abrufen.$:Mit einem Dollarzeichen$vorangestellt ruft das Codebeispiel$org_netsuite_auth_usernameden Wert der Projektvariable namens "org_netsuite_auth_username"ab.
-
Namen mit Punkten: Der Wert einer Projektvariable mit Punkten im Namen lässt sich nur mit der Funktion
Jitterbit.GetVarabrufen.Jitterbit.GetVar:MitJitterbit.GetVargibt das CodebeispielJitterbit.GetVar("$server.URL")den Wert der Projektvariable namens "server.URL"zurück. Beachten Sie, dass das Dollarzeichen$muss im Variablennamen enthalten sein.
Jitterbit-Variablen
Das Jitterbit-System definiert bestimmte globale Variablen, die in Ihrem Projekt immer verfügbar sind und als Jitterbit-Variablen bekannt sind (auch als vordefinierte globale Variablen bekannt). Diese können verwendet werden, um globale Informationen wie den Namen der aktuellen Quelldatei oder den Namen des aktuellen Vorgangs abzurufen. Diese sind einzeln im Abschnitt Jitterbit-Variablen dokumentiert.
In Jitterbit JavaScript sind von Jitterbit vordefinierte Jitterbit-Variablen nur mit der Funktion Jitterbit.GetVar zugänglich. Dies liegt daran, dass alle von Jitterbit vordefinierten Jitterbit-Variablen Punkte im Variablennamen enthalten.
Jitterbit.GetVar:MitJitterbit.GetVarruft das CodebeispielJitterbit.GetVar("$jitterbit.operation.error")den Wert der Jitterbit-Variable "jitterbit.operation.error"ab. Beachten Sie, dass das Dollarzeichen$muss im Variablennamen enthalten sein.
Plugins
Die Verwendung von Plugins in JavaScript wird derzeit nicht unterstützt. Verwenden Sie stattdessen ein Jitterbit Script und rufen Sie sowohl das Plugin als auch Ihr JavaScript daraus auf.
Testen und Debuggen
In einem JavaScript können Sie Variablenwerte genauso anzeigen und validieren wie in einem Jitterbit Script. Die Option Breakpoints deaktivieren ist jedoch nicht anwendbar, da Debugging in JavaScript nicht verfügbar ist. Beim Testen werden die Ergebnisse des Scripts (wie durch die Funktionen SetScriptOutput oder SetScriptResult festgelegt) im Feld „Result" der Registerkarte „Test" von Design Studio angezeigt.
Engine-Debug-Protokolle
Setzen Sie $javascript.debug auf true in einem Jitterbit-Skript vor einem beliebigen JavaScript, um die Ausführungsdauern und Datengrößen zu protokollieren, die an die Verarbeitungs-Engines gesendet werden. Dieses Protokoll wird in $javascript.debugoutput gespeichert:
Javascript Debug Log
--------------------------------------------------------------------
/// Timer started: Total Execution
# variables to Javascript: 10
Approx. Size: 112
/// Timer started: JavaScript Run
@@@ 10 ms for: JavaScript Run
# variables to JB Engine: 12
Approx. Size: 115
@@@ 69 ms for: Total Execution
Total Script Elapsed Time: 50498ms
Beispiele
Die folgenden JavaScript-Beispiele werden als Referenz bereitgestellt.
JavaScript-Dateifunktionen
// This script will:
// * Generate some random numbers
// * Write them to a target file
// * Then read them back in
// * Write output to the Operation Log
//
// Get 200 random numbers between 1 and 10000
var mystring = getRandomNumbers(200,1,10000);
// Write the data to a file
Jitterbit.WriteFile("<TAG>Targets/tmpdata</TAG>", mystring);
// Read the data back in from the file
var filedata = Jitterbit.ReadFile("<TAG>Sources/tmpdata</TAG>");
// Output to the Operation Log
WriteToOperationLog("Read file, output: " + filedata);
// Displays the data in the result of the Studio test script tab
SetScriptResult(filedata);
/////////////////
function getRandomNumbers(howMany,min,max) {
var output = "";
for (var i=0; i<howMany; i++) {
output = output + getRandomNumber(min,max) + " \n";
}
return output;
}
function getRandomNumber(min,max) {
return Math.floor((Math.random() * max) + min);
}
/////////////////
JavaScript-Mathematikfunktionen
// Create 200 random numbers
var $output = getRandomNumbers(200);
WriteToOperationLog($output);
SetScriptResult($output);
/////////////////
function getRandomNumbers(howMany) {
var output = "";
for (var i=0; i<howMany; i++) {
output = output + Math.floor((Math.random() * 10000) + 1) + " \n";
}
return output;
}
/////////////////
JavaScript-Schleife
// Create 100 random numbers
var $output = "";
for (var i=0; i<100; i++) {
$output = $output + Math.floor((Math.random() * 10000) + 1) + " \n";
}
SetScriptResult($output);
Die maximale Anzahl von Schleifeniterationen in Harmony beträgt 50.000. Die maximale Anzahl von Schleifeniterationen in JavaScript gilt pro Skript, nicht pro Schleife.
Beispielsweise würde ein JavaScript-Skript mit drei Schleifen, bei dem jede Schleife 25.000 Iterationen ausführt, insgesamt 75.000 Iterationen innerhalb des einen Skripts ausführen.
Um die maximale Anzahl der in einem JavaScript-Skript zulässigen Iterationen zu erhöhen, fügen Sie manuell JavaScriptMaxIterations=X hinzu, wobei X größer als 50000 ist.
Weitere Informationen finden Sie unter Konfigurationsdatei bearbeiten (jitterbit.conf).
JavaScript-JSON-Beispiel 1
WriteToOperationLog("\n\n Parsing JSON...");
var jsonData = Jitterbit.ReadFile("<TAG>Sources/JSON_Data</TAG>");
var $jsonObj = JSON.parse(jsonData);
WriteToOperationLog("Value of 'status' is: " + $jsonObj.status);
WriteToOperationLog("Value of 'operation' is: " + $jsonObj.operation);
WriteToOperationLog("Value of 'serverUrl' is: " + $jsonObj.serverUrl);
var $firstOrg = $jsonObj.orgAttrs[0];
WriteToOperationLog("First Org ID is: " + $firstOrg.orgId);
WriteToOperationLog("First Org Name is: " + $firstOrg.orgName);
JavaScript-JSON-Beispiel 2
WriteToOperationLog("\n\n Parsing JSON...");
var jsonData = Jitterbit.ReadFile("<TAG>Sources/JSON_Data</TAG>");
var $jsonObj = JSON.parse(jsonData);
WriteToOperationLog("Status: " + $jsonObj.status);
WriteToOperationLog("Operation: " + $jsonObj.operation);
var orgs = "";
var needComma = false;
for (var i=0; i<$jsonObj.orgAttrs.length; i++) {
if (needComma) orgs = orgs + ",";
orgs = orgs + $jsonObj.orgAttrs[i].orgId;
needComma = true;
}
WriteToOperationLog("Org IDs: " + orgs);
// You can modify existing JSON values
// Any changes will be reflected in the Jitterbit system as a map variable
// Here we'll insert a random number as an authentication token
var randomNumber = Math.floor((Math.random() * 10000) + 1);
$jsonObj.authenticationToken = randomNumber;
JavaScript-JSON-Beispiel 3
Hinweis
Das folgende Beispiel verwendet JSON stringify, um Eigenschaftswertstrukturen einfach zu erstellen und diese dann an eine API zu übertragen.
// This script uses JSON stringify
// to create a property value structure
// and then pushes it to an API
var $complexAPI = {
"properties": [
{
"property": "email",
"value": $email
},
{
"property": "firstname",
"value": $firstname
},
{
"property": "lastname",
"value": $lastname
},
{
"property": "website",
"value": $website
},
{
"property": "phone",
"value": $phone
}
]
}
var $outputJSON = JSON.stringify($complexAPI);
Jitterbit.WriteFile("<TAG>Targets/Example HTTP Post</TAG>", $outputJSON);
WriteToOperationLog($outputJSON);
SetScriptResult($outputJSON);