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
yMap
- 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 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.
Funciones
Las funciones disponibles para usar en JavaScript están disponibles en cuatro categorías.
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)
yJitterbit.SetVar(string name, string value)
Advertencia
El
Jitterbit.GetVar
yJitterbit.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 usandoJitterbit.GetVar
yJitterbit.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
ySetScriptResult
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.
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$
sinvar
.var $:
Usandovar
y comenzando con un signo de dólar$
, el ejemplo de códigovar $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$
convar
.$:
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:
UsandoJitterbit.SetVar
, el ejemplo de códigoJitterbit.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:
UsandoJitterbit.GetVar
, el ejemplo de códigoJitterbit.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:
UsandoJitterbit.GetVar
, el ejemplo de códigoJitterbit.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:
UsandoJitterbit.GetVar
, el ejemplo de códigoJitterbit.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
// 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
// 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
// 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
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
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.
// 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);