Saltar al contenido

Funciones generales en Jitterbit Design Studio

Las funciones generales incluyen aquellas funciones que no son específicas de una actividad particular pero encuentran aplicación en casi cualquier script.

ArgumentList

Declaración

null ArgumentList(type var1[,... ])

Sintaxis

ArgumentList(<var1>[,... ])

Parámetros requeridos

  • var1: Una variable local, a ser inicializada desde la lista de argumentos de la instancia que realiza la llamada

Parámetros opcionales

  • var2,... varN: Variables adicionales a ser inicializadas desde la lista de argumentos de la instancia que realiza la llamada

Descripción

Esta función inicializa un conjunto de variables locales desde su lista de argumentos.

La construcción de las variables locales depende de cuál de estos casos se aplica:

  • Caso 1: Asignaciones de Transformación Cuando la llamada a la función se realiza en la asignación de un campo destino. (Una llamada a la función setinstances debe haber sido realizada previamente.) Las variables locales se construyen a partir de las variables globales correspondientes en la instancia dada por la función SetInstances().
  • Caso 2: Ejecutar un Script Cuando la llamada a la función se realiza en un script. Las variables locales se construyen a partir de los argumentos correspondientes en la lista proporcionada por la sentencia runscript que realiza la llamada. Estas variables también pueden ser direccionadas por índice, como _1, _2...

Esta función devuelve un valor nulo que puede ser ignorado. Como alternativa, consulta la función getinstance.

Ejemplos

Caso 1: Asignaciones de Transformación
// Assuming a parent mapping contains these statements:
...
s = "SELECT key_name, key_value, key_type FROM key_values";
r = DBLookupAll("<TAG>Sources/DB...</TAG>", s);
SetInstances("DETAILS", r);
...

// In the DETAILS target node, a field could have as a mapping:
<trans>
ArgumentList(key, value, type);
key + " = " + value + " (of type " + type + ")";
</trans>
Caso 2: Ejecutar un Script
// This code fragment calls a script "CalculateDisplayString":
...
RunScript("<TAG>Scripts/CalculateDisplayString</TAG>", "John", 35);
// The result will be the string "John is 35 years old."
...

// The script "CalculateDisplayString", using names:
<trans>
ArgumentList(name, age);
name + " is " + age + " years old.";
</trans>

// Same script "CalculateDisplayString", using indices:
<trans>
// ArgumentList: name, age
_1 + " is " + _2 + " years old.";
</trans>

AutoNumber

Declaración

int AutoNumber()

Sintaxis

AutoNumber()

Descripción

Devuelve el número de una instancia dentro de una jerarquía particular.

Advertencia

Este método ha sido descontinuado y puede ser removido en una versión futura de Jitterbit. Utiliza en su lugar las funciones TargetInstanceCount o SourceInstanceCount. La función TargetInstanceCount es equivalente a esta función.

Ejemplos

Supongamos que una arquitectura destino tiene dos registros de nivel superior: PO1 y PO2:

  • PO1 es padre de tres registros secundarios: PO1_record1, PO1_record2, y PO1_record3.
  • PO2 es padre de dos registros secundarios: PO2_record1 y PO2_record2.

Cuando se llama a la función AutoNumber:

  • AutoNumber llamada en el nivel padre devuelve 1 en PO1 y devuelve 2 en PO2.
  • AutoNumber en el nivel secundario de PO1 devuelve 1 en PO1_record1, devuelve 2 en PO1_record2, y devuelve 3 en PO1_record3, ya que PO1 tiene 3 registros secundarios.

CancelOperation

Declaración

void CancelOperation(string operationInstanceGUID)

Sintaxis

CancelOperation(<operationInstanceGUID>)

Parámetros requeridos

  • operationInstanceGUID: El GUID de instancia de operación que va a ser cancelado

Descripción

Cancela una instancia de operación particular especificada por un GUID de instancia de operación.

Como se muestra en el ejemplo a continuación, llama a la función GetOperationQueue para recuperar instancias de operaciones en ejecución. El GUID de instancia de operación se encuentra en el índice 4 de los subarreglos devueltos por la función GetOperationQueue. Consulta la función GetOperationQueue para obtener más detalles.

Ejemplos

// Cancel all instances of a particular operation
queue = GetOperationQueue("<TAG>Operations/My Operation</TAG>");
n = Length(queue);
i = 0;
While(i < n, op_inst = queue[i][4];
  WriteToOperationLog("Canceling operation instance: " + op_inst);
  CancelOperation(op_inst);
  i++;
);

CancelOperationChain

Declaración

void CancelOperationChain(string message)

Sintaxis

CancelOperationChain(<message>)

Parámetros requeridos

  • message: Si se proporciona una cadena no vacía, se registrará como un mensaje de advertencia en el registro de operaciones.

Descripción

Si la operación actual tiene operaciones de éxito o fracaso, llamar a este método cancelará esas operaciones. También se cancelarán todas las operaciones vinculadas por una condición. Sin embargo, se completarán todos los scripts en la operación actual.

Esto puede ser útil si una operación se ejecuta en un bucle y se ha alcanzado la condición para dejar de hacer bucles.

Ejemplos

CancelOperationChain("The success operation does not need to run.");

Eval

Declaración

string Eval(type expToEvaluate, type defaultResult)

Sintaxis

Eval(<expToEvaluate>, <defaultResult>)

Parámetros requeridos

  • expToEvaluate: Una expresión a evaluar; si es válida, se devolverá su resultado
  • defaultResult: Resultado predeterminado a evaluar y devolver si expToEvaluate no es válido

Descripción

Evalúa el primer argumento; si es válido, su resultado se devuelve como una cadena. De lo contrario, se evalúa el valor predeterminado y sus resultados se devuelven como una cadena.

Se puede utilizar como una declaración "try-catch" ya que el segundo argumento solo se evaluará si el primero falla.

Nota

No se recomienda usar esta función con RunOperation ya que siempre devolverá un resultado válido después de que se ejecute la operación, a menos que la llamada de operación en sí sea incorrecta o inválida. En su lugar, para capturar operaciones fallidas, se pueden usar funciones como If y GetLastError para lograr una funcionalidad similar. Para obtener más información, consulta la sección Scripting en Prácticas recomendadas para Design Studio.

Ejemplos

// Returns a value of "100"
// the string representation of 4 multiplied by 25:
entry = Eval(4*25,"Bad Entry");

// Returns "Bad Entry", as strings cannot be multiplied:
book = "";
entry = Eval(book*36.4, "Bad Entry");

// Execute a SQL statement and terminate an operation if it fails:
results = Eval(
  DBLookup("<TAG>Project Name/Sources/Source Name</TAG>", "SELECT col FROM table"),
  RaiseError("Failed to execute SQL statement: " + GetLastError())
);

Get

Declaración

type Get(string name)

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

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

Sintaxis

Get(<name>[, <index1>, <index2>,... <indexN>])

Parámetros requeridos

  • name: El nombre de una variable global, ya sea un escalar o un arreglo, o un arreglo

Parámetros opcionales

  • index1,... indexN: Índices que especifican el elemento deseado en el arreglo o en un subarreglo

Descripción

Devuelve el valor de una variable global con un nombre determinado. Si se le pasa un arreglo o el nombre de una variable global que es un arreglo, devuelve un elemento del arreglo. Consulta también la función complementaria Set.

Si el primer argumento es un arreglo o el nombre de una variable global que es un arreglo, la función recupera un elemento específico por su índice (o índices para un arreglo multidimensional como un conjunto de registros) usando los argumentos restantes.

Los arreglos tienen índice cero; el primer elemento está en el índice 0 y el último elemento (del arreglo $array) está en el índice [Length($array)-1].

Intentar recuperar un elemento más allá del final del arreglo resultará en un valor de retorno nulo.

Ejemplos

// Returns the value of the global variable "Count"
Get("Count");

// Returns the third element of an array (0-based)
Get($arr, 2);

// For arrays, this is the same as previous,
// as "arr" is equivalent to $arr in the case of arrays
Get("arr", 2);

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

GetChunkDataElement

Declaración

type GetChunkDataElement(string name)

Sintaxis

GetChunkDataElement(<name>)

Parámetros requeridos

  • name: El nombre de la variable de chunk

Descripción

Devuelve el valor de la variable de chunk con un nombre determinado. Una variable de chunk se evalúa a medida que se procesa cada chunk de datos. Un método alternativo es usar la sintaxis SCOPE_CHUNK de la función Set. Consulta también las funciones SetChunkDataElement y Set.

Ejemplos

// If used in a transformation mapping, this sets
// the value of the chunk variable "CustomerFileName" to
// the results of a calculation using the value of the "Customer" field
// at the time of the chunking to create a filename for that chunk:

SetChunkDataElement("CustomerFilename", "customer_" + CustomerID + ".csv");

// This global variable would be available as a variable in the
// filenames field of the connection parameters of a target as:

[CustomerFilename]

// It would also be available in scripts in the same chunk as:

GetChunkDataElement("CustomerFilename");

// With each chunk created, a unique filename for that customer ID
// will be created, such as (depending on the values of CustomerID):
customer_1009.csv
customer_2019.csv
customer_5498.csv


// Returns the value of a chunk variable
result = GetChunkDataElement("Count");

GetHostByIP

Declaración

string GetHostByIP(string ipAddress)

Sintaxis

GetHostByIP(<ipAddress>)

Parámetros requeridos

  • ipAddress: Una cadena con una dirección IP

Descripción

Resuelve una dirección IP a un nombre de host.

Ejemplos

GetHostByIP("127.0.0.1");

GetInputString

Declaración

string GetInputString(type arg)

Sintaxis

GetInputString(<arg>)

Parámetros requeridos

  • arg: Una variable global

Descripción

Devuelve la entrada sin formato como una cadena dada una variable global de origen.

Esto es útil cuando la representación estándar de Jitterbit de un tipo de dato (como una fecha o double) no es adecuada y se requiere la entrada "sin procesar". Si se llama este método en un objeto que no es una variable global de origen, se devuelve una cadena vacía.

Ejemplos

// The input is too large for a Jitterbit double
// return the raw input instead
$SessionId = GetInputString(root$transaction$body$GetMachineList$req$SessionID$)

GetLastOperationRunStartTime

Declaración

date GetLastOperationRunStartTime(string operationId)

Sintaxis

GetLastOperationRunStartTime(<operationId>)

Parámetros requeridos

  • operationId: Una operación en el proyecto actual

Descripción

Devuelve la última fecha y hora en que se ejecutó la operación dada. El valor devuelto es una fecha (que incluye la fecha y la hora). Se debe usar solo con un agente único.

La operación utilizada en esta llamada de función debe estar definida como una operación en el proyecto actual. Consulta las instrucciones sobre insertar elementos del proyecto.

La fecha devuelta está en UTC (sin una zona horaria específica). Usa la función ConvertTimeZone para convertir a una hora local, como se ve en el ejemplo a continuación.

Advertencia

Esta función solo debe usarse con un agente privado único, ya que no es precisa cuando se usan agentes en la nube o múltiples agentes privados.

Ejemplos

$lastOpRun = GetLastOperationRunStartTime("<TAG>Operations/MyOperation</TAG>");
// Converting to a local time zone
$lorInMyTimeZone = ConvertTimeZone($lastOpRun,"UTC","CST");

GetName

Declaración

string GetName(type arg)

Sintaxis

GetName(<arg>)

Parámetros requeridos

  • arg: Una variable o variable global

Descripción

Devuelve el nombre de una variable o variable global.

Ciertas funciones devuelven una matriz de variable global nombrada; si está definida, esta función recupera el nombre del valor.

Ejemplos

x = {a="var1", b="var2"};
GetName(x[0]);
// Returns the string "a"
GetName(x)[0];
// Also returns the string "a"
// The source is a simple text and [] represents the source element
values = GetSourceInstanceArray([]);
// Returns the first field name of the source element
GetName(values[0]);

GetOperationQueue

Declaración

array GetOperationQueue([string operationTag])

Sintaxis

GetOperationQueue([<operationTag>])

Parámetros opcionales

  • operationTag: Una operación en el proyecto actual; de lo contrario, se utilizan todas las operaciones en el proyecto actual

Descripción

Devuelve el contenido de la cola de operaciones como una matriz. Solo se devolverán las operaciones para las que el usuario actual tiene acceso de lectura. Se debe utilizar solo con un único agente.

El resultado se devuelve como una matriz de matrices, con estos elementos en cada submatriz:

  • 0: GUID de operación (cadena)
  • 1: La bandera IsExecuting (booleano)
  • 2: Marca de tiempo (fecha) de cuando la operación se agregó a la cola
  • 3: Segundos en estado actual (entero)
  • 4: GUID de instancia de operación (cadena)
  • 5: Nombre de la operación (cadena)

El argumento de etiqueta de operación es opcional. Si el argumento de etiqueta de operación está presente, solo se devolverán las entradas de cola para esa operación en particular. Consulta las instrucciones sobre insertar elementos de proyecto.

Advertencia

Se debe utilizar esta función solo con un único agente privado, ya que no es precisa cuando se utilizan agentes en la nube o múltiples agentes privados.

Ejemplos

// Write the queue for a particular operation to the operation log:
queue = GetOperationQueue("<TAG>Operations/MyOperation</TAG>");
n = Length(queue);
i = 0;
// Loop over the queue entries
While(i < n,
  WriteToOperationLog("Queue Entry: GUID=" +
    queue[i][0] + "; IsExecuting=" + queue[i][1] +
    "; Added at: " + queue[i][2] );
  i++;
);

GetServerName

Declaración

string GetServerName()

Sintaxis

GetServerName()

Descripción

Devuelve el nombre de la máquina en la que se ejecuta el agente.

Ejemplos

GetServerName();
// Devuelve el nombre del servidor

GUID

Declaración

string GUID()

Sintaxis

GUID()

Descripción

Devuelve una cadena GUID (un identificador único global, también conocido como identificador único universal o UUID).

El formato del GUID es xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, donde M es la versión (4) y N es la variante (8).

Ejemplos

GUID();
// Devuelve una cadena como "c056f89d-1f45-458e-8b25-9ecf2ed10842"

IfEmpty

Declaración

type IfEmpty(type arg, type default)

Sintaxis

IfEmpty(<arg>, <default>)

Parámetros requeridos

  • arg: Un argumento a evaluar para ver si es nulo o una cadena vacía
  • default: Valor predeterminado a devolver si arg es nulo o una cadena vacía

Descripción

Devuelve el valor predeterminado si el primer argumento es nulo o si la representación en cadena del argumento es una cadena vacía. De lo contrario, devuelve el primer argumento. Este es un atajo para una declaración de función If:

If(IsNull(arg)|Length(arg)==0, default, arg)

Consulta también la función IsNull.

Ejemplos

// Si la variable "myDate" es nula o vacía,
// devuelve la fecha actual; de lo contrario, devuelve "myDate"
result = IfEmpty(myDate, Now());

IfNull

Declaración

type IfNull(type arg, type default)

Sintaxis

IfNull(<arg>, <default>)

Parámetros requeridos

  • arg: Un argumento a evaluar para verificar si es nulo
  • default: Valor predeterminado a devolver si arg es nulo

Descripción

Devuelve el valor predeterminado si el primer argumento es nulo; de lo contrario, devuelve el primer argumento.

Esta es una forma abreviada de una declaración de función If:

If(IsNull(arg), default, arg)

Consulta también las funciones IsNull e IfEmpty.

Nota

Si jitterbit.target.xml.include_nil_attribute se configura como true antes de las funciones IfNull o IsNull, estas evaluarán una cadena vacía como un valor no nulo cuando se utilizan versiones de agente 11.43 o posteriores.

Ejemplos

// Si la variable "myDate" es nula,
// devuelve la fecha actual; de lo contrario, devuelve "myDate"
result = IfNull(myDate, Now());

InitCounter

Declaración

long InitCounter(type counter[, long initialValue])

Sintaxis

InitCounter(<counter>, <initialValue>)

Parámetros requeridos

  • counter: El nombre de una variable o una referencia a una variable global que se utilizará como contador

Parámetros opcionales

  • initialValue: El valor inicial a establecer para el contador; el valor predeterminado es 0

Descripción

Inicializa un contador, pasando opcionalmente un valor inicial. Se debe utilizar con un único agente.

Si no se establece un valor inicial, el valor inicial se configura en 0. El primer argumento es el nombre de una variable o una referencia a una variable (consulta los ejemplos). Este método se debe llamar únicamente en contextos de un solo hilo. Llamar a este método en un contexto de múltiples hilos resultará en un error. Consulta también Consideraciones al fragmentar.

Advertencia

Esta función se debe utilizar únicamente con un único agente, ya que genera un error en un contexto de múltiples agentes.

Ejemplos

// Initialize counter to 0 using the name of a global variable
InitCounter("counter");

// Initialize counter to 100 using a reference to a global variable
InitCounter($counter, 100);

InList

Declaración

int InList(type x[, type arg1, ... type argN])

Tipos de datos compatibles para type

int, float, long, double, string, bool, date, binary, collection, map

Sintaxis

InList(<x>[, <arg1>, ... <argN>])

Parámetros requeridos

  • x: Un elemento a comparar para encontrar una coincidencia

Parámetros opcionales

  • arg1...argN: Una serie de argumentos con los que se comparará x

Descripción

Verifica si x está en la lista de argumentos (arg1 a través de argN). Si se encuentra una coincidencia (por valor), esta función devolverá un entero que representa la posición de la coincidencia en la lista, siendo la primera posición en la lista representada por el entero 1.

Si la lista contiene más de una instancia de x, esta función devuelve la posición de la primera coincidencia (la coincidencia con el índice de posición más bajo). Se devuelve 0 si la lista no contiene un valor coincidente o si solo se proporciona un único argumento.

Importante

La función InList admite múltiples tipos de datos convirtiéndolos implícitamente a cadenas antes de la evaluación. Por ejemplo:

  • 123 y "123" son iguales.
  • 4.5 y "4.5" son iguales.
  • true y "1" son iguales.
  • false y "0" son iguales.
  • Date("7/15/2025") y "2025-07-15" son iguales.

Ejemplos

InList("x","a","b","c","x");
// Returns 4

InList("a","a","b","c","a");
// Returns 1

InList("x","a","b","c");
// Returns 0

InList("x");
// Returns 0

InList("1", 123, "12", true);
// Returns 3 due to implicit conversion

IsInteger

Declaración

bool IsInteger(type x)

Sintaxis

IsInteger(<x>)

Parámetros requeridos

  • x: Un elemento a ser evaluado

Descripción

Devuelve verdadero si el argumento es de tipo entero o largo, o puede convertirse a un entero o largo sin pérdida de información.

Ejemplos

$s="1";
IsInteger($s);
// Returns true
$s="1a";
IsInteger($s);
// Returns false
$s=12.12;
IsInteger($s);
// Returns false
$s=12.00;
IsInteger($s);
// Returns true

IsNull

Declaración

bool IsNull(type x)

Sintaxis

IsNull(<x>)

Parámetros requeridos

  • x: Un elemento a ser evaluado

Descripción

Devuelve verdadero si el argumento es nulo. Se aplica a campos de base de datos, variables y funciones que pueden devolver valores nulos.

Consulta también las funciones IfNull e IfEmpty para accesos directos que se pueden usar en lugar de esta función.

Nota

Si jitterbit.target.xml.include_nil_attribute se establece en true antes de las funciones IfNull o IsNull, estas evaluarán una cadena vacía como un valor no nulo al usar versiones de agente 11.43 o posteriores.

Ejemplos

// Si "POHeader.Vendor_Code" es nulo,
// devuelve la cadena "VC", de lo contrario devuelve el código
If(IsNull(POHeader.Vendor_Code), POHeader.Vendor_Code, "VC")

IsValid

Declaración

bool IsValid(type x)

Sintaxis

IsValid(<x>)

Parámetros requeridos

  • x: Un elemento a ser evaluado

Descripción

Devuelve verdadero si la evaluación del argumento se realiza sin errores.

Ejemplos

IsValid(Date("abc"))
// Returns false, since the string "abc"
// cannot be successfully converted to a date

IsValid(3/0)
// Returns false, since division by 0
// is not permitted

IsValid(0/3)
// Returns true, since 0/3 is a legal expression
// evaluating to 0

Length

Declaración

int Length(type x)

Sintaxis

Length(<x>)

Parámetros requeridos

  • x: Un elemento a ser evaluado

Descripción

Devuelve la longitud del argumento de entrada.

El comportamiento de este método depende del tipo de argumento:

  • cadena: se devuelve la longitud de la cadena
  • matriz: se devuelve el número de elementos en la matriz
  • datos binarios: se devuelve el número de bytes
  • Para todos los demás tipos, se intenta convertir el argumento a una cadena y se devuelve la longitud de la cadena resultante.
  • Si el argumento no puede convertirse a una cadena, o el argumento es nulo o de tipo desconocido, se devuelve 0.

Ejemplos

// String length:
Length("Mississippi"); // returns 11

// Array length:
// Count the number of email address nodes
$nodes = SelectNodesFromXMLAny("cust:EmailAddress", Customer$Any#.,
"cust=urn:xmlns:25hoursaday-com:customer");
Length($nodes);

// Binary arguments:
Length(HexToBinary("b2082fee"));
// Returns 4, because the input is a 4-byte binary value

// Numeric arguments:
Length(1234567); // Returns 7
Length(123.45678); // Returns 9

// Miscellaneous:
Length(true); // Returns 1
Length(Now()); // Returns 19 since the default date format is "yyyy-MM-DD hh:mm:ss"
Length(Null()); // Returns 0

Null

Declaración

null Null()

Sintaxis

Null()

Descripción

Devuelve null.

Ejemplos

Se puede utilizar esta función para insertar un valor null en columnas específicas de una base de datos.

Random

Declaración

int Random(int min, int max)

Sintaxis

Random(<min>, <max>)

Parámetros requeridos

  • min: Valor entero del número aleatorio mínimo
  • max: Valor entero del número aleatorio máximo

Descripción

Genera un número entero aleatorio entre los valores mínimo y máximo especificados, inclusive. Consulta también la función RandomString.

Ejemplos

// Creates a random number from 0 to 9999999 (inclusive)
Random(0, 9999999);


// Creates a random number from 1 to 10
Random(1, 10);
// Returns a random 7-character string
// using the characters "0123456789"
RandomString(7, "0123456789");

// Returns a random 5-digit hexadecimal string
RandomString(5, "0123456789ABCDEF");

// Returns a random 7-digit integer string
// with no leading zeroes
RandomString(1, "123456789") +
  RandomString(6, "0123456789");

RandomString

Declaración

string RandomString(int len[, string chars])

Sintaxis

RandomString(<len>[, <chars>])

Parámetros requeridos

  • len: Longitud de la cadena aleatoria resultante

Parámetros opcionales

  • chars: Cadena que contiene los caracteres que se utilizarán en la cadena aleatoria resultante

Descripción

Genera una cadena aleatoria de la longitud especificada. De forma predeterminada, la función utiliza caracteres alfanuméricos; el conjunto que incluye a-z, A-Z y 0-9. Consulta también la función Random.

Ejemplos

// Creates a random 5-digit hexadecimal string
RandomString(5, "0123456789ABCDEF");

// Creates a random 7-digit integer string
// with no leading zeroes
RandomString(1, "123456789") + RandomString(6, "0123456789");

ReadArrayString

Declaración

array ReadArrayString(string arrayString[, string type])

Sintaxis

ReadArrayString(<arrayString>[, <type>])

Parámetros requeridos

  • arrayString: Representación en cadena de un arreglo

Parámetros opcionales

  • type: Cadena que describe el tipo que representa la cadena de arreglo, como "string", "int", "double", "bool"

Descripción

Lee una cadena que representa un arreglo unidimensional o multidimensional.

El arreglo se representa encerrando los elementos del arreglo con un par de llaves ({ y }). Cada elemento del arreglo puede ser un arreglo o un elemento escalar separado por coma (,). Los elementos de un arreglo deben ser todos escalares o todos arreglos.

El valor escalar se puede representar mediante una cadena CSV. Las comillas dobles para encerrar la cadena son opcionales, a menos que la cadena contenga caracteres especiales como ",{}\n (comillas dobles, coma, llaves, tabulaciones, saltos de línea o retornos de carro). Dentro de la cadena entre comillas dobles, cada comilla doble debe escaparse con dos comillas dobles. El segundo argumento opcional sirve para especificar el tipo de dato del valor escalar. Si no se especifica explícitamente, se asume que el tipo es cadena.

Ejemplos

// One-dimensional array with four string values
ReadArrayString("{John,Steve,Dave,Eric}");

// One-dimensional array with three boolean values
ReadArrayString("{1,0,1}", "bool");

// Two-dimensional array
// The first array element is an array with three string values
// The second array element is an array with two string values
// The second element of the second array contains a trailing line break
ReadArrayString('{{abc,"a,b","a""b"},{"de","d
"}}');

RecordCount

Declaración

int RecordCount()

Sintaxis

RecordCount()

Descripción

Devuelve el número de instancia del bucle de destino que se está generando actualmente.

Si se llama en una condición, devuelve el número de instancia de la última instancia que fue generada. La primera vez que este método se llama en un bucle devuelve 0 (cero) si se llama en una condición; en caso contrario, devuelve 1 (uno). El contador se reinicia a 0 cada vez que se inicia un nuevo bucle.

Nota

Este método ha sido descontinuado y puede ser removido en una versión futura.

Utiliza SourceInstanceCount() o TargetInstanceCount() en su lugar. TargetInstanceCount() es equivalente a este método.

Ejemplos

RecordCount devuelve un valor de 5 al generar la quinta línea en un nodo de bucle de destino.

ReRunOperation

Declaración

bool ReRunOperation([bool runSynchronously])

Sintaxis

ReRunOperation([<runSynchronously>])

Parámetros opcionales

  • runSynchronously: Bandera para indicar si la operación debe ejecutarse de forma sincrónica (predeterminado) o asincrónica

Descripción

Vuelve a ejecutar la operación actual.

El comportamiento de este método con respecto al valor de retorno y las variables globales es idéntico al de la función RunOperation. Consulta esa función para obtener una descripción de cómo la re-ejecución sincrónica o asincrónica de la operación afecta a las variables globales.

Nota

Esta función también está sujeta al mismo límite a nivel de agente en llamadas sincrónicas realizadas desde un único bucle While, y comparte su recuento acumulativo con RunOperation y RunOperationFromProject. Consulta la nota bajo RunOperation para obtener detalles.

Advertencia

Dado que se trata de una llamada recursiva, es esencial que exista una condición de parada, probablemente incluyendo la función CancelOperation. De lo contrario, terminarás en un bucle infinito de llamadas de operación.

Ejemplos

ReRunOperation();
// Re-runs the current operation synchronously
ReRunOperation(false);
// Re-runs the current operation asynchronously

RunOperation

Declaración

bool RunOperation(string operationId[, bool runSynchronously])

Sintaxis

RunOperation(<operationId>[, <runSynchronously>])

Parámetros requeridos

Parámetros opcionales

  • runSynchronously: Bandera para indicar si la operación debe ejecutarse de forma sincrónica (predeterminado) o asincrónica

Descripción

Ejecuta una operación de forma sincrónica o asincrónica, siendo sincrónica la predeterminada.

Sincronía

Si run_synchronously es true, la operación invocada (secundaria) o la cadena de operaciones se ejecutará secuencialmente desde la operación invocadora (principal). Todas las variables globales se heredan de la operación secundaria y cualquier cambio en las variables globales se reflejará en la operación principal. Este es el comportamiento predeterminado si no se proporciona el segundo argumento. Devuelve false si la operación llamada resultó en un fallo.

Si run_synchronously es false, la operación invocada (secundaria) o la cadena de operaciones se ejecutará simultáneamente junto con la operación invocadora (principal). La operación llamada se agrega a la cola de procesamiento de Jitterbit para procesarse una vez que se hayan procesado las operaciones anteriores. Todas las variables globales se heredan de la operación secundaria pero los cambios en esas variables no se reflejarán en la operación principal. La operación principal continuará ejecutándose independientemente de la operación secundaria y no hay garantía sobre cuál operación finalizará primero. Devuelve false si la operación secundaria no pudo agregarse a la cola. En el modo asincrónico, estas variables globales se pasan a la operación llamada por valor en lugar de por referencia, lo que garantiza que cualquier cambio en las variables no se refleje en ninguna otra operación.

Para obtener más información, consulta Sincronía tal como se describe para la herramienta Invocar operación de Studio. El mismo concepto general se aplica a Design Studio.

Nota

Las operaciones llamadas con esta función se encadenan y se ejecutarán en el mismo agente que la operación llamadora, independientemente de la sincronía.

Si la función devuelve false para indicar un error o si no se pudo encolar la operación llamada, llama a GetLastError para recuperar el mensaje de error.

Nota

Un límite a nivel de agente también limita el número de llamadas sincrónicas de RunOperation realizadas desde dentro de un único bucle While (50 de forma predeterminada). Esto es independiente de MaxOperationStackDepth, que limita las llamadas de operación sincrónicas anidadas en lugar de las llamadas repetidas dentro de un bucle. RunOperation, RunOperationFromProject y ReRunOperation comparten un único recuento acumulativo por bucle, por lo que llamar a cualquiera de ellas de forma sincrónica dentro del mismo bucle cuenta para el mismo límite. Si se alcanza el límite, RunOperation devuelve false y la operación llamadora continúa ejecutándose. El registro de operaciones también registra una entrada que identifica la operación invocada por nombre (recurriendo a su GUID si no se puede resolver el nombre) cuando se alcanzó el límite, y GetLastError devuelve esta misma información de identificación. En agentes privados, se puede configurar el límite y si una operación puede anularlo en la sección [OperationEngine] del archivo jitterbit.conf.

Ejemplos

// Runs the "MyOperation"
RunOperation("<TAG>MyProject/Operations/MyOperation</TAG>");

RunOperationFromProject

Declaración

bool RunOperationFromProject(string operationId[, bool runSynchronously])

Sintaxis

RunOperationFromProject(<operationId>[, <runSynchronously>])

Parámetros requeridos

  • operationId: Un ID de operación en un proyecto diferente implementado en el mismo entorno que el proyecto actual.

Parámetros opcionales

  • runSynchronously: Marcador para indicar si la operación se debe ejecutar de forma sincrónica (la predeterminada) o asincrónica

Descripción

Ejecuta una operación de forma sincrónica o asincrónica, siendo la sincrónica la predeterminada. Esta función, disponible a partir de la versión 8.22, permite ejecutar operaciones de diferentes proyectos que se encuentran ya implementados en el mismo entorno que el proyecto actual. Esta función funciona de manera similar a la función RunOperation.

Obtención del ID de operación

Para obtener el operationID de la operación en el otro proyecto (denominado proyecto remoto), primero se debe implementar el proyecto remoto en el mismo entorno que el proyecto actual.

A continuación, usando el modo Analista de negocios de Design Studio, inserta esta función en el script. El asistente que aparece te pedirá el proyecto que deseas usar y luego te permitirá seleccionar una de sus operaciones implementadas actualmente. A continuación, creará una ruta apropiada y la insertará como ID. Consulta también las instrucciones sobre inserción de elementos de proyecto.

Variables globales

Las variables globales establecidas en el proyecto remoto se pueden heredar, dependiendo de si la operación remota se ejecuta de forma sincrónica o no. Como se describe en la siguiente sección, si se ejecuta de forma sincrónica, la operación llamada hereda las variables globales y cualquier cambio en ellas se reflejará en la operación actual. Esto permite que un proyecto remoto se comunique de vuelta a la operación que llama.

Con el modo asincrónico, estas variables globales se pasan a la operación remota por valor en lugar de por referencia, lo que garantiza que cualquier cambio en las variables no se refleje en la operación actual.

Ejecución sincrónica

Para runSynchronously=true, la operación y cualquier operación de éxito o fracaso se ejecutarán dentro de la operación actual y la operación actual esperará a que toda la cadena de operaciones llamada se termine. La operación llamada hereda todas las variables globales y cualquier cambio en las variables globales se reflejará en la operación actual. Este es el comportamiento predeterminado si no se proporciona el segundo argumento. Devuelve false si la operación llamada resultó en un fracaso.

Para runSynchronously=false, este método coloca una operación en la cola de procesamiento de Jitterbit para procesarse una vez que se hayan procesado las operaciones que la preceden. La operación llamada hereda todas las variables globales pero los cambios en esas variables no se reflejarán en la operación actual. La operación actual continuará ejecutándose de forma independiente de la cadena de operaciones llamada y no hay garantía sobre cuál operación terminará primero. Devuelve false si la operación no se pudo agregar a la cola.

Si la función devuelve false para indicar un fracaso o si la operación no se pudo poner en cola, llama a GetLastError para recuperar el mensaje de error.

Nota

La operación en el proyecto externo ya debe haberse implementado desde ese proyecto para poder usarse en una función RunOperationFromProject en el proyecto actual.

Nota

Un límite a nivel de agente también limita el número de llamadas sincrónicas a RunOperationFromProject realizadas desde dentro de un único bucle While (50 por defecto). Esto es independiente de MaxOperationStackDepth, que limita las llamadas de operaciones anidadas sincrónicas en lugar de llamadas repetidas dentro de un bucle. RunOperation, RunOperationFromProject y ReRunOperation comparten un único conteo acumulativo por bucle, así que llamar a cualquiera de ellas de forma sincrónica dentro del mismo bucle cuenta hacia el mismo límite. Si se alcanza el límite, RunOperationFromProject devuelve false y la operación llamante continúa ejecutándose. El registro de operaciones también registra una entrada que identifica la operación invocada por nombre (con respaldo a su GUID si no se puede resolver el nombre) cuando se alcanzó el límite, y GetLastError devuelve esta misma información de identificación. En agentes privados, se puede configurar el límite, y si una operación puede anularlo, en la sección [OperationEngine] del archivo jitterbit.conf.

Ejemplos

// Runs the "MyOperation" in the default mode of synchronously
RunOperationFromProject("<TAG>Project/MyProject/Operations/MyOperation</TAG>");

RunPlugin

Declaración

bool RunPlugin(string pluginId)

Sintaxis

RunPlugin(<pluginId>)

Parámetros requeridos

Descripción

Ejecuta un plugin especificado y luego continúa la ejecución del script actual. Si se instalan varias versiones de un plugin en un agente, se utiliza la versión más alta disponible.

En la interfaz de usuario de Design Studio, solo se muestran los plugins que se pueden ejecutar dentro de un script; los plugins que se ejecutan en fuentes, destinos y llamadas de servicios web están ocultos. Consulta las instrucciones sobre inserción de elementos de proyecto.

Devuelve true si el plugin se completa sin errores. Devuelve false si no se pudo ejecutar el plugin o si la implementación del plugin devolvió un error. Llama a GetLastError para recuperar el mensaje de error.

Ejemplos

// Runs the Jitterbit HMACSHA256Generator plugin
RunPlugin("<TAG>plugin:http://www.jitterbit.com/plugins/pipeline/user/HMACSHA256Generator</TAG>");

RunScript

Declaración

string RunScript(string scriptId[, type var1, type var2, ..., type varN])

Sintaxis

RunScript(<scriptId>[, <var1>, <var2>, ..., <varN>])

Parámetros obligatorios

Parámetros opcionales

  • var1...varN: Variables adicionales que se pasan al script que se está llamando

Descripción

Ejecuta el script especificado y luego continúa la ejecución del script actual. Este método devuelve, en caso de éxito, el valor de retorno del script llamado como una cadena.

Se puede pasar una lista de valores a una función RunScript como variables de entrada. El script creará variables locales usando estos valores con nombres predeterminados como _1, _2 ....

Si se prefieren nombres más descriptivos, se puede usar la función ArgumentList para mapear una lista de nombres de variables locales a la lista de _1, _2 .... Consulta la función ArgumentList para ver ejemplos.

Advertencia

El tipo de retorno es una string. Todos los demás tipos se convierten a su equivalente de cadena. Los valores nulos se devuelven como una string vacía. Las matrices se devuelven como una string; si contienen valores escalares, se pueden convertir a una matriz usando la función ReadArrayString. (Una matriz multidimensional también se puede convertir con ReadArrayString.)

Advertencia

Si el script llamado es un script de JavaScript, no se le pasarán argumentos. Cualquier argumento incluido en la llamada a la función RunScript no se declarará ni estará disponible en el script de JavaScript. El único método para pasar información a un script de JavaScript es usar variables globales; estas son variables precedidas por un símbolo $. Estos valores se pueden poner a disposición dentro del script de JavaScript usando la función Jitterbit.GetVar.

Nota

Llamar a Unmap desde dentro de un script invocado por RunScript no tiene efecto en el mapeo del campo que realiza la llamada, porque RunScript devuelve el resultado del script llamado como una cadena en lugar de propagar la señal de desmapeo. En su lugar, llama a Unmap directamente en la expresión de mapeo del campo de destino.

Ejemplos

// Runs the script "CalculateSomething"
RunScript("<TAG>Scripts/CalculateSomething</TAG>");

RunScript("<TAG>Scripts/CalculateSomething</TAG>", "abc", 1);
// Sends the script "CalculateSomething" the string "abc" and the number 1
// Inside "CalculateSomething", these will be available as _1 and _2

Set

Declaración

type Set(string name, type value)

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

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

Sintaxis

Set(<name>, <value>[, <index1>, <index2>, ..., <indexN>])

Parámetros obligatorios

  • name: El nombre de una variable global, ya sea un escalar o una matriz
  • value: Un valor que se asignará a la variable global

Parámetros opcionales

  • index1...indexN: Índice o índices usados para describir la posición de un elemento si se establece un elemento en una matriz

Descripción

Establece el valor de una variable global con un nombre dado a un valor y devuelve el valor. Consulta también la función complementaria Get.

Primera forma: escalares

En la primera forma, se establece el nombre de una cadena de una variable global usando el nombre y el valor proporcionados.

(Aunque una variable *local* puede pasarse como referencia, no es recomendable ya que los resultados pueden ser inconsistentes. Las variables locales no están diseñadas para establecerse a través de este mecanismo.)

Consulta los ejemplos a continuación.

Segunda y tercera formas: arreglos

En la segunda y tercera formas, argumentos adicionales proporcionan los índices para establecer un elemento en un arreglo.

Si el primer argumento es un arreglo (o el nombre de una variable global que es un arreglo), se puede establecer el valor de un elemento del arreglo especificando su índice (o índices para arreglos multidimensionales) como argumentos adicionales.

Para agregar datos a un arreglo, pasa un valor de índice negativo o el tamaño del arreglo. El tamaño se puede determinar usando la función Length como Length($array).

Los arreglos están indexados desde cero; el primer elemento está en el índice 0 y el último elemento (del arreglo $array) está en el índice [Length($array)-1]. Los arreglos se pueden crear con las funciones Array o ReadArrayString.

Si se intenta establecer un elemento más allá del final del arreglo, se agregarán elementos con valores nulos adicionales al arreglo según sea necesario para rellenar el arreglo al tamaño correcto.

Sintaxis del prefijo SCOPE_CHUNK

Establecer un nombre de variable con el prefijo SCOPE_CHUNK crea una variable global que se evalúa conforme se procesa cada bloque de datos. Esto se puede usar para crear variables globales cuyo valor es único para un bloque particular, y luego puede identificar ese bloque cuando se crea un nombre de archivo o registro en un destino. Consulta también las funciones GetChunkDataElement y SetChunkDataElement como un método alternativo que permite usar otros nombres de variables.

Advertencia

La sintaxis del prefijo SCOPE_CHUNK no es compatible con operaciones que usan una transformación con mapeo condicional.

Ejemplos

// Scalars:
// All of these forms are equivalent:
// they increase the global variable "count" by 1
result1 = Set("count", Get("count")+1);
$count++;
$count = $count + 1;

// Arrays:
// Appending a value to the array "arr"
// These are equivalent
Set($arr, "value", -1);
Set($arr, "value", Length($arr));

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

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

// SCOPE_CHUNK Prefix:
// Example from a mapping using the SCOPE_CHUNK syntax to
// create a global variable that is unique in value to a
// particular chunk.
// It uses the field "CustomerID" to identify the chunk:

Set("SCOPE_CHUNK_CustomerID",
    "customer_"+CustomerID+".csv");

// This variable will be available in the filenames field of
// the connection parameters of a target as:

[SCOPE_CHUNK_CustomerID]

// With each chunk created, a unique filename for that
// customer ID will be created, such as (depending on the
// values of Customer ID):
customer_1009.csv
customer_2019.csv
customer_5498.csv

SetChunkDataElement

Declaración

type SetChunkDataElement(string name, type value)

Sintaxis

SetChunkDataElement(<name>, <value>)

Parámetros requeridos

  • name: El nombre de la variable de bloque
  • value: El valor al que establecer la variable de bloque

Descripción

Establece el valor de una variable de bloque especificada y devuelve el valor. Una variable de bloque se evalúa conforme se procesa cada bloque de datos. Un método alternativo es usar la sintaxis SCOPE_CHUNK de la función Set.

Consulta también las funciones GetChunkDataElement y Set.

Ejemplos

// If used in a transformation mapping, this sets
// the value of the chunk variable "CustomerFileName"
// to the results of a calculation using the value of
// the "Customer" field at the time of the chunking
// to create a filename for that chunk:

SetChunkDataElement("CustomerFilename",
    "customer_"+CustomerID+".csv");

// This global variable would be available as a
// variable in the filenames field of the connection
// parameters of a target as:

[CustomerFilename]

// It would also be available in scripts in the same
// chunk as:

GetChunkDataElement("CustomerFilename");

// With each chunk created, a unique filename for that
// customer ID will be created, such as (depending on
// the values of Customer ID):
customer_1009.csv
customer_2019.csv
customer_5498.csv

Sleep

Declaración

void Sleep(int seconds)

Sintaxis

Sleep(<seconds>)

Parámetros requeridos

  • seconds: El número entero de segundos para suspender la operación actual

Descripción

Causa que la ejecución se suspenda durante un número especificado de segundos.

Ejemplos

// Suspende la operación actual por 1 minuto
Sleep(60);

SourceInstanceCount

Declaración

int SourceInstanceCount()

Sintaxis

SourceInstanceCount()

Descripción

Devuelve el conteo de instancias del generador más reciente.

El valor es independiente de si se ha generado la instancia de destino o no; se devuelve el mismo valor si se llama en un script de condición o en un script de mapeo.

Cuando la primera instancia de origen se utiliza como generador, se devuelve 1, luego 2, y así sucesivamente.

Consulta también la función TargetInstanceCount.

Ejemplos

// Devuelve el recuento de instancias del generador más reciente
currentSourceInstance = SourceInstanceCount();

TargetInstanceCount

Declaración

int TargetInstanceCount()

Sintaxis

TargetInstanceCount()

Descripción

Devuelve el recuento de instancias de un nodo de bucle de destino generador.

Cuando se llama en una condición, devuelve el número de instancias de destino que se han generado hasta el momento para el nodo de bucle actual. El número devuelto por este método será uno menos si se llama en una condición, ya que en una condición no se sabe si la instancia de destino actual se generará o no.

Cuando se genera la primera instancia de destino, se devuelve 1, luego 2, y así sucesivamente. Si se llama en una condición, la secuencia será 0, 1, y así sucesivamente.

Consulta también la función SourceInstanceCount.

Ejemplos

// Devuelve el recuento de instancias del generador de destino más reciente
currentTargetInstance = TargetInstanceCount();

WaitForOperation

Declaración

void WaitForOperation(string operationId[, int timeOutSec, int pollIntervalSec])

Sintaxis

WaitForOperation(<operationId>[, <timeOutSec>, <pollIntervalSec>])

Parámetros requeridos

  • operationID: Una operación en el proyecto actual

Parámetros opcionales

  • timeOutSec: Una variable local
  • pollIntervalSec: Una variable local

Descripción

Detiene la ejecución de un script o mapeo hasta que todas las instancias de la operación especificada actualmente en la cola de operaciones hayan terminado de procesarse. Este método es útil si deseas añadir muchas instancias de una operación a la cola para procesamiento paralelo y luego esperar a que todas se completen.

La operación utilizada en esta llamada de función debe estar definida como una operación en el proyecto actual. Consulta las instrucciones sobre inserción de elementos del proyecto.

Nota:

  • Para cada operación (identificada por su operationID) en la que se deba esperar, se debe hacer una llamada a este método.
  • Las instancias de operación que se añaden (mediante llamadas a la función RunOperation) después de que se realice esta llamada no se esperan.
  • El usuario actual necesita tener acceso de lectura para la operación en la que se espera.

El segundo argumento (opcional) es el tiempo de espera en segundos. El tiempo de espera predeterminado es 1 hora (3600 segundos) y si todas las operaciones no se han completado dentro de este tiempo, se lanzará un error. Si esperas que tus operaciones se ejecuten durante más tiempo en condiciones normales, debes aumentar el tiempo de espera. Puedes manejar este error utilizando la función Eval.

El tercer argumento (opcional) es el intervalo de sondeo en segundos. El intervalo de sondeo es el tiempo entre comprobaciones de la cola de operaciones. El intervalo de sondeo predeterminado es 10 segundos. El valor predeterminado no tendrá un impacto significativo en el rendimiento, pero si esperas que tus operaciones se ejecuten durante un tiempo muy largo, es posible que desees aumentar el intervalo de sondeo.

Ejemplos

// Add ten operation instances to the queue
// and wait for all of them to finish
i = 0;
while(i < 10,
  RunOperation("<TAG>Operations/Process One Message</TAG>", false);
  i++;
);

WaitForOperation("<TAG>Operations/Process One Message</TAG>");