Saltar al contenido

Lenguaje de Jitterbit Script

El lenguaje de secuencias de comandos Jitterbit se puede utilizar en todo tipo de secuencias de comandos de comandos dentro de Jitterbit, incluidas secuencias de comandos creadas como elementos de proyecto dentro de operaciones, así como secuencias de comandos dentro de asignaciones de transformación. Consulte Crear un Secuencia de Comandos para obtener instrucciones sobre cómo crear un secuencia de comandos y usar el generador de secuencia de comandos en Jitterbit.

Sintaxis

Cada secuencia de comandos Jitterbit siempre está rodeado por un conjunto de <trans>...</trans> etiquetas. Esto se aplica a los secuencias de comandos creados como elementos de proyecto, así como a los secuencias de comandos del "Creador de fórmulas" creados dentro de asignaciones de transformación.

Nota

El resultado que se devuelve en un secuencia de comandos o fórmula de Jitterbit será el valor devuelto de la última declaración del secuencia de comandos antes del cierre. </trans> etiqueta.

Dentro de <trans>...</trans> etiquetas, "//" marca el inicio de un comentario y afecta el texto hasta el final de esa línea. Los comentarios no formarán parte del secuencia de comandos que se ejecuta ni del resultado transformado.

Por ejemplo, un comentario en una sola línea podría verse así:

Single-Line Comment in Jitterbit Script
<trans>
// This is a comment
DbLookup(...)
</trans>

También puedes utilizar un comentario estilo bloque:

Multi-Line Comment in Jitterbit Script
<trans>
/* This is a multi-line comment
This line is also a comment
This is the final line of the comment */
DbLookup(...)
</trans>

Además, Jitterbit admite expresiones regulares como medio para especificar y reconocer cadenas de texto, incluidos caracteres, palabras o patrones de caracteres particulares. Jitterbit admite la sintaxis de expresiones regulares del lenguaje de programación Perl 5.

<trans>
RegExMatch(<input>,<expression>,...)
</trans>

Para obtener más información, consulte http://www.boost.org/doc/libs/1_49_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html.

Funciones y Elementos de Datos

Un secuencia de comandos Jitterbit consta de funciones integradas, elementos de datos y lógica que se ejecutarán, separados por caracteres de punto y coma (;). El lenguaje de secuencia de comandos Jitterbit tiene pocas estructuras de control, pero tiene muchas funciones diseñadas específicamente para la manipulación de datos.

Funciones

Todas las funciones integradas de Jitterbit que están disponibles en la pestaña Funciones al crear un secuencia de comandos están disponibles como referencia en Creador de fórmulas.

Elementos de Datos Globales

Puede acceder a todos los elementos de datos globales en la pestaña Elementos de datos al crear un secuencia de comandos. Estas incluyen variables globales, variables de proyecto y variables Jitterbit. Consulte Variables globales y Variables del proyecto para más información. Las variables de Jitterbit se documentan individualmente en Variables de Jitterbit.

Se accede a los elementos de datos globales escribiendo un signo $ antes del nombre del elemento o usando el Set y Get funciones.

Los nombres de las variables se pueden componer de letras (a-z, A-Z), números (0-9), puntos y caracteres de subrayado. Otros personajes no están permitidos. (Tenga en cuenta que en el caso de variables locales, el carácter de punto no está permitido.)

Este ejemplo hace referencia a un elemento de datos global usando $ para crear un diccionario global:

<trans>
$org.lookup.currency=Dict();
$org.lookup.currency[1]="USD";
$org.lookup.currency[2]="EUR";
</trans>

Aquí, un elemento de datos globales a otro elemento de datos globales usando el Set y Get funciones:

<trans>
Set("op2", Get("op"));
</trans>

Tenga en cuenta que para ciertas variables Jitterbit, debido a que describen elementos de datos que incluyen un guión, un carácter no permitido para los nombres de variables, debe hacer referencia a ellos usando el Set o Get funciones:

<trans>
Get("jitterbit.source.http.response.header.Content-Type");
</trans>

Elementos de Datos de Origen

Si está utilizando un secuencia de comandos creado dentro de la transformación, también tendrá acceso a los elementos de datos de origen. Los elementos de datos de origen se utilizan para hacer referencia a datos de origen y se hace referencia a ellos por sus rutas en el árbol de origen. Se proporciona más información en Crear un Secuencia de Comandos.

Este ejemplo asigna un elemento de datos de origen a un elemento de datos global:

<trans>
$org.calculate.operand1=root$transaction.request$body$Calculate$input.Operand1$;
</trans>

Elementos de Datos Locales

También puede utilizar elementos de datos locales, también conocidos como variables locales, que cree y utilice dentro del mismo secuencia de comandos. Consulte Variables locales para más información. Las características de los elementos de datos locales son las siguientes:

  • Un elemento de datos local se define y utiliza únicamente dentro de la expresión; una vez que se asigna su valor en la expresión, el elemento de datos local se elimina. Por lo tanto, el conflicto entre el valor de un elemento de datos local en la expresión actual y los de otras expresiones no es motivo de preocupación.
  • El elemento de datos local no puede ser definido ni recuperado por el set()/get() funciones.
  • RunScript() puede pasar argumentos al secuencia de comandos, por ejemplo RunScript(SCRIPT_ID, 5, "abc",...). Los valores en el secuencia de comandos se pueden asignar a variables locales predefinidas _1, _2... En este ejemplo, _1 representa el valor entero de 5, mientras que _2 representa el valor de cadena "abc". La variable local debe definirse antes de poder hacer referencia a ella, excepto en el caso de los argumentos de entrada _1, _2,... descritos anteriormente.
  • El ArgumentList() La función está disponible para redefinir una lista de elementos de datos locales como argumentos de entrada.

Tipos de Datos

Todos los elementos de datos de origen y elementos de datos globales que no son nulos tienen un tipo asociado. Jitterbit admite los siguientes tipos de datos: entero, largo, flotante, doble, fecha, cadena, booleano, intervalo de tiempo, bit, binario y matriz. Los tipos de elementos de datos se pueden cambiar usando las funciones en Conversión categoría.

Matrices

Una matriz es una colección de elementos de datos. Cada miembro de la colección puede ser de cualquier tipo admitido, incluidas las matrices. Se puede acceder a los miembros de una matriz usando el Get() y Set() métodos o utilizando el [] array sintaxis. Las matrices tienen un índice cero y los índices son numéricos, secuenciales y no se pueden omitir.

También puede crear matrices de variables globales. Una variable global de matriz es una matriz de otras variables globales que a su vez pueden ser matrices.

Establecer una Matriz

Puede establecer valores en una matriz usando el Set() método con esta sintaxis:

type Set(string name, type value [, int index1, int index2, ...])

Esto establece el valor de la variable global con el nombre dado en valor y devuelve el valor. Si el primer argumento es una matriz o el nombre de un elemento de datos de una matriz, puede establecer el valor de un elemento de matriz especificando su índice (o índices para matrices multidimensionales) como tercer argumento.

No todos los elementos de una matriz tienen que ser del mismo tipo. Por ejemplo, puede crear una matriz que contenga una fecha, un número entero y una cadena. Incluso puedes crear matrices dentro de otras matrices.

Este ejemplo crea una matriz con tres elementos de diferentes tipos donde cada entrada representa la fecha y hora actuales:

<trans>
$right_now = Now();
Set($now, $right_now, 0);
Set($now, Long($right_now), 1);
Set($now, String($right_now), 2);
</trans>

Como las matrices tienen un índice cero, el primer elemento está en el índice 0 y el último elemento está en el índice (tamaño -1). Para agregar datos a una matriz, pase un valor de índice negativo o el tamaño de la matriz (Length($arr)). Configurar un elemento con un índice mayor que el tamaño de la matriz da como resultado un error de índice fuera de rango. La configuración de elementos de datos que no son de matriz también se puede realizar utilizando el $de_name sintaxis.

A continuación se muestran ejemplos de configuración de valores en una matriz:

// Set the n:th entry in an array to the string "value"
Set($arr, "value", n-1);

// Another way to set the n:th entry an array
Set($arr, "value", Length($arr));

// Sets the value to a new element at the end of the array
Set($arr, "value", -1);

// Set the n:th entry of the m:th array
Set($record_set, "value", m-1, n-1);

Nota

Para obtener una sintaxis adicional que se puede utilizar para definir valores en una matriz, consulte Diccionario y funciones de matriz.

Acceder a una Matriz

Puede acceder a los elementos de una matriz utilizando el Get() método:

type Get(string name[, int index1, int index2, ...])

Esto devuelve el valor de la variable global con el nombre de pila. Si el primer argumento es una matriz o el nombre de un elemento de datos de una matriz, puede obtener un elemento específico especificando su índice (o índices para una matriz multidimensional como un conjunto de registros) como segundo argumento.

Las matrices están indexadas a cero. Para acceder al n:th elemento de una matriz llamada "arr", usar Get("arr", n-1). Para matrices multidimensionales, debe especificar todos los índices. Para acceder al n:th columna de la m:th fila en una matriz llamada ResultSet usarías Get("ResultSet", m-1, n-1). Si intenta llevar un elemento más allá del final de la matriz, se producirá un error de matriz fuera de rango.

Estos son ejemplos de cómo recuperar valores de una matriz:

// Return the third array element
Get($arr, 2);

// Another way to return the third array element
Get("arr", 2);

// Get the n:th element of the m:th array in arr
Get($arr, m-1, n-1);

Este ejemplo muestra cómo puede crear primero un secuencia de comandos que genere y devuelva una matriz. El segundo bloque muestra cómo ejecutar ese secuencia de comandos y asignar su valor devuelto a una variable.

Build Array
<trans>
// Script to build and return an array
a = Array();
a[Length(a)] = "A";
a[Length(a)] = "B";
a[Length(a)] = "C";
a;
</trans>
Call Script to Get Array
<trans>
// Call the script to retrieve the array
$Arr = RunScript("<TAG>Scripts/Build Array</TAG>";
</trans>

Cierto Creador de fórmulas las funciones devuelven matrices. Por ejemplo, SelectNodesFromXMLAny()devuelve los resultados de una consultar XPath como una matriz. El DbExecute() La función devuelve un conjunto de registros como una matriz bidimensional: primero las filas, luego las columnas. Este ejemplo devuelve los datos seleccionados como una matriz de matrices (que representan las filas y columnas seleccionadas):

<trans>
$resultSet = DbExecute("Project Name/Sources/Database Name", "select Result from SimpleCalculatorResults");
$firstRow = Get($resultSet, 0);
$thirdColumnOfSecondRow = $resultSet[2][3];
$secondColumnOfThirdRow = Get($resultSet, 3, 2);
</trans>

Nota

Para obtener sintaxis adicional que se puede utilizar para acceder a valores en una matriz, consulte Diccionario y funciones de matriz.

Diccionarios

En Jitterbit, un diccionario es un tipo especial de matriz de variables globales que contiene pares clave-valor. Los pasos y funciones son:

  1. Inicialice el diccionario usando Dict función:

    $d = Dict();
    
  2. Cargue datos con una clave y un valor:

    $d['4011'] = 'Banana';
    $d['4063'] = 'Tomato';
    
  3. Compruebe si la clave ya existe en el diccionario usando HasKey función:

    HasKey($d,'4011'); // Returns true
    

    En el ejemplo, ya hemos cargado la clave '4011', por lo que HasKey volvería true.

    HasKey($d,'4089'); // Returns false
    

    Si la clave aún no estaba cargada, por ejemplo '4089', la clave HasKey volvería false.

  4. Busque el valor en el diccionario pasando la clave y recuperando el valor:

    $d['4011']; // Returns 'Banana'
    

    En este ejemplo, el valor devuelto sería Banana.

Con los diccionarios, tenga en cuenta estas características:

  • El alcance de los diccionarios se limita al flujo de trabajo. Por ejemplo, si una operación carga un diccionario con 10.000 registros, solo aquellas operaciones que están vinculadas mediante las rutas En caso de éxito o En caso de error, o con el RunOperation() función: tendrá acceso a ese diccionario. Sin embargo, si una operación utiliza fragmentación de datos y subprocesamiento y tiene una transformación que llena un diccionario, ese diccionario será inconsistente. Esto se debe a que Jitterbit no toma valores asignados a variables por múltiples subprocesos de operación y los concatena en un único conjunto de valores. Esto es cierto para todas las variables y matrices globales. Para evitar este problema, utilice los valores predeterminados de fragmentación de datos/subprocesamiento al crear una operación que complete diccionarios.
  • Los diccionarios, debido a que utilizan una búsqueda binaria, son muy rápidos para encontrar claves y devolver valores. Por lo general, se puede encontrar una clave en cinco o seis intentos. Por el contrario, compare esa búsqueda con el trabajo requerido para recorrer una matriz de 10.000 registros para encontrar una clave específica.
  • Los diccionarios están escritos de manera que no afecten materialmente la memoria disponible del servidor para su procesamiento.

Operadores

Este es un resumen de los operadores admitidos por el secuencia de comandos Jitterbit. El secuencia de comandos Jitterbit intentará convertir los argumentos para habilitar la operación. Si esto no es posible, se informará un error.

Aritmética

Operador Descripción
+ Agrega dos números o concatena dos cadenas. Si se agrega una cadena a cualquier otra cosa, ambos argumentos se convierten en cadenas. Si ambos argumentos son números, el resultado es de tipo doble.
++ Incrementa el valor en 1. Ejemplo: $count++; si tiene prefijo, la asignación precede al incremento.
+= Concatena una cadena o agrega números a la variable de destino. Ejemplo: $count+=2 es lo mismo que $count=$count+2.
- Resta dos números. El resultado es de tipo doble.
-- Disminuye un valor en 1. Ejemplo: $count--; si tiene prefijo, la asignación precede al decremento.
-= Resta números de la variable objetivo. Ejemplo: $count-=2 es lo mismo que $count=$count-2.
/ Divide dos números. El resultado es de tipo doble.
* Multiplica dos números. El resultado es de tipo doble.
^ Eleva el primer argumento a la potencia del segundo argumento. Si ambos argumentos son números enteros, el resultado es un número entero.

Lógico

Operador Descripción
& Operador lógico AND. El resultado es de tipo booleano. && también puede ser usado. Este es siempre un operador de cortocircuito, lo que significa que si el argumento de la izquierda se evalúa como falso, el argumento de la derecha no se evalúa.
| Operador lógico OR. El resultado es de tipo booleano. || también puede ser usado. Este es siempre un operador de cortocircuito, lo que significa que si el argumento de la izquierda se evalúa como verdadero, el argumento de la derecha no se evalúa.

Comparación

Utilice los siguientes operadores para comparar los valores de dos argumentos del mismo tipo de datos:

Operador Descripción
= Asigna a una variable. El argumento de la derecha se asigna al argumento de la izquierda.
== Operador de equivalencia. Devuelve verdadero si los argumentos son iguales. Devuelve falso si no son iguales.
!= Operador no equivalente. Devuelve verdadero si los argumentos no son iguales. Devuelve falso si son iguales.
<
>
<=
>=
Operadores de comparación. Devuelve verdadero o falso.

Nota

No se admite la comparación de argumentos de diferentes tipos de datos.

Negación

Operador Descripción
!

Operador de negación. Convierte un valor verdadero en falso y viceversa. Ejemplo:

!IsNull($org.workorder.id)

Formación

Operador Descripción
{ }

Se utiliza para construir una matriz. Ejemplos:

\(a={"Londres","París","Nueva York"};<br/>\)b={{"John",25},
{"Steve",32},
{"Daniel",26}
};
$c={"\"quoted\"", '"quoted"'};

Secuencias de Escape

Jitterbit reconoce estas secuencias de escape cuando se usan en cadenas literales:

Secuencia Definición
\t Pestaña
\r Retorno de carro
\n Nueva línea

Las cadenas literales deben estar entre comillas dobles (") o comillas simples (').

La comilla circundante se debe escapar usando una barra invertida si se usa dentro de la cadena. Es posible que sea necesario utilizar barras invertidas con formato de escape si se utilizan con cualquiera de los caracteres de la secuencia de escape. Por ejemplo:

$str = "String with line break.\nThat's the last line.";

$str = 'Tony "The Gun" Marcello';

$str = "Tony \"The Gun\" Marcello";

$path = "C:\\tacos"

Estructuras de Control

El lenguaje Jitterbit Script no incluye declaraciones de control como if o while bucles. En su lugar, puede utilizar funciones Jitterbit para lograr la misma funcionalidad. Ver el Case, If, y While funciones en Funciones lógicas. El Eval función en Funciones generales se puede utilizar como una declaración "try-catch".

Nota

  • 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 Jitterbit Script Language es por cada bucle individual. Para aumentar el número permitido de iteraciones por bucle en un secuencia de comandos de Jitterbit Script Language, consulte jitterbit.scripting.while.max_iterations en Secuencias de comandos de variables Jitterbit.
  • El número máximo de iteraciones de bucle en JavaScript es por secuencia de comandos (agregado de todos los bucles dentro de un secuencia de comandos). Para aumentar el número máximo de iteraciones de bucle en JavaScript, consulte Java Secuencia de Comandos Loop en JavaScript.