Zum Inhalt springen

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 Und Map
  • 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 Anhang 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.

Anhang

Funktionen

Die in JavaScript verwendbaren Funktionen sind in vier Kategorien unterteilt.

Anhang

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) Und Jitterbit.SetVar(string name, string value)

    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.

    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 Und Jitterbit.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 Und SetScriptResult
    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.

Anhang

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 $ ohne var.

    • var $: Verwenden var und beginnend mit einem Dollarzeichen$, das Codebeispiel var $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 $ mit var.
    • $: 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: Verwenden Jitterbit.SetVar, das Codebeispiel Jitterbit.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: Verwenden Jitterbit.GetVar, das Codebeispiel Jitterbit.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: Verwenden Jitterbit.GetVar, das Codebeispiel Jitterbit.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: Verwenden Jitterbit.GetVar, das Codebeispiel Jitterbit.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

JavaScript File Functions
// 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

JavaScript Math Functions
// 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 Loop
// 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

JavaScript JSON example 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 example 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.

JavaScript JSON example 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);