Zum Inhalt springen

JavaScript im Integration Studio

Einführung

JavaScript kann nur in Scripts verwendet werden, die als Projektkomponente erstellt wurden (nicht in Scripts, die innerhalb einer Transformation verwendet werden). Auf dieser Seite finden Sie Informationen zur JavaScript-Unterstützung in Harmony sowie einige Beispiele für den Einstieg. Siehe auch verwandte Seiten zum Erstellen eines Script, mithilfe des Script Editors und Testen eines Script.

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 Harmony

Die JavaScript-Engine von Harmony unterstützt den Standard ECMA-262 v5.1, wie bei ECMA International angegeben. 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-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"];

Nachdem Sie ein neues JavaScript erstellt haben in Integration Studio können Sie das Script direkt im Script eingeben. In JavaScripts, die in Integration Studio, Scripts müssen in einem <javascript> öffnender Tag und </javascript> schließendes Tag.

Schleifeniterationen

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 zum Erhöhen der maximal zulässigen Schleifenanzahl finden Sie unter [Settings] unter Konfigurationsdatei (jitterbit.conf) bearbeiten.

Ein Beispiel für eine Schleife finden Sie unter JavaScript-Schleife weiter unten auf dieser Seite unter Beispiele.

Komponentenpalette

Die Skriptkomponentenpalette bietet Zugriff auf verschiedene Komponenten, die in einem Script verwendet werden können. Sie können Komponenten in einem Script verwenden, indem Sie sie aus der Komponentenpalette ziehen oder darauf doppelklicken, die Autovervollständigungsfunktion verwenden oder die richtige Syntax manuell eingeben oder einfügen.

Notiz

Wenn ein Script andere Projektkomponenten aufruft, die noch nicht bereitgestellt wurden, müssen diese Komponenten bereitgestellt werden, bevor Sie das Script erfolgreich ausführen können.

Sie können auf der rechten Seite des Projekt-Designers und des Script Editors auf die Skriptkomponentenpalette zugreifen:

Funktionen JavaScript

Einige der in der Skriptkomponentenpalette angezeigten Registerkarten zeigen Komponenten, die nicht in einem in JavaScript geschriebenen Script verwendet werden können. Insbesondere wird das Verweisen auf Plugins, Vorgänge, Benachrichtigungen und andere Scripts in einem in JavaScript geschriebenen Script nicht unterstützt. Die Registerkarten, die Funktionen oder Komponenten enthalten, die in einem in JavaScript geschriebenen Script verwendet werden können, werden unten beschrieben.

Funktionen

Der Die Tab Funktionen bietet eine Liste der in einem Script verfügbaren Funktionen.

Innerhalb eines Script können Sie Funktionen verwenden, indem Sie die Funktionssyntax einfügen.

So fügen Sie die Funktionssyntax zu einem Script hinzu (Jitterbit Script oder JavaScript), verwenden Sie eine der folgenden Methoden:

  • Ziehen Sie die Funktion aus der Palette in das Script, um die Funktionssyntax einzufügen.
  • Doppelklicken Sie auf die Funktion in der Palette, um die Funktionssyntax an der Cursorposition im Script einzufügen. Beim Einfügen der Funktionssyntax wird das erste Funktionsargument hervorgehoben und der Cursor an das Ende des Arguments verschoben.
  • Beginnen Sie mit der Eingabe des Funktionsnamens und drücken Sie dann Control+Space, um eine Liste mit Autovervollständigungsvorschlägen anzuzeigen. Wählen Sie eine Funktion aus, um die Funktionssyntax einzufügen.
  • Geben Sie die Funktionssyntax manuell ein.

Die in JavaScript verfügbaren Funktionen sind in vier Kategorien unterteilt: Jitterbit, Schlüsselwörter, Allgemeine Funktionen und Mathematik. Ausführliche Informationen zu den einzelnen in JavaScript in Harmony verfügbaren Funktionen finden Sie auf diesen Seiten:

Variablen

Der Die Tab Variablen bietet Zugriff auf Variablen, die im gesamten Projekt global referenziert werden können, einschließlich globaler Variablen, Projektvariablen und Jitterbit-Variablen.

Innerhalb eines Script können Sie Variablen verwenden, indem Sie die Variablensyntax einfügen (siehe die Dokumentation für jeden Variablentyp unter Variablen).

So fügen Sie die Variablensyntax zu einem Script hinzu (Jitterbit Script oder JavaScript), verwenden Sie eine der folgenden Methoden:

  • Ziehen Sie die Variable aus der Palette in das Script, um die Variablensyntax einzufügen.
  • Doppelklicken Sie auf die Variable in der Palette, um die Variablensyntax an der Cursorposition im Script einzufügen.
  • Beginnen Sie mit der Eingabe des Variablennamens und drücken Sie dann Control+Space um eine Liste mit Autovervollständigungsvorschlägen anzuzeigen. Wählen Sie eine Variable aus, um die Variablensyntax einzufügen.
  • Geben Sie die Variablensyntax manuell ein.

Lokale Variablen werden nicht aufgeführt, da sie nicht global verfügbar sind. Sie können sie jedoch weiterhin lokal in einem Script verwenden.

Globale Variablen

Alle globalen Jitterbit-Variablen können über 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.SetVar Und Jitterbit.GetVar 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 unten beschrieben.

Tipp

Weitere Informationen zum Jitterbit.GetVar Und Jitterbit.SetVar Funktionen finden Sie im nächsten Abschnitt unter 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 einem Dollarzeichen als Präfix $, das Codebeispiel $serverURL="https://www.example.com" aktualisiert die gleiche 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, 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 als Zeichenfolge behandelt wird. Beachten Sie, dass das Dollarzeichen $ muss im Variablennamen enthalten sein, sonst ist die Variable für das Harmony-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 einem Dollarzeichen als Präfix $, das Codebeispiel $serverURL ruft den Wert der globalen Variable ab 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 zurück server.URL Beachten Sie, dass das Dollarzeichen $ muss im Variablennamen enthalten sein, um den globalen Wert aus dem Harmony-System zu lesen.

Projektvariablen

Projektvariablen werden zunächst als Projektkomponente innerhalb von Integration Studio. Sobald eine Projektvariable erstellt wurde, können Sie Werte für sie festlegen über Integration Studio, die Management Console oder Citizen Integrator. 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 einem Dollarzeichen als Präfix $, das Codebeispiel $org_netsuite_auth_username ruft den Wert der Projektvariable ab, genannt 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 zurück, genannt server.URL Beachten Sie, dass das Dollarzeichen $ muss im Variablennamen enthalten sein.

Jitterbit-Variablen

Das Harmony-System definiert bestimmte globale Variablen, die in einem 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. Weitere Informationen finden Sie unter Jitterbit-Variablen.

In Jitterbit JavaScript sind von Harmony 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.

Endpoints

Der Die Tab Endpoints bietet eine Liste der Endpoints im Projekt, auf die in einem Script verwiesen werden kann.

Innerhalb eines Script können Sie Endpoints als Argument für Funktionen referenzieren, indem Sie den Verbindungs- oder Aktivitätsreferenzpfad einfügen.

So fügen Sie einem Script einen Verbindungs- oder Aktivitätsreferenzpfad hinzu (Jitterbit Script oder JavaScript), verwenden Sie eine der folgenden Methoden:

  • Ziehen Sie die Verbindung oder Aktivität aus der Palette in das Script, um die entsprechende Referenz einzufügen.
  • Doppelklicken Sie auf die Verbindung oder Aktivität in der Palette, um die entsprechende Referenz an der Cursorposition im Script einzufügen.
  • Beginnen Sie mit der Eingabe des Verbindungs- oder Aktivitätsnamens und drücken Sie dann Control+Space, um eine Liste mit Autovervollständigungsvorschlägen anzuzeigen. Wählen Sie eine Verbindung oder Aktivität aus, um die entsprechende Referenz einzufügen.
  • Geben Sie die Verbindungs- oder Aktivitätsreferenz manuell ein.

Die Typen von Endpoints, die in Scripts verwendet werden können, hängen davon ab, ob es Funktionen gibt, die die Verwendung des spezifischen Verbindungstyps oder der Aktivitätsreferenz als Argument unterstützen. Die Endpoint müssen in Verbindung mit diesen Funktionen verwendet werden, um im Script gültig zu sein.

Verbindungen und Aktivitäten, die im Script verwendet werden können, werden in Kategorien angezeigt, in denen die Anzahl der in jeder Kategorie verfügbaren Elemente aufgeführt ist. Den Aktivitätsnamen sind eckige Klammern vorangestellt, die den für den Aktivitätstyp spezifischen Interaktionstyp mit der Datenressource enthalten (z. B. Lesen, Schreiben, Abfragen, Upsert, GET, POST usw.). Damit sie hier angezeigt werden, müssen Verbindungen und Aktivitäten bereits im Projekt konfiguriert sein. Wenn beispielsweise im Projekt eine einzelne konfigurierte HTTP-Verbindung vorhanden ist und zwei Aktivitäten mit dieser Verbindung konfiguriert sind, werden sie wie folgt gruppiert angezeigt:

Endpoints HTTP

Verbindungsreferenzen sind enthalten in <TAG> Und </TAG> Tags und bestehen aus dem Typ der Projektkomponente (connection), gefolgt von einem Doppelpunkt (:), gefolgt vom Verbindungstyp und dem vom Benutzer angegebenen Verbindungsnamen.

Aktivitätsreferenzen sind länger, da die Verbindungsreferenz, mit der sie verknüpft sind, ebenfalls im Pfad enthalten sein muss. Aktivitätsreferenzen sind enthalten in <TAG> Und </TAG> Tags und bestehen aus dem Typ der Projektkomponente (activity), gefolgt von einem Doppelpunkt (:), gefolgt vom Verbindungstyp, gefolgt vom Aktivitätstyp, gefolgt vom vom Benutzer angegebenen Aktivitätsnamen.

Abhängig vom spezifischen Verbindungs- oder Aktivitätstyp, wie unten aufgeführt, können Sie Funktionen aus der Tab Funktionen verwenden, die einen Connector-Verweis als Argument annehmen. Die unten beschriebenen Funktionen können mit den aufgeführten Verbindungen und Aktivitäten verwendet werden.

Kategorie
Beschreibung Verwendung von Komponenten als Funktionsparameter
Endpoints Diese Kategorie umfasst alle konfigurierten Datenbanken Verbindungen (die in einem Script verwendet werden können) und zugehörige Aktivitäten (die nicht in einem in JavaScript geschriebenen Script verwendet werden können).

Datenbankverbindungen können mit allen in JavaScript Jitterbit und allgemeine Funktionen aufgeführten Funktionen verwendet werden, die eine databaseId als Parameter, einschließlich:

  • Jitterbit.DbExecute
  • Jitterbit.DbLookup

Dateifreigabe-Endpoints
** FTP Endpoints
HTTP- Endpoints
Lokale Endpoints
Temporäre Endpoints**
Diese Kategorien umfassen alle konfigurierten Dateifreigaben, FTP, HTTP, Lokaler Speicher und Temporärer Speicher Verbindungen (die nicht in einem Script verwendet werden können) und zugehörige Aktivitäten (die in einem Script verwendet werden können)

Hinweis

Obwohl auch eine Kategorie API Endpoints enthalten ist, API Verbindungen und Aktivitäten können nicht in einem Script verwendet werden.

Die enthaltenen Aktivitäten (außer API Aktivitäten) können mit allen in JavaScript Jitterbit und allgemeine Funktionen aufgeführten Funktionen verwendet werden, die eine sourceId oder targetId als Parameter, einschließlich:

  • Jitterbit.ReadFile
  • Jitterbit.WriteFile

Salesforce Endpoints Diese Kategorie umfasst alle konfigurierten Salesforce-Verbindungen. Salesforce Verbindungen können nicht in einem in JavaScript geschriebenen Script verwendet werden. Nicht zutreffend.
NetSuite Endpoints Diese Kategorie umfasst alle konfigurierten NetSuite Verbindungen. NetSuite-Verbindungen können nicht in einem in JavaScript geschriebenen Script verwendet werden. Nicht zutreffend.

Beispiele

Diese JavaScript-Beispiele dienen als Referenz.

JavaScript-Dateifunktionen

JavaScript File Functions
<javascript>
// This script:
// * Generates some random numbers
// * Writes them to a target file
// * Then reads them back in
// * Writes 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>activity:tempstorage/Temporary Storage Endpoint/tempstorage_write/tmpdata</TAG>", mystring);

// Read the data back in from the file
var filedata = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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>

Mathematische Funktionen in JavaScript

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

JavaScript-Schleife

JavaScript Loop
<javascript>
// Create 100 random numbers

var $output = "";

for (var i=0; i<100; i++) {
  $output = $output + Math.floor((Math.random() * 10000) + 1) + " \n";
}

SetScriptResult($output);
</javascript>

JavaScript JSON Beispiel 1

JavaScript JSON Example 1
<javascript>
WriteToOperationLog("\n\n Parsing JSON...");

var jsonData = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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>

JavaScript JSON Beispiel 2

JavaScript JSON Example 2
<javascript>
WriteToOperationLog("\n\n Parsing JSON...");

var jsonData = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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 are 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>

JavaScript JSON Beispiel 3

JavaScript JSON Example 3
<javascript>
// 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>activity:http/HTTP Endpoint/http_post/Example HTTP POST</TAG>", $outputJSON);
WriteToOperationLog($outputJSON);
SetScriptResult($outputJSON);

</javascript>