JavaScript im Jitterbit Design Studio
JavaScript ist ab Version 8.24.2 verfügbar für Scripts, die als Teil einer Operation (also als Projektelement) erstellt wurden. Derzeit ist JavaScript für die Verwendung in Transformation oder im Script nicht verfügbar. Siehe Erstellen eines Script für Anweisungen zum Erstellen eines neuen JavaScript und zur Verwendung des Script Generators in Jitterbit.
Wichtig
Für eine verbesserte Leistung empfehlen wir, JavaScript nur zu verwenden, wenn ein Jitterbit Script Äquivalent ist nicht verfügbar.
JavaScript-Unterstützung in Jitterbit
Die Javascript-Engine von Jitterbit unterstützt ECMA-262 v5.1 Standard gemäß ECMA International. Diese Version von JavaScript bietet native Unterstützung für JSON sowie die Definition und Verwendung von Funktionen in Scripts. Das JavaScript von Jitterbit entspricht der standardmäßigen Objektmanipulation und dem standardmäßigen Verhalten von JavaScript.
Warnung
Obwohl Jitterbit JavaScript auf Basis des Standards unterstützt, sind nicht alle JavaScript-Funktionen verfügbar. Jitterbit unterstützt diese JavaScript-Funktionen nicht:
- Document Object Model (DOM)-Web-APIs
- Integrierte Funktionen und Objekte von Mozilla
- Bestimmte JavaScript-Typen wie
Set
UndMap
- 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.
Nehmen wir beispielsweise dieses in JavaScript definierte JSON-Objekt:
var $myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}
};
In einem Jitterbit Script würde das Objekt über eine Karte aufgerufen. Der Zugriff erfolgt über "car3"
Eigenschaft wie diese:
$mycar = $myObj["cars"]["Auto3"];
Erstellen Sie ein neues JavaScript
Innerhalb Ihres Projekts in Jitterbit Studio gibt es mehrere Möglichkeiten, ein neues JavaScript als Projektelement zu erstellen:
-
Klicken Sie im Baum links mit der rechten Maustaste auf den Abschnitt Scripts und wählen Sie Neues JavaScript.
-
Klicken Sie innerhalb einer bestehenden Operation mit der rechten Maustaste auf einen beliebigen Einfügepunkt und wählen Sie Einfügen > Script. Oder klicken Sie mit der rechten Maustaste auf eine Quelle oder ein Ziel und wählen Sie Davor einfügen > Script oder Danach einfügen > Script. Im Operation wird ein Script angezeigt. Führen Sie dann einen der folgenden Schritte aus:
-
Klicken Sie mit der rechten Maustaste auf das Script und wählen Sie Neues JavaScript erstellen.
-
Doppelklicken Sie auf das Script und klicken Sie auf die Schaltfläche Neues JavaScript erstellen.
-
Script Generator verwenden
Nachdem Sie in Jitterbit ein neues JavaScript erstellt haben, können Sie Ihr JavaScript direkt im Script eingeben.
Notiz
Im Gegensatz zu einem Jitterbit Script, das erfordert, dass das Script umschlossen wird in <trans> ... </trans>
Tags, für Scripts in JavaScript sind keine Tags erforderlich. Geben Sie stattdessen Ihr JavaScript einfach direkt in den Script ein.
Funktionen
Die in JavaScript verwendbaren Funktionen sind in vier Kategorien unterteilt.
Jitterbit
Diese Kategorie enthält eine Liste von Jitterbit-spezifischen Funktionen. Dazu gehören eine begrenzte Anzahl von Standard-Jitterbit-Funktionen sowie eine Reihe von Jitterbit-spezifischen JavaScript-Funktionen.
Derzeit ist eine begrenzte Anzahl der Jitterbit Script Skriptfunktionen für die Verwendung in JavaScript verfügbar. Um in Ihrem JavaScript auf eine dieser Jitterbit-Funktionen zuzugreifen, stellen Sie der Funktion das Präfix "jitterbit.
". Diese Jitterbit-Funktionen sind für die Verwendung in JavaScript in Jitterbit verfügbar:
-
Jitterbit.ReadFile(string source_id[, string file_name])
Liest eine Datei aus der angegebenen Quelle, wie im Formel-Generator Dateifunktionen beschrieben.. Der zurückgegebene Wert ist eine Zeichenfolge. Verwenden Sie beispielsweise in JavaScript diese Jitterbit-Funktion zum Lesen einer Datei: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 die Datei automatisch. Es wird kein Wert zurückgegeben. Siehe WriteFile unter Formel-Generator Dateifunktionen. -
Jitterbit.DbExecute(string database_id, string sql_str, ...)
Führt eine SQL-Anweisung für eine Datenbank aus und gibt die Ergebnisse zurück. Der zurückgegebene Wert ist eine Zeichenfolge. Siehe DBExecute unter Formel-Generator Datenbankfunktionen. -
Jitterbit.DbLookup(string database_id, string sql_str)
Führt eine SQL-Anweisung für eine Datenbank aus und gibt das erste Ergebnis zurück, das den angegebenen Kriterien entspricht. Der zurückgegebene Wert ist eine Zeichenfolge. Siehe DBLookup unter Formel-Generator Datenbankfunktionen. -
Jitterbit.GetVar(string name)
UndJitterbit.SetVar(string name, string value)
Warnung
Die
Jitterbit.GetVar
UndJitterbit.SetVar
Funktionen sind so konzipiert, dass sie die Verwendung von Variablen ermöglichen, die Punkte im Variablennamen enthalten. Die Verwendung von Punkten in einem Variablennamen wird jedoch nicht empfohlen. Da der Wert beim Festlegen der Variablen in eine Zeichenfolge konvertiert wird, können diese Funktionen nicht mit komplexen Datentypen wie Arrays, Wörterbüchern oder JSON-Objekten verwendet werden. Stattdessen wird empfohlen, globale Variablen ohne Punkte zu erstellen und stattdessen Unterstriche anstelle von Punkten und das Standard-Dollarzeichen zu verwenden$
Syntax wie in Globale Variablen beschrieben.Die
Jitterbit.GetVar
Funktion ruft eine zuvor zugewiesene globale Jitterbit-Variable ab (eine Variable mit dem Präfix "Jitterbit
"). Der zurückgegebene Wert ist der entsprechende Datentyp.Der
Jitterbit.SetVar
Funktion weist einer globalen Jitterbit-Variable (einer Variable mit dem Präfix "Jitterbit
"). Der zurückgegebene Wert ist eine Zeichenfolge. In diesem Beispiel wird eine benutzerdefinierte API verwendet, die einen Operation ausführt, der ein JavaScript enthält,Jitterbit.GetVar
UndJitterbit.SetVar
:var response="Hello World"; response += "\r\nProject name: " + Jitterbit.GetVar("$jitterbit.operation.project_name"); 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 sind. Diese Funktionen haben kein Präfix „Jitterbit.
".
-
WriteToOperationLog
Sendet die Ausgabe an das aktuelle Jitterbit Operation. Erstellt für die Verwendung mit JavaScript in Jitterbit und funktioniert ähnlich wie die im Formel-Generator Protokollierungs- und Fehlerfunktionen beschriebene Jitterbit-Funktion.. -
SetScriptOutput
UndSetScriptResult
Legt die Ausgabe für das Script fest. Diese beiden Funktionen sind Aliase und können je nach Wunsch verwendet werden. Im Gegensatz zu Jitterbit Scripts, die automatisch den Wert der letzten Zeile zurückgeben, geben Jitterbit-JavaScripts nicht automatisch einen Wert zurück. Sie können jede dieser Funktionen in Ihrem JavaScript verwenden, um das Script zurückzugeben. Beispiel:var MyVariable = "Hello World"; WriteToOperationLog(MyVariable); SetScriptResult(MyVariable);
Schlagwörter
Diese Kategorie enthält eine Liste von JavaScript-Schlüsselwörtern im ECMAScript 5.1-Standard und ist der Einfachheit halber hier aufgeführt.
Allgemeine 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 vollständig - Sie können 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/.
Mathematik
Diese Kategorie enthält Funktionseigenschaften, die für JavaScript verfügbar sind math
Objekt, wie im ECMAScript 5.1-Standard angegeben. Diese Kategorie dient der leichteren Bezugnahme; die umfassende Dokumentation finden Sie im ECMAScript 5.1-Standard.
Projektelemente
In JavaScript können Sie auf Projektelemente wie Quellen und Ziele genauso zugreifen wie in einem Jitterbit Script. Obwohl Jitterbit Scripts Jitterbit-JavaScripts aufrufen können, gilt der umgekehrte Weg derzeit nicht. Jitterbit-JavaScripts können keine anderen Scripts oder Vorgänge aufrufen.
Datenelemente
Über diese Tab haben Sie Zugriff auf Datenelemente, die global für die Verwendung in Ihrem gesamten Projekt verfügbar sind, darunter Globale Variablen, Variablen und Jitterbit-Variablen.
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 zum Festlegen und Abrufen einer globalen Variable verwendete Syntax hängt davon ab, ob der Name der globalen Variable einen Punkt enthält.
Warnung
Die Jitterbit.GetVar
Und Jitterbit.SetVar
Funktionen sind so konzipiert, dass sie die Verwendung von Variablen ermöglichen, die Punkte im Variablennamen enthalten. Die Verwendung von Punkten in einem Variablennamen wird jedoch nicht empfohlen. Da der Wert beim Festlegen der Variablen in eine Zeichenfolge konvertiert wird, können diese Funktionen nicht mit komplexen Datentypen wie Arrays, Wörterbüchern oder JSON-Objekten verwendet werden. Stattdessen wird empfohlen, globale Variablen ohne Punkte zu erstellen und stattdessen Unterstriche anstelle von Punkten und das Standard-Dollarzeichen zu verwenden $
Syntax wie in Globale Variablen beschrieben.
Hinweis
Zusätzliche Informationen zum Jitterbit.GetVar
Und Jitterbit.SetVar
Funktionen finden Sie im vorherigen Abschnitt zu Funktionen.
Festlegen einer globalen Variable
-
Namen ohne Punkte (empfohlen): Eine globale Variable, die keine Punkte im Namen enthält, kann zunächst mit dem Befehl erstellt oder aktualisiert werden
var $
oder mit einem Dollarzeichen aktualisiert$
ohnevar
.var $:
Verwendenvar
und beginnend mit einem Dollarzeichen$
, das Codebeispielvar $serverURL="https://www.example.com"
erstellt oder aktualisiert eine globale Variable namens "serverURL"
mit einem Wert von "https://www.example.com"
. Neue globale Variablen, die initialisiert werden, müssen vor dem$
mitvar
.$:
Mit vorangestelltem Dollarzeichen$
, das Codebeispiel$serverURL="https://www.example.com"
aktualisiert die gleiche globale Variable namens "serverURL
" mit der gleichen URL. Dies funktioniert nur für globale Variablen, die bereits initialisiert sind.
-
Namen mit Punkten (nicht empfohlen): Eine globale Variable, die Punkte im Namen enthält, kann nur mit dem
Jitterbit.SetVar
Funktion.Jitterbit.SetVar:
VerwendenJitterbit.SetVar
, das CodebeispielJitterbit.SetVar("$server.URL", "https://www.example.com")
erstellt oder aktualisiert eine globale Variable namens "server.URL"
mit einem Wert von "https://www.example.com"
das wird als Zeichenfolge behandelt. Beachten Sie, dass das Dollarzeichen$
muss im Variablennamen enthalten sein, sonst ist die Variable für das Jitterbit-System nicht global.
Abrufen einer globalen Variable
-
Namen ohne Punkte: Der Wert einer globalen Variable, die keine Punkte im Namen enthält, kann durch Voranstellen eines Dollarzeichens abgerufen werden
$
.$:
Mit vorangestelltem Dollarzeichen$
, das Codebeispiel$serverURL
ruft den Wert der globalen Variable "serverURL"
.
-
Namen mit Punkten: Der Wert einer globalen Variable, die Punkte im Namen enthält, kann nur mit dem
Jitterbit.GetVar
Funktion.Jitterbit.GetVar:
VerwendenJitterbit.GetVar
, das CodebeispielJitterbit.GetVar("$server.URL")
gibt den Stringwert der globalen Variable namens " zurückserver.URL"
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. Sobald eine Projektvariable erstellt wurde, können Sie Werte für sie entweder ü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 zum Abrufen des Werts einer Projektvariable verwendete Syntax davon ab, ob der Name der Projektvariable einen Punkt enthält.
-
Namen ohne Punkte: Der Wert einer Projektvariable, die keinen Punkt im Namen enthält, kann abgerufen werden, indem sie mit einem Dollarzeichen beginnt
$
.$:
Mit vorangestelltem Dollarzeichen$
, das Codebeispiel$org_netsuite_auth_username
ruft den Wert der Projektvariable mit dem Namen "org_netsuite_auth_username"
.
-
Namen mit Punkten: Der Wert einer Projektvariable, die Punkte im Namen enthält, kann nur mit dem
Jitterbit.GetVar
Funktion.Jitterbit.GetVar:
VerwendenJitterbit.GetVar
, das CodebeispielJitterbit.GetVar("$server.URL")
gibt den Wert der Projektvariable namens " zurückserver.URL"
Beachten Sie, dass das Dollarzeichen$
muss im Variablennamen enthalten sein.
Jitterbit-Variablen
Das Jitterbit-System definiert bestimmte globale Variablen, die in Ihrem gesamten Projekt immer verfügbar sind und als Jitterbit-Variablen (oder vordefinierte globale Variablen) bezeichnet werden. Diese können verwendet werden, um globale Informationen wie den Namen der aktuellen Quelldatei oder den Namen der aktuellen Operation abzurufen. Diese sind einzeln unter Jitterbit-Variablen dokumentiert Abschnitt.
In Jitterbit JavaScript sind von Jitterbit vordefinierte Jitterbit-Variablen nur mit dem Jitterbit.GetVar
Funktion. Dies liegt daran, dass alle von Jitterbit vordefinierten Jitterbit-Variablen Punkte im Variablennamen enthalten.
Jitterbit.GetVar:
VerwendenJitterbit.GetVar
, das CodebeispielJitterbit.GetVar("$jitterbit.operation.error")
ruft den Wert der Jitterbit-Variable ab "jitterbit.operation.error"
Beachten Sie, dass das Dollarzeichen$
muss im Variablennamen enthalten sein.
Plugins
Derzeit wird die Verwendung von Plugins in JavaScript 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 die Werte von Variablen genauso sehen und validieren wie bei einem Jitterbit Script. Die Option Haltepunkte deaktivieren ist jedoch nicht anwendbar, da in JavaScript kein Debugging verfügbar ist. Beim Testen werden die Ergebnisse des Script (festgelegt durch SetScriptOutput
oder SetScriptResult
Funktionen) werden im Feld „Ergebnis“ der Tab „Test“ von Design Studio angezeigt.
Beispiele
Die folgenden JavaScript-Beispiele dienen als Referenz.
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);
}
/////////////////
Mathematische Funktionen in JavaScript
// 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 an Schleifeniterationen, die in Harmony zulässig ist, beträgt 50.000. Die maximale Anzahl an Schleifeniterationen in JavaScript gilt pro Script, nicht pro Schleife.
Wenn beispielsweise ein JavaScript-Script drei Schleifen enthält und jede Schleife 25.000 Iterationen ausführt, würden in einem Script insgesamt 75.000 Iterationen ausgeführt.
Um die maximale Anzahl der Iterationen zu erhöhen, die in einem JavaScript-Script zulässig sind, fügen Sie manuell hinzu JavaScriptMaxIterations=X
Wo X
ist größer als 50000
.
Weitere Informationen finden Sie unter Konfigurationsdatei (jitterbit.conf) bearbeiten.
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
Notiz
Das folgende Beispiel verwendet JSON stringify, um einfach Eigenschaftswertstrukturen zu erstellen und sie 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);