Zum Inhalt springen

JavaScript im Jitterbit Design Studio

JavaScript ist ab Version 8.24.2 für Skripte verfügbar, die als Teil einer Operation erstellt wurden (mit anderen Worten, als Projektelement). Zu diesem Zeitpunkt ist JavaScript nicht für die Verwendung innerhalb von Transformationszuordnungen oder im Skriptbereich verfügbar. Siehe Erstellen eines Skripts für Anweisungen zum Erstellen eines neuen JavaScripts und zur Verwendung des Skriptbauers in Jitterbit.

Wichtig

Für eine verbesserte Leistung empfehlen wir, JavaScript nur zu verwenden, wenn ein Jitterbit-Skript Äquivalent nicht verfügbar ist.

JavaScript-Unterstützung in Jitterbit

Die JavaScript-Engine von Jitterbit unterstützt den ECMA-262 v5.1 Standard, wie von ECMA International festgelegt. Diese Version von JavaScript bietet native Unterstützung für JSON sowie die Definition und Verwendung von Funktionen innerhalb von Skripten. Das JavaScript von Jitterbit entspricht der Standardmanipulation und dem Verhalten von JavaScript-Objekten.

Warnung

Während Jitterbit JavaScript basierend auf dem Standard unterstützt, sind nicht alle JavaScript-Funktionen verfügbar. Jitterbit unterstützt nicht diese JavaScript-Funktionen:

  • Document Object Model (DOM) Web-APIs
  • Eingebaute Funktionen und Objekte von Mozilla
  • Bestimmte JavaScript-Typen wie Set und Map
  • Zugriff auf Java-Objekte

Einfache Datentypen, Arrays und JSON-Objekte werden vollständig unterstützt. Jitterbit-Zuordnungen werden ebenfalls innerhalb von JavaScript unterstützt. JavaScript behandelt Jitterbit-Zuordnungen als JSON-Objekte, und Jitterbit-Skripte behandeln JSON-Objekte als Jitterbit-Zuordnungen. JSON-Eigenschaften werden über Zuordnungsschlüssel zugegriffen.

Zum Beispiel, gegeben dieses JSON-Objekt, das in JavaScript definiert ist:

var $myObj = {
 "name":"John",
 "age":30,
 "cars": {
   "car1":"Ford",
   "car2":"BMW",
   "car3":"Fiat"
   }
 };

In einem Jitterbit-Skript würde das Objekt über eine Zuordnung zugegriffen. Greifen Sie auf die Eigenschaft "car3" wie folgt zu:

$mycar = $myObj["cars"]["car3"];

Erstellen eines neuen JavaScripts

Innerhalb Ihres Projekts in Jitterbit Studio gibt es mehrere Möglichkeiten, ein neues JavaScript als Projektelement zu erstellen:

  • Klicken Sie im Baum auf der linken Seite mit der rechten Maustaste auf den Abschnitt Scripts und wählen Sie New JavaScript.

  • Innerhalb einer bestehenden Operation klicken Sie mit der rechten Maustaste auf einen beliebigen Einfügepunkt attachment 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 Skriptsymbol erscheint innerhalb des Operationsdiagramms. Führen Sie dann eine der folgenden Aktionen aus:

    • Klicken Sie mit der rechten Maustaste auf das Skriptsymbol und wählen Sie Create New JavaScript.

    • Doppelklicken Sie auf das Skriptsymbol und klicken Sie auf die Schaltfläche Create New JavaScript.

Verwenden des Skriptbauers

Nachdem Sie ein neues JavaScript in Jitterbit erstellt haben, können Sie Ihr JavaScript direkt im Skriptbereich eingeben.

Hinweis

Im Gegensatz zu einem Jitterbit-Skript, das erfordert, dass das Skript in <trans> ... </trans>-Tags eingeschlossen wird, sind für Skripte in JavaScript keine Tags erforderlich. Geben Sie stattdessen Ihr JavaScript einfach direkt im Skriptbereich ein.

attachment

Funktionen

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

attachment

Jitterbit

Diese Kategorie enthält eine Liste von Funktionen, die spezifisch für Jitterbit sind. Dazu gehören eine begrenzte Anzahl von Standard-Jitterbit-Funktionen sowie eine Reihe von JavaScript-Funktionen, die spezifisch für Jitterbit sind.

Derzeit sind nur eine begrenzte Anzahl der Jitterbit-Skriptfunktionen zur Verwendung in JavaScript verfügbar. Um auf eine dieser Jitterbit-Funktionen in Ihrem JavaScript zuzugreifen, setzen Sie den Funktionsnamen mit "jitterbit." in den Präfix. Diese Jitterbit-Funktionen sind in JavaScript in Jitterbit verfügbar:

  • Jitterbit.ReadFile(string source_id[, string file_name])
    Liest eine Datei aus der angegebenen Quelle, wie in der Formel-Builder-Dokumentation Dateifunktionen beschrieben. Der zurückgegebene Wert ist eine Zeichenfolge. Zum Beispiel, um in JavaScript diese Jitterbit-Funktion zu verwenden, um eine Datei zu 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 die Datei automatisch. Es wird kein Wert zurückgegeben. Siehe WriteFile unter Formel-Builder Dateifunktionen.

  • Jitterbit.DbExecute(string database_id, string sql_str, ...)
    Führt eine SQL-Anweisung auf einer Datenbank aus und gibt die Ergebnisse zurück. Der zurückgegebene Wert ist ein String. Siehe DBExecute unter Formel-Builder Datenbankfunktionen.

  • Jitterbit.DbLookup(string database_id, string sql_str)
    Führt eine SQL-Anweisung auf einer Datenbank aus und gibt das erste Ergebnis zurück, das den angegebenen Kriterien entspricht. Der zurückgegebene Wert ist ein String. Siehe DBLookup unter Formel-Builder Datenbankfunktionen.

  • Jitterbit.GetVar(string name) und Jitterbit.SetVar(string name, string value)

    Warnung

    Die Funktionen Jitterbit.GetVar und Jitterbit.SetVar 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 in einen String umgewandelt wird, wenn die Variable gesetzt 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 und die standardmäßige Dollarzeichen-$-Syntax zu verwenden, wie in Globalen Variablen beschrieben.

    Die Jitterbit.GetVar-Funktion ruft eine zuvor zugewiesene Jitterbit-Globale Variable (eine Variable, die mit "Jitterbit" beginnt) ab. Der zurückgegebene Wert hat den entsprechenden Datentyp.

    Die Jitterbit.SetVar-Funktion weist einer Jitterbit-Globalen Variable (einer Variable, die mit "Jitterbit" beginnt) einen Wert zu. Der zurückgegebene Wert ist eine Zeichenkette. Dieses Beispiel verwendet eine benutzerdefinierte API, die eine Operation ausführt, die ein JavaScript mit Jitterbit.GetVar und Jitterbit.SetVar enthält:

    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 wurden. Diese Funktionen sind nicht mit "Jitterbit." vorangestellt.

  • WriteToOperationLog
    Sendet Ausgaben an das aktuelle Jitterbit-Operationsprotokoll. Entwickelt für die Verwendung mit JavaScript in Jitterbit und funktioniert ähnlich wie die Jitterbit-Funktion, die im Formel-Builder Protokollierungs- und Fehlerfunktionen beschrieben ist.

  • SetScriptOutput und SetScriptResult
    Setzt die Ausgabe für das Skript. 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. Sie können eine dieser Funktionen in Ihrem JavaScript verwenden, um das Skriptergebnis zurückzugeben. Zum 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 ist hier zur Vereinfachung enthalten.

Häufige 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 JavaScript-Objekte Array, Date und String sowie deren zugehörige Funktionen.

Hinweis

Für eine umfassende Liste von JavaScript-Funktionen verweisen Sie auf den ECMAScript 5.1 Standard unter https://www.ecma-international.org/ecma-262/5.1/.

Math

Diese Kategorie enthält Funktionsattribute, die für das JavaScript math-Objekt gemäß dem ECMAScript 5.1 Standard verfügbar sind. Diese Kategorie wird zur einfachen Referenz bereitgestellt; für die umfassende Dokumentation siehe den ECMAScript 5.1 Standard.

Project items

In JavaScript können Sie auf Projektelemente wie Quellen und Ziele zugreifen, genau wie Sie es von einem Jitterbit-Skript aus tun würden. Obwohl Jitterbit-Skripte Jitterbit-JavaScripts aufrufen können, ist das umgekehrt derzeit nicht möglich. Jitterbit-JavaScripts können keine anderen Skripte oder Operationen aufrufen.

Data elements

Dieser Tab bietet Zugriff auf Daten-Elemente, die global verfügbar sind, um sie in Ihrem Projekt zu verwenden, einschließlich Global variables, Variables und Jitterbit variables.

attachment

Global variables

Alle Jitterbit-Variablen können von Ihrem JavaScript aus zugegriffen und aktualisiert werden. Alle neu definierten JavaScript-Globalvariablen werden zu Jitterbit-Globalvariablen.

Die Syntax, die zum Setzen und Abrufen einer globalen Variablen verwendet wird, hängt davon ab, ob der Name der globalen Variablen einen Punkt enthält.

Warnung

Die Funktionen Jitterbit.GetVar und Jitterbit.SetVar sind so konzipiert, dass sie die Verwendung von Variablen ermöglichen, die Punkte im Variablennamen enthalten. Es wird jedoch nicht empfohlen, Punkte in einem Variablennamen zu verwenden. Da der Wert in einen String umgewandelt wird, wenn die Variable gesetzt 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 und die standardmäßige Dollarzeichen-$-Syntax zu verwenden, wie in Global variables beschrieben.

Hinweis

Zusätzliche Informationen zu den Funktionen Jitterbit.GetVar und Jitterbit.SetVar finden Sie im vorherigen Abschnitt über Funktionen.

Setzen einer globalen Variablen
  • Namen ohne Punkte (empfohlen): Eine globale Variable, die keinen Punkt im Namen enthält, kann zunächst erstellt oder mit dem Befehl var $ aktualisiert werden, oder sie kann mit einem Dollarzeichen $ ohne var aktualisiert werden.

    • var $: Mit var und beginnend mit einem Dollarzeichen $ erstellt oder aktualisiert das Codebeispiel var $serverURL="https://www.example.com" eine globale Variable mit dem Namen "serverURL" und einem Wert von "https://www.example.com". Neue globale Variablen, die initialisiert werden, müssen dem $ var voranstellen.
    • $: Mit einem vorangestellten Dollarzeichen $ aktualisiert das Codebeispiel $serverURL="https://www.example.com" die gleiche globale Variable mit dem Namen "serverURL" mit derselben URL. Dies funktioniert nur für bereits initialisierte globale Variablen.
  • Namen mit Punkten (nicht empfohlen): Eine globale Variable, die Punkte im Namen enthält, kann zunächst erstellt oder nur mit der Funktion Jitterbit.SetVar aktualisiert werden.

    • Jitterbit.SetVar: Mit Jitterbit.SetVar erstellt oder aktualisiert das Codebeispiel Jitterbit.SetVar("$server.URL", "https://www.example.com") eine globale Variable mit dem Namen "server.URL" und einem Wert von "https://www.example.com", der als Zeichenfolge behandelt wird. Beachten Sie, dass das Dollarzeichen $ innerhalb des Variablennamens enthalten sein muss, da die Variable sonst nicht global im Jitterbit-System ist.
Abrufen einer globalen Variablen
  • Namen ohne Punkte: Der Wert einer globalen Variable, die keinen Punkt im Namen enthält, kann abgerufen werden, indem man mit einem Dollarzeichen $ voranstellt.

    • $: Mit einem vorangestellten Dollarzeichen $ ruft das Codebeispiel $serverURL den Wert der globalen Variable "serverURL" ab.
  • Namen mit Punkten: Der Wert einer globalen Variable, die Punkte im Namen enthält, kann nur mit der Funktion Jitterbit.GetVar abgerufen werden.

    • Jitterbit.GetVar: Mit Jitterbit.GetVar gibt das Codebeispiel Jitterbit.GetVar("$server.URL") den Stringwert der globalen Variable namens "server.URL" zurück. Beachten Sie, dass das Dollarzeichen $ in dem Variablennamen enthalten sein muss, um den globalen Wert aus dem Jitterbit-System zu lesen.

Projektvariablen

Projektvariablen werden zunächst als Projektelement innerhalb des Design Studios erstellt. Sobald eine Projektvariable erstellt wurde, können Sie Werte entweder über das Design Studio, die Management-Konsole oder Citizen Integrator festlegen. Erfahren Sie mehr über das Erstellen und Aktualisieren von Projektvariablen unter Projektvariablen.

In Jitterbit JavaScript hängt die Syntax, die zum Abrufen des Wertes einer Projektvariable verwendet wird, davon ab, ob der Name der Projektvariable einen Punkt enthält.

  • Namen ohne Punkte: Der Wert einer Projektvariable, die keinen Punkt in ihrem Namen enthält, kann abgerufen werden, indem mit einem Dollarzeichen $ begonnen wird.

    • $: Mit einem vorangestellten Dollarzeichen $ ruft das Codebeispiel $org_netsuite_auth_username den Wert der Projektvariable namens "org_netsuite_auth_username" ab.
  • Namen mit Punkten: Der Wert einer Projektvariable, die Punkte in ihrem Namen enthält, kann nur mit der Funktion Jitterbit.GetVar abgerufen werden.

    • Jitterbit.GetVar: Mit Jitterbit.GetVar gibt das Codebeispiel Jitterbit.GetVar("$server.URL") den Wert der Projektvariable namens "server.URL" zurück. Beachten Sie, dass das Dollarzeichen $ in dem Variablennamen enthalten sein muss.

Jitterbit-Variablen

Das Jitterbit-System definiert bestimmte globale Variablen, die in Ihrem Projekt immer verfügbar sind, bekannt als Jitterbit-Variablen (oder als vordefinierte globale Variablen). Diese können verwendet werden, um globale Informationen wie den Namen der aktuellen Quelldatei oder den Namen der aktuellen Operation abzurufen. Diese sind einzeln im Abschnitt Jitterbit-Variablen dokumentiert.

In Jitterbit JavaScript sind die von Jitterbit vordefinierten Variablen nur mit der Funktion Jitterbit.GetVar zugänglich. Dies liegt daran, dass alle von Jitterbit vordefinierten Variablen Punkte im Variablennamen enthalten.

  • Jitterbit.GetVar: Mit Jitterbit.GetVar ruft das Codebeispiel Jitterbit.GetVar("$jitterbit.operation.error") den Wert der Jitterbit-Variablen "jitterbit.operation.error" ab. Beachten Sie, dass das Dollarzeichen $ in dem Variablennamen enthalten sein muss.

Plugins

Derzeit wird die Verwendung von Plugins in JavaScript nicht unterstützt. Verwenden Sie stattdessen ein Jitterbit-Skript und rufen Sie sowohl das Plugin als auch Ihr JavaScript von dort auf.

Testen und Debuggen

In einem JavaScript können Sie die Werte von Variablen sehen und validieren, genau wie Sie es für ein Jitterbit-Skript tun würden. Die Option Breakpoints deaktivieren ist jedoch nicht anwendbar, da das Debuggen in JavaScript nicht verfügbar ist. Beim Testen erscheinen die Ergebnisse des Skripts (wie von den Funktionen SetScriptOutput oder SetScriptResult festgelegt) im Feld "Ergebnis" des "Test"-Tabs im Design Studio.

Engine-Debug-Protokolle

Setzen Sie $javascript.debug auf true in einem Jitterbit-Skript vor jedem JavaScript, um die Ausführungszeiten und Größen der an die Verarbeitungssysteme gesendeten Daten zu protokollieren. Dieses Protokoll wird in $javascript.debugoutput gespeichert:

Beispiel-Debug-Protokoll
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 zur Referenz bereitgestellt.

JavaScript-Dateifunktionen

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

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

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 erlaubt ist, beträgt 50.000. Die maximale Anzahl an Schleifeniterationen in JavaScript gilt pro Skript, nicht pro Schleife.

Zum Beispiel würde ein JavaScript-Skript mit drei Schleifen, wobei jede Schleife 25.000 Iterationen ausführt, insgesamt 75.000 Iterationen innerhalb des einen Skripts ausführen.

Um die maximale Anzahl an Iterationen, die in einem JavaScript-Skript erlaubt sind, zu erhöhen, fügen Sie manuell JavaScriptMaxIterations=X hinzu, wobei X größer als 50000 sein muss.

Für weitere Informationen siehe Bearbeiten der Konfigurationsdatei (jitterbit.conf).

JavaScript JSON Beispiel 1

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

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 einfach Strukturwerte für Eigenschaften zu erstellen und sie dann an eine API zu übergeben.

JavaScript JSON Beispiel 3
// 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);