Saltar al contenido

Javascript

JavaScript está disponible a partir de la versión 8.24.2 para secuencias de comandos creados como parte de una operación (en otras palabras, como un elemento de proyecto). En este momento, JavaScript no está disponible para su uso en asignaciones de transformación o en el panel de secuencia de comandos. Consulte Creación de un secuencia de comandos para obtener instrucciones sobre cómo crear un nuevo JavaScript y usar el generador de secuencia de comandos en Jitterbit.

Importante

Para mejorar el rendimiento, recomendamos usar JavaScript solo cuando se ejecuta un Jitterbit Script equivalente no está disponible.

Soporte de JavaScript en Jitterbit

El motor Javascript de Jitterbit es compatible con ECMA-262 v5.1 estándar según lo especificado por ECMA International. Esta versión de JavaScript tiene soporte nativo de JSON y la definición y uso de funciones dentro de secuencias de comandos. El JavaScript de Jitterbit se ajusta al comportamiento y la manipulación de objetos estándar de JavaScript.

Advertencia

Si bien Jitterbit admite JavaScript según el estándar, no todas las funciones de JavaScript están disponibles. Jitterbit no admite estas funciones de JavaScript:

  • APIs web del modelo de objetos de documento (DOM)
  • Funciones y objetos integrados de Mozilla
  • Ciertos tipos de JavaScript como Set y Map
  • Acceso a objetos Java

Se admiten tipos de datos simples, matrices y objetos JSON. Los mapas Jitterbit también son compatibles con JavaScript. JavaScript trata los mapas de Jitterbit como objetos JSON y los Secuencias de Comandos de Jitterbit tratan los objetos JSON como mapas de Jitterbit. Se accede a las propiedades JSON mediante claves de mapa.

Por ejemplo, dado este objeto JSON definido en JavaScript:

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

En un Jitterbit Script, se accedería al objeto mediante un mapa. Acceder al "car3" propiedad como esta:

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

Crear un Nuevo JavaScript

Dentro de su proyecto dentro de Jitterbit Studio, hay varias formas de crear un nuevo JavaScript como elemento del proyecto:

  • En el árbol de la izquierda, haga clic derecho en la sección Secuencias de Comandos y seleccione Nuevo JavaScript.

  • Dentro de una operación existente, haga clic derecho en cualquier punto de inserción adjunto y elija Insertar > Secuencia de Comandos. O haga clic derecho en un origen o destino y elija Insertar antes de esto > Secuencia de Comandos o Insertar después de esto > Secuencia de Comandos. Aparecerá un icono de secuencia de comandos dentro del gráfico de operación. Luego haga una de las siguientes cosas:

    • Haga clic derecho en el icono del secuencia de comandos y elija Crear nuevo JavaScript.

    • Haga doble clic en el icono del secuencia de comandos y haga clic en el botón Crear nuevo JavaScript.

Usar el Generador de Secuencia de Comandos

Después de haber creado un nuevo JavaScript en Jitterbit, puede ingresar su JavaScript directamente dentro del área de secuencia de comandos.

Nota

A diferencia de un Jitterbit Script, que requiere que el secuencia de comandos esté envuelto dentro <trans> ... </trans> etiquetas, no se necesitan etiquetas para los secuencias de comandos en JavaScript. En su lugar, simplemente ingrese su JavaScript directamente dentro del área de secuencia de comandos.

adjunto

Funciones

Las funciones disponibles para usar en JavaScript están disponibles en cuatro categorías.

adjunto

Jitterbit

Esta categoría contiene una lista de funciones específicas de Jitterbit. Estas incluyen una cantidad limitada de funciones estándar de Jitterbit, así como una cantidad de funciones de JavaScript específicas de Jitterbit.

Actualmente, un número limitado de funciones de Jitterbit Script están disponibles para su uso en JavaScript. Para acceder a una de esas funciones Jitterbit en su JavaScript, anteponga la función con "jitterbit.". Estas funciones de Jitterbit están disponibles para su uso en JavaScript en Jitterbit:

  • Jitterbit.ReadFile(string source_id[, string file_name])
    Lee un archivo de la fuente especificada como se describe en Generador de fórmulas Funciones de archivo. El valor devuelto es una cadena. Por ejemplo, en JavaScript, usando esta función Jitterbit para leer un archivo:

    var MyData = Jitterbit.ReadFile("<TAG>Sources/myfile</TAG>");
    
  • Jitterbit.WriteFile(string target_id, type file_contents[, string file_name])
    Escribe en un archivo y lo vacía automáticamente. No se devuelve ningún valor. Consulte Escribir archivo en Generador de fórmulas Funciones de archivo.

  • Jitterbit.DbExecute(string database_id, string sql_str, ...)
    Ejecuta una declaración SQL en una base de datos y devuelve los resultados. El valor devuelto es una cadena. Consulte DBExecute en Generador de fórmulas Funciones de base de datos.

  • Jitterbit.DbLookup(string database_id, string sql_str)
    Ejecuta una declaración SQL en una base de datos y devuelve el primer resultado que coincide con los criterios especificados. El valor devuelto es una cadena. Consulte DBLookup en Generador de fórmulas Funciones de base de datos.

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

    Advertencia

    El Jitterbit.GetVar y Jitterbit.SetVar las funciones están diseñadas para permitir el uso de variables que contienen puntos dentro del nombre de la variable. Sin embargo, no se recomienda utilizar puntos en el nombre de una variable. Como el valor se convertirá en una cadena cuando se establezca la variable, estas funciones no se pueden utilizar con tipos de datos complejos como matrices, diccionarios u objetos JSON. En su lugar, se recomienda crear variables globales sin puntos y utilizar guiones bajos en lugar de puntos y utilizar el signo de dólar estándar. $ sintaxis como se describe en Variables globales.

    El Jitterbit.GetVar la función recupera una variable global Jitterbit previamente asignada (una variable con el prefijo "Jitterbit"). El valor devuelto es el tipo de datos apropiado.

    El Jitterbit.SetVar la función asigna un valor a una variable global Jitterbit (una variable con el prefijo "Jitterbit"). El valor devuelto es una cadena. Este ejemplo utiliza una API personalizada que ejecuta una operación que contiene JavaScript usando Jitterbit.GetVar y 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);
    

En esta categoría se incluyen varias funciones adaptadas para su uso con JavaScript en Jitterbit. Estas funciones no tienen el prefijo "Jitterbit.".

  • WriteToOperationLog
    Envía la salida al registro de operación actual de Jitterbit. Creado para usar con JavaScript en Jitterbit y funciona de manera similar a la función Jitterbit descrita en Formula Builder Funciones de registro y error.

  • SetScriptOutput y SetScriptResult
    Establece la salida del secuencia de comandos. Estas dos funciones son alias y cualquiera de ellas se puede utilizar según sus preferencias. A diferencia de los Jitterbit Secuencias de Comandos, que devuelven automáticamente el valor de la última línea, los Jitterbit JavaScripts no devuelven automáticamente un valor. Puede utilizar cualquiera de estas funciones en su JavaScript para devolver el resultado del secuencia de comandos. Por ejemplo:

    var MyVariable = "Hello World";
    WriteToOperationLog(MyVariable);
    SetScriptResult(MyVariable);
    

Palabras Clave

Esta categoría contiene una lista de palabras clave de JavaScript en el estándar ECMAScript 5.1 y se incluyen aquí por conveniencia.

Funciones Comunes

Esta categoría contiene una lista de funciones de JavaScript en el estándar ECMAScript 5.1 que pueden ser relevantes para los usuarios de Jitterbit. Esta categoría no es completa: puede utilizar otras funciones de JavaScript que no se enumeran aquí, como JavaScript Array, Date, y String objetos y sus funciones asociadas.

Nota

Para obtener una lista completa de funciones de JavaScript, consulte el estándar ECMAScript 5.1 en https://www.ecma-international.org/ecma-262/5.1/.

Matemáticas

Esta categoría contiene propiedades de funciones disponibles para JavaScript. math objeto como se especifica en el estándar ECMAScript 5.1. Esta categoría se proporciona para facilitar la referencia; para obtener la documentación completa, consulte el estándar ECMAScript 5.1.

Elementos del Proyecto

En JavaScript, puede acceder a elementos del proyecto, como fuentes y destinos, tal como lo haría desde un Jitterbit Script. Aunque Jitterbit Secuencias de Comandos puede llamar a Jitterbit JavaScripts, lo contrario no ocurre en este momento. Los JavaScripts Jitterbit no pueden llamar a otros secuencias de comandos u operaciones.

Elementos de Datos

Esta pestaña brinda acceso a elementos de datos que están disponibles globalmente para usar en todo su proyecto, incluidas variables globales, Variables, y variables de Jitterbit.

adjunto

Variables Globales

Se puede acceder y actualizar todas las variables de Jitterbit desde su JavaScript. Cualquier variable global de JavaScript recién definida se convertirá en variable global de Jitterbit.

La sintaxis utilizada para configurar y recuperar una variable global depende de si el nombre de la variable global contiene un punto.

Advertencia

El Jitterbit.GetVar y Jitterbit.SetVar las funciones están diseñadas para permitir el uso de variables que contienen puntos dentro del nombre de la variable. Sin embargo, no se recomienda utilizar puntos en el nombre de una variable. Como el valor se convertirá en una cadena cuando se establezca la variable, estas funciones no se pueden utilizar con tipos de datos complejos como matrices, diccionarios u objetos JSON. En su lugar, se recomienda crear variables globales sin puntos y utilizar guiones bajos en lugar de puntos y utilizar el signo de dólar estándar. $ sintaxis como se describe en Variables globales.

Nota

Información adicional sobre el Jitterbit.GetVar y Jitterbit.SetVar funciones se encuentra en la sección anterior sobre Funciones.

Establecer una Variable Global
  • Nombres sin puntos (recomendado): Una variable global que no contiene puntos en su nombre se puede crear inicialmente o actualizar usando el comando var $, o actualizado usando un signo de dólar $ sin var.

    • var $: Usando var y comenzando con un signo de dólar$, el ejemplo de código var $serverURL="https://www.example.com" crea o actualiza una variable global llamada "serverURL" con un valor de "https://www.example.com". Las nuevas variables globales que se están inicializando deben preceder a la $ con var.
    • $: Precedido de un signo de dólar $, el ejemplo de código $serverURL="https://www.example.com" actualiza la misma variable global llamada "serverURL" con la misma URL. Esto funciona solo para variables globales que ya están inicializadas.
  • Nombres con puntos (no recomendado): Una variable global que contiene puntos en su nombre se puede crear inicialmente o actualizar solo con el Jitterbit.SetVar función.

    • Jitterbit.SetVar: Usando Jitterbit.SetVar, el ejemplo de código Jitterbit.SetVar("$server.URL", "https://www.example.com") crea o actualiza una variable global llamada "server.URL" con un valor de "https://www.example.com" eso será tratado como una cadena. Tenga en cuenta que el signo del dólar $ debe incluirse dentro del nombre de la variable, o la variable no será global para el sistema Jitterbit.
Obtener una Variable Global
  • Nombres sin puntos: El valor de una variable global que no contiene ningún punto en su nombre se puede recuperar anteponiendo un signo de dólar. $.

    • $: Precedido de un signo de dólar $, el ejemplo de código $serverURL recupera el valor de la variable global "serverURL".
  • Nombres con puntos: El valor de una variable global que contiene puntos en su nombre se puede recuperar solo con el Jitterbit.GetVar función.

    • Jitterbit.GetVar: Usando Jitterbit.GetVar, el ejemplo de código Jitterbit.GetVar("$server.URL") devuelve el valor de cadena de la variable global llamada "server.URL". Tenga en cuenta que el signo del dólar $ debe incluirse dentro del nombre de la variable para leer el valor global del sistema Jitterbit.

Variables del Proyecto

Las variables del proyecto se crean primero como un elemento del proyecto dentro de Design Studio. Una vez que se crea una variable de proyecto, puede establecer valores para ella a través de Design Studio, Management Console o Citizen Integrator. Obtenga más información sobre cómo crear y actualizar variables de proyecto en Variables de proyecto.

En Jitterbit JavaScript, la sintaxis utilizada para recuperar el valor de una variable del proyecto depende de si el nombre de la variable del proyecto contiene un punto.

  • Nombres sin puntos: El valor de una variable de proyecto que no contiene ningún punto en su nombre se puede recuperar comenzando con un signo de dólar. $.

    • $: Precedido de un signo de dólar $, el ejemplo de código $org_netsuite_auth_username recupera el valor de la variable del proyecto llamada "org_netsuite_auth_username".
  • Nombres con puntos: El valor de una variable de proyecto que contiene puntos en su nombre se puede recuperar solo con el Jitterbit.GetVar función.

    • Jitterbit.GetVar: Usando Jitterbit.GetVar, el ejemplo de código Jitterbit.GetVar("$server.URL") devuelve el valor de la variable del proyecto llamada "server.URL". Tenga en cuenta que el signo del dólar $ debe incluirse dentro del nombre de la variable.

Variables de Jitterbit

El sistema Jitterbit define ciertas variables globales que siempre están disponibles en todo su proyecto, conocidas como variables Jitterbit (o conocidas como variables globales predefinidas). Estos se pueden utilizar para obtener información global como el nombre del archivo fuente actual o el nombre de la operación actual. Estos están documentados individualmente en las variables Jitterbit sección.

En Jitterbit JavaScript, las variables Jitterbit predefinidas por Jitterbit son accesibles solo con el Jitterbit.GetVar función. Esto se debe a que todas las variables de Jitterbit predefinidas por Jitterbit contienen puntos dentro del nombre de la variable.

  • Jitterbit.GetVar: Usando Jitterbit.GetVar, el ejemplo de código Jitterbit.GetVar("$jitterbit.operation.error") recupera el valor de la variable Jitterbit "jitterbit.operation.error". Tenga en cuenta que el signo del dólar $ debe incluirse dentro del nombre de la variable.

Complementos

Actualmente, no se admite el uso de complementos en JavaScript. En su lugar, utilice un Jitterbit Script y llame tanto al complemento como a su JavaScript desde él.

Probar y Depurar

En JavaScript, puede ver y validar los valores de las variables tal como lo haría con un Jitterbit Script. Sin embargo, la opción Desactivar puntos de interrupción no es aplicable ya que la depuración no está disponible en JavaScript. Al realizar la prueba, los resultados del secuencia de comandos (según lo establecido por SetScriptOutput o SetScriptResult funciones) aparecerán en el campo "Resultado" de la pestaña "Prueba" de Design Studio.

Ejemplos

Los siguientes ejemplos de JavaScript se proporcionan como referencia.

Funciones de Archivos JavaScript

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);
}

/////////////////

Funciones Matemáticas de 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;
}

/////////////////

Bucle de JavaScript

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);

El número máximo de iteraciones de bucle permitidas en Harmony es 50.000. El número máximo de iteraciones de bucle en JavaScript es por secuencia de comandos, no por bucle.

Por ejemplo, un secuencia de comandos JavaScript que contiene tres bucles, donde cada bucle ejecuta 25 000 iteraciones, sería un total de 75 000 iteraciones ejecutándose dentro de un secuencia de comandos.

Para aumentar el número máximo de iteraciones permitidas en cualquier secuencia de comandos JavaScript, agregue manualmente JavaScriptMaxIterations=X dónde X es mayor que 50000.

Para obtener más información, consulte Editar el archivo de configuración (jitterbit.conf).

Ejemplo 1 de JavaScript JSON

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);

Ejemplo 2 de JavaScript JSON

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;

Ejemplo 3 de JavaScript JSON

Nota

El siguiente ejemplo utiliza JSON stringify para crear fácilmente estructuras de valores de propiedad y luego enviarlas a una API.

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);