Saltar al contenido

JavaScript en Jitterbit Design Studio

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 utilizar el generador de secuencia de comandos en Jitterbit.

Importante

Para un mejor rendimiento, recomendamos usar JavaScript solo cuando un Jitterbit Script equivalente no está disponible.

Compatibilidad con 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 para JSON y la definición y uso de funciones dentro de secuencias de comandos. El JavaScript de Jitterbit se ajusta al comportamiento y 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 completamente tipos de datos simples, matrices y objetos JSON. Los mapas Jitterbit también son compatibles con JavaScript. JavaScript trata los mapas Jitterbit como objetos JSON y los Secuencias de comandos Jitterbit tratan los objetos JSON como mapas Jitterbit. Se accede a las propiedades JSON a través de 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. Acceda 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 archivo adjunto y seleccione Insertar > Secuencia de comandos. O haga clic derecho en un origen o destino y seleccione Insertar antes de esto > Secuencia de comandos o Insertar después de esto > Secuencia de comandos. Aparecerá un ícono de secuencia de comandos dentro del gráfico de operación. Luego, realice una de las siguientes acciones:

    • Haz clic derecho en el ícono del secuencia de comandos y elige Crear nuevo JavaScript.

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

Utilice 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 código JavaScript directamente en el área del secuencia de comandos.

adjunto

Funciones

Las funciones disponibles para usar en JavaScript se dividen en cuatro categorías.

attachment

Fluctuación de bits

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, hay una cantidad limitada de funciones de Jitterbit Script disponibles para su uso en JavaScript. Para acceder a una de esas funciones de 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 Formula Builder Funciones de archivo. El valor devuelto es una cadena. Por ejemplo, en JavaScript, al usar 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 WriteFile en Generador de fórmulas Funciones de archivo.

  • Jitterbit.DbExecute(string database_id, string sql_str, ...)
    Ejecuta una sentencia 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 sentencia 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

    La 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 usar 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 usar con tipos de datos complejos, como matrices, diccionarios u objetos JSON. En su lugar, se recomienda crear variables globales sin puntos y, en su lugar, usar guiones bajos en lugar de puntos y usar 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 asignada previamente (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 un JavaScript utilizando 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 su uso 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 se puede utilizar cualquiera de ellas según sus preferencias. A diferencia de los Secuencias de comandos de Jitterbit, que devuelven automáticamente el valor de la última línea, los JavaScript de Jitterbit 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í para mayor comodidad.

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 exhaustiva: 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 las 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 tal como se especifica en el estándar ECMAScript 5.1. Esta categoría se proporciona para facilitar la consulta; para obtener la documentación completa, consulte el estándar ECMAScript 5.1.

Elementos del proyecto

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

Elementos de datos

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

adjunto

Variables globales

Se puede acceder a todas las variables de Jitterbit y actualizarlas desde JavaScript. Cualquier variable global de JavaScript recientemente 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

La 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 usar 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 usar con tipos de datos complejos, como matrices, diccionarios u objetos JSON. En su lugar, se recomienda crear variables globales sin puntos y, en su lugar, usar guiones bajos en lugar de puntos y usar el signo de dólar estándar. $Sintaxis como se describe en Variables globales.

Nota

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

Establecer una variable global
  • Nombres sin puntos (recomendado): Una variable global que no contenga 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 empezando 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 las $ con var.
    • $: Prefijado con 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"que se tratará como una cadena. Tenga en cuenta que el signo de dólar $Debe incluirse dentro del nombre de la variable, de lo contrario, 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 anteponiéndole un signo de dólar. $.

    • $: Prefijado con 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 únicamente con la función Jitterbit.GetVar función.

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

Variables del proyecto

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

En JavaScript de Jitterbit, la sintaxis utilizada para recuperar el valor de una variable de proyecto depende de si el nombre de la variable de 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 $.

    • $: Prefijado con 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 únicamente con la 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 de 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 el proyecto, conocidas como variables Jitterbit (o conocidas como variables globales predefinidas). Estas se pueden utilizar para obtener información global, como el nombre del archivo fuente actual o el nombre de la operación actual. Estas se documentan individualmente en Variables Jitterbit sección.

En JavaScript de Jitterbit, las variables de Jitterbit predefinidas por Jitterbit solo son accesibles con el Jitterbit.GetVar Función. Esto se debe a que todas las variables 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 de dólar $Debe incluirse dentro del nombre de la variable.

Complementos

Actualmente, no se admiten 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, puedes ver y validar los valores de las variables tal como lo harías para un Jitterbit Script. Sin embargo, la opción Deshabilitar puntos de interrupción no es aplicable ya que la depuración no está disponible en JavaScript. Al realizar pruebas, los resultados del secuencia de comandos (tal como se configuran mediante SetScriptOutput o SetScriptResult Las 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 archivo 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);

La cantidad máxima de iteraciones de bucle permitidas en Harmony es 50 000. La cantidad máxima de iteraciones de bucle en JavaScript es por secuencia de comandos, no por bucle.

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

Para aumentar el número máximo de iteraciones permitidas en cualquier secuencia de comandos de 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 JSON en JavaScript

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 JSON en JavaScript

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 JSON en JavaScript

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