Funciones generales en Jitterbit Design Studio
Las funciones generales incluyen aquellas funciones que no son específicas de una actividad particular, sino que encuentran aplicación en casi cualquier script.
ArgumentList
Declaración
null ArgumentList(tipo var1[,... ])
Sintaxis
ArgumentList(<var1>[,... ])
Parámetros requeridos
var1
: Una variable local, que se inicializará desde la lista de argumentos de la instancia que llama
Parámetros opcionales
var2,... varN
: Variables adicionales que se inicializarán desde la lista de argumentos de la instancia que llama
Descripción
Esta función inicializa un conjunto de variables locales a partir de su lista de argumentos.
La construcción de las variables locales depende de cuál de estos casos se aplique:
- Caso 1: Mapeos de Transformación Cuando se realiza la llamada a la función en el mapeo de un campo de destino. (Se debe haber realizado previamente una llamada a la función
setinstances
.) Las variables locales se construyen a partir de las variables globales correspondientes en la instancia dada por la funciónSetInstances()
. - Caso 2: Ejecución de un Script Cuando se realiza la llamada a la función en un script. Las variables locales se construyen a partir de los argumentos correspondientes en la lista proporcionada por la declaración
runscript
que llama. Estas variables también se pueden abordar por índice, como_1
,_2
...
Un valor nulo es devuelto por esta función y puede ser ignorado. Como alternativa, consulte la función getinstance
.
Ejemplos
// 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>
// 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 desaprobado y puede ser eliminado en una versión futura de Jitterbit. Utilice las funciones TargetInstanceCount
o SourceInstanceCount
en su lugar. La función TargetInstanceCount
es equivalente a esta función.
Ejemplos
Suponga que una arquitectura de destino tiene dos registros de nivel superior: PO1 y PO2:
- PO1 es un padre de tres registros hijos: PO1_record1, PO1_record2 y PO1_record3.
- PO2 es un padre de dos registros hijos: PO2_record1 y PO2_record2.
Cuando se llama a la función AutoNumber
:
AutoNumber
llamado en el nivel padre devuelve 1 en PO1 y devuelve 2 en PO2.AutoNumber
en el nivel hijo de PO1 devuelve 1 en PO1_record1, devuelve 2 en PO1_record2 y devuelve 3 en PO1_record3, ya que PO1 tiene 3 registros hijos.
CancelOperation
Declaración
void CancelOperation(string operationInstanceGUID)
Sintaxis
CancelOperation(<operationInstanceGUID>)
Parámetros requeridos
operationInstanceGUID
: El GUID de la instancia de operación que se va a cancelar
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, llame a la función GetOperationQueue
para recuperar instancias de operaciones en ejecución. El GUID de la instancia de operación se encuentra en el índice 4 de los sub-arreglos devueltos por la función GetOperationQueue
. Consulte la función GetOperationQueue
para 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("Cancelling operation instance: " + op_inst);
CancelOperation(op_inst);
i++;
);
CancelOperationChain
Declaración
void CancelOperationChain(string message)
Sintaxis
CancelOperationChain(<message>)
Parámetros requeridos
message
: Si es 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 hará que esas operaciones sean canceladas. Cualquier operación vinculada por una condición también será cancelada. Sin embargo, cualquier script en la operación actual se completará.
Esto puede ser útil si una operación se está ejecutando en un bucle y se ha alcanzado la condición para detener el bucle.
Ejemplos
CancelOperationChain("La operación de éxito no necesita ejecutarse.");
Eval
Declaración
string Eval(type expToEvaluate, type defaultResult)
Sintaxis
Eval(<expToEvaluate>, <defaultResult>)
Parámetros requeridos
expToEvaluate
: Una expresión que se evaluará; si es válida, su resultado será devueltodefaultResult
: Resultado predeterminado que se evaluará y devolverá siexpToEvaluate
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.
Esto se puede usar 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 a la operación en sí esté mal formada o sea inválida. En su lugar, para capturar operaciones fallidas, se pueden usar funciones como If
y GetLastError
para lograr una funcionalidad similar. Para más información, consulte la sección de Scripting en Mejores prácticas 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(<nombre>[, <índice1>, <índice2>,... <índiceN>])
Parámetros requeridos
nombre
: El nombre de una variable global, ya sea un escalar o un arreglo, o un arreglo
Parámetros opcionales
índice1,... índiceN
: Índices que especifican el elemento deseado en el arreglo o un sub-arreglo
Descripción
Devuelve el valor de una variable global con un nombre dado. Si se pasa un arreglo o el nombre de una variable global que es un arreglo, devuelve un elemento del arreglo. Ver 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) utilizando los argumentos restantes.
Los arreglos son 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]
.
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(<nombre>)
Parámetros requeridos
nombre
: El nombre de la variable de chunk
Descripción
Devuelve el valor de la variable de chunk con un nombre dado. 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
. Ver 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 si la representación estándar de Jitterbit de un tipo de dato (como una fecha o un doble) no es adecuada y se requiere la entrada "cruda". Si este método se llama en un objeto que no es una variable global de origen, se devuelve una cadena vacía.
Ejemplos
// La entrada es demasiado grande para un doble de Jitterbit
// devuelve la entrada cruda en su lugar
$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
Description
Devuelve la última fecha y hora en que se ejecutó la operación dada. El valor de retorno es una fecha (que incluye la fecha y la hora). Debe usarse solo con un agente único.
La operación utilizada en esta llamada a función debe estar definida como una operación en el proyecto actual. Consulte las instrucciones sobre inserción de elementos del proyecto.
La fecha devuelta está en UTC (sin una zona horaria específica). Use la función ConvertTimeZone
para convertir a una hora local, como se muestra en el ejemplo a continuación.
Advertencia
Esta función debe usarse solo con un agente privado único, ya que no es precisa al usar agentes en la nube o múltiples agentes privados.
Examples
$lastOpRun = GetLastOperationRunStartTime("<TAG>Operations/MyOperation</TAG>");
// Convirtiendo a una zona horaria local
$lorInMyTimeZone = ConvertTimeZone($lastOpRun,"UTC","CST");
GetName
Declaration
string GetName(type arg)
Syntax
GetName(<arg>)
Required parameters
arg
: Una variable o variable global
Description
Devuelve el nombre de una variable o una variable global.
Ciertas funciones devuelven un arreglo de variables globales nombradas; si están definidas, esta función recupera el nombre del valor.
Examples
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
Declaration
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 un arreglo. Solo se devolverán las operaciones a las que el usuario actual tenga acceso de lectura. Debe usarse con un solo agente.
El resultado se devuelve como un arreglo de arreglos, con estos elementos en cada sub-arreglo:
- 0: GUID de operación (cadena)
- 1: La bandera
IsExecuting
(booleano) - 2: Marca de tiempo (fecha) de cuándo se agregó la operación a la cola
- 3: Segundos en el 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 se proporciona el argumento de etiqueta de operación, solo se devolverán las entradas de la cola para esa operación en particular. Consulte las instrucciones sobre inserción de elementos del proyecto.
Advertencia
Esta función debe usarse solo con un solo agente privado, ya que no es precisa al usar 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 está ejecutando 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 un 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íadefault
: 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)
Véase 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 ver si es nulodefault
: 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.
Este es un atajo para una declaración de función If
:
If(IsNull(arg), default, arg)
Consulta también las funciones IsNull
y IfEmpty
.
Nota
Si jitterbit.target.xml.include_nil_attribute
está configurado como true
antes de las funciones IfNull
o IsNull
, las funciones evaluarán una cadena vacía como un valor no nulo al usar versiones del 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 para establecer el contador; el valor predeterminado es 0
Descripción
Inicializa un contador, pasando opcionalmente un valor inicial. Debe ser utilizado solo con un único agente.
Si no se establece un valor inicial, el valor inicial se establece en 0. El primer argumento es el nombre de una variable o una referencia a una variable (consulta los ejemplos). Este método debe ser llamado solo 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 las Consideraciones al dividir.
Advertencia
Esta función debe ser utilizada solo con un único Agente, ya que resulta en 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 soportados 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 contra los cuales se va a compararx
Descripción
Verifica si x
está en la lista de argumentos (arg1
a 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
soporta múltiples tipos de datos al convertirlos 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 evaluar
Descripción
Devuelve verdadero si el argumento es de tipo entero o largo o puede convertirse en 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 evaluar
Descripción
Devuelve verdadero si el argumento es nulo. Se aplica a campos de base de datos, variables y funciones que pueden devolver nulos.
Consulte también las funciones IfNull
e IfEmpty
para atajos que se pueden usar en lugar de esta función.
Nota
Si jitterbit.target.xml.include_nil_attribute
está configurado como true
antes de las funciones IfNull
o IsNull
, las funciones evaluarán una cadena vacía como un valor no nulo al usar versiones del 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 evaluar
Descripción
Devuelve verdadero si la evaluación del argumento no resulta en un error.
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 evaluar
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
- arreglo: se devuelve el número de elementos en el arreglo
- 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 se puede convertir a una cadena, o si el argumento es nulo o de un 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 nulo.
Ejemplos
Esta función se puede utilizar para insertar un valor nulo 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ínimomax
: Valor entero del número aleatorio máximo
Descripción
Genera un número entero aleatorio entre los valores mínimo y máximo dados, incluyendo ambos. 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 dada. Por defecto, la función utiliza caracteres alfanuméricos; el conjunto que incluye a-z, A-Z y 0-9. Ver 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
: Una representación en cadena de un arreglo
Parámetros opcionales
type
: Una 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 comas (,
). Los elementos en un arreglo deben ser todos escalares o todos arreglos.
El valor escalar puede ser representado por 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 ser escapada con dos comillas dobles. El segundo argumento opcional es para especificar el tipo de dato del valor escalar. Se asume que el tipo es cadena si no se especifica explícitamente.
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 objetivo que se está generando actualmente.
Si se llama en una condición, devuelve el número de instancia de la última instancia que se generó. La primera vez que se llama a este método en un bucle, devuelve 0 (cero) si se llama en una condición; de lo contrario, devuelve 1 (uno). El contador se restablece a 0 cada vez que se inicia un nuevo bucle.
Nota
Este método ha sido desaprobado y puede ser eliminado 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 mientras genera la quinta línea en un nodo de bucle objetivo.
ReRunOperation
Declaración
bool ReRunOperation([bool runSynchronously])
Sintaxis
ReRunOperation([<runSynchronously>])
Parámetros opcionales
runSynchronously
: Indicador para indicar si la operación debe ejecutarse de manera sincrónica (el valor 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 a la función RunOperation
. Consulta esa función para obtener una descripción de cómo volver a ejecutar la operación de manera sincrónica o asincrónica afecta a las variables globales.
Advertencia
Dado que esta es una llamada recursiva, es esencial que haya una condición de parada, que probablemente incluya la función CancelOperation
. De lo contrario, terminarás en un bucle infinito de llamadas a la 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
operationId
: Un ID de operación en el proyecto actual. Consulte las instrucciones sobre inserción de elementos del proyecto.
Parámetros opcionales
runSynchronously
: Indicador para indicar si la operación debe ejecutarse de manera sincrónica (el valor predeterminado) o asincrónica.
Descripción
Ejecuta una operación de manera sincrónica o asincrónica, siendo la sincrónica el comportamiento predeterminado.
Sincronización
Si run_synchronously
es true
, la operación o cadena de operaciones invocada (hija) se ejecutará secuencialmente desde la operación invocadora (padre). Todas las variables globales son heredadas por la operación hija y cualquier cambio en las variables globales se reflejará en la operación padre. 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 o cadena de operaciones invocada (hija) se ejecutará simultáneamente junto a la operación invocadora (padre). La operación llamada se agrega a la cola de procesamiento de Jitterbit para ser procesada una vez que se hayan procesado todas las operaciones que la preceden. Todas las variables globales son heredadas por la operación hija, pero los cambios en esas variables no se reflejarán en la operación padre. La operación padre continuará ejecutándose independientemente de la operación hija y no hay garantía sobre cuál operación terminará primero. Devuelve false
si la operación hija no pudo ser añadida a la cola. Con el modo asincrónico, estas variables globales se pasan a la operación llamada por valor en lugar de por referencia, lo que asegura que cualquier cambio en las variables no se refleje en ninguna otra operación.
Para más información, consulta Sincronización como se describe para la herramienta Invocar Operación (Beta) del Integration Studio. El mismo concepto general se aplica al Design Studio.
Nota
Las operaciones llamadas con esta función están encadenadas y se ejecutarán en el mismo agente que la operación que llama, independientemente de la sincronización.
Si la función devuelve false
para indicar un fallo o si la operación llamada no pudo ser encolada, llama a GetLastError
para recuperar el mensaje de error.
Ejemplos
// Ejecuta la "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 desplegado en el mismo entorno que el proyecto actual.
Parámetros opcionales
runSynchronously
: Indicador para indicar si la operación debe ejecutarse de manera sincrónica (el valor predeterminado) o asincrónica.
Descripción
Ejecuta una operación de manera sincrónica o asincrónica, siendo la sincrónica la predeterminada. Esta función, disponible a partir de la versión 8.22, te permite ejecutar operaciones de diferentes proyectos que están ubicados y ya desplegados dentro del mismo entorno que tu 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 debes desplegar el proyecto remoto en el mismo entorno que el proyecto actual.
Luego, utilizando el modo Analista de negocios del Estudio de Diseño, inserta esta función en tu script. El asistente que aparece te pedirá el proyecto que te gustaría usar y luego te permitirá seleccionar una de sus operaciones actualmente desplegadas. Luego creará una ruta apropiada e insertará como ID. Consulta también las instrucciones sobre insertar elementos de proyecto.
Variables globales
Las variables globales establecidas en el proyecto remoto pueden ser heredadas, dependiendo de si la operación remota se ejecuta de manera sincrónica o no. Como se describe en la siguiente sección, si se ejecuta de manera sincrónica, las variables globales son heredadas por la cadena de operaciones llamada y cualquier cambio en las variables globales se reflejará en la operación actual. Esto permite que un proyecto remoto se comunique de vuelta a la operación que lo 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 asegura 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 fallo se ejecutarán dentro de la operación actual y la operación actual esperará a que toda la cadena de operaciones llamada termine. Todas las variables globales son heredadas por la cadena de operaciones llamada 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 fallo.
Para runSynchronously=false
, este método coloca una operación en la cola de procesamiento de Jitterbit para ser procesada una vez que se hayan procesado todas las operaciones que vienen antes de ella. Todas las variables globales son heredadas por la cadena de operaciones llamada, pero los cambios en esas variables no se reflejarán en la operación actual. La operación actual continuará ejecutándose independientemente 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 pudo ser añadida a la cola.
Si la función devuelve false
para indicar un fallo o si la operación no pudo ser encolada, llama a GetLastError
para recuperar el mensaje de error.
Nota
La operación en el proyecto externo debe haber sido desplegada desde ese proyecto para poder ser utilizada en una función RunOperationFromProject
en tu proyecto actual.
Examples
// Runs the "MyOperation" in the default mode of synchronously
RunOperationFromProject("<TAG>Project/MyProject/Operations/MyOperation</TAG>");
RunPlugin
Declaration
bool RunPlugin(string pluginId)
Syntax
RunPlugin(<pluginId>)
Required parameters
pluginId
: Un ID de plugin en el proyecto actual. Consulta las instrucciones sobre inserción de elementos del proyecto.
Description
Ejecuta un plugin específico y luego continúa la ejecución del script actual. Si hay múltiples versiones de un plugin instaladas en un agente, se utiliza la versión más alta disponible.
En la interfaz de usuario de Design Studio, solo se muestran aquellos plugins que pueden ejecutarse dentro de un script; los plugins que se ejecutan en fuentes, destinos y llamadas a servicios web están ocultos. Consulta las instrucciones sobre inserción de elementos del proyecto.
Devuelve true
si el plugin se completa sin errores. Devuelve false
si el plugin no pudo ser ejecutado o si la implementación del plugin devolvió un error. Llama a GetLastError
para recuperar el mensaje de error.
Examples
// 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 requeridos
scriptId
: Un ID de script en el proyecto actual. Consulte las instrucciones sobre inserción de elementos del proyecto.
Parámetros opcionales
var1...varN
: Variables adicionales, que se pasarán 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 utilizando estos valores con nombres predeterminados como _1, _2 ...
.
Si se prefieren nombres más completos, se puede utilizar la función ArgumentList
para mapear una lista de nombres de variables locales a la lista de _1, _2 ...
. Consulte la función ArgumentList
para ejemplos.
Advertencia
El tipo de retorno es una string
. Todos los demás tipos se convierten a su equivalente en cadena. Los valores nulos se devuelven como una string
vacía. Los arreglos se devuelven como una string
; si contienen valores escalares, se pueden convertir a un arreglo utilizando la función ReadArrayString
. (Un arreglo multidimensional también se puede convertir mediante 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 será declarado ni estará disponible en el script de JavaScript. El único método para pasar información a un script de JavaScript es utilizar variables globales; estas son variables precedidas por un símbolo de $
. Estos valores se pueden hacer disponibles dentro del script de JavaScript utilizando la función Jitterbit.GetVar
.
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(<nombre>, <valor>[, <índice1>, <índice2>, ..., <índiceN>])
Parámetros requeridos
nombre
: El nombre de una variable global, ya sea un escalar o un arreglovalor
: Un valor que se asignará a la variable global
Parámetros opcionales
índice1...índiceN
: Índice o índices utilizados para describir la posición de un elemento si se está configurando un elemento en un arreglo
Descripción
Establece el valor de una variable global con un nombre dado a un valor y devuelve el valor. Véase también la función complementaria Get
.
Primera forma: escalares
En la primera forma, se establece un nombre de cadena de una variable global utilizando el nombre y el valor proporcionados.
(Aunque se puede pasar una variable *local* como referencia, no se recomienda ya que los resultados pueden ser inconsistentes. Las variables locales no están destinadas a ser configuradas a través de este mecanismo.)
Vea los ejemplos a continuación.
Segunda y tercera formas: arreglos
En las segunda y tercera formas, argumentos adicionales suministran 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 de arreglo especificando su índice (o índices para arreglos multidimensionales) como argumentos adicionales.
Para agregar datos a un arreglo, pase ya sea un valor de índice negativo o el tamaño del arreglo. El tamaño se puede determinar utilizando la función Length
como Length($array)
.
Los arreglos son 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
.
Intentar establecer un elemento más allá del final del arreglo resultará en que se agreguen elementos con valor nulo adicionales al arreglo según sea necesario para completar el arreglo al tamaño correcto.
Sintaxis del prefijo SCOPE_CHUNK
Establecer un nombre de variable que esté precedido por la frase SCOPE_CHUNK
creará una variable global que se evalúa a medida que se procesa cada fragmento de datos. Esto se puede utilizar en la creación de variables globales cuyo valor es único para un fragmento particular, y puede identificar ese fragmento cuando se crea un nombre de archivo o un registro en un destino. Consulte también las funciones GetChunkDataElement
y SetChunkDataElement
como un método alternativo que permite el uso de otros nombres de variables.
Advertencia
La sintaxis del prefijo SCOPE_CHUNK
no es compatible en operaciones con una transformación que utiliza 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 fragmentovalue
: El valor para establecer la variable de fragmento
Descripción
Establece el valor de una variable de fragmento especificada y devuelve el valor. Una variable de fragmento se evalúa a medida que se procesa cada fragmento de datos. Un método alternativo es utilizar la sintaxis SCOPE_CHUNK
de la función Set
.
Consulte 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 por un número específico de segundos.
Ejemplos
// Suspende la operación actual durante 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 la instancia objetivo ha sido generada 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 fuente se utiliza como generador, se devuelve 1, luego 2, y así sucesivamente.
Véase también la función TargetInstanceCount
.
Ejemplos
// Devuelve el conteo de instancias del generador más reciente
currentSourceInstance = SourceInstanceCount();
TargetInstanceCount
Declaración
int TargetInstanceCount()
Sintaxis
TargetInstanceCount()
Descripción
Devuelve el conteo de instancias de un nodo de bucle objetivo generador.
Cuando se llama en una condición, devuelve el número de instancias objetivo que han sido generadas hasta ahora 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 objetivo actual será generada 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.
Véase también la función SourceInstanceCount
.
Ejemplos
// Returns the instance count of the most recent target generator
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 localpollIntervalSec
: Una variable local
Descripción
Detiene la ejecución de un script o mapeo hasta que todas las instancias de la operación especificada que se encuentran actualmente en la cola de operaciones hayan terminado de procesarse. Este método es útil si se desea agregar muchas instancias de una operación a la cola para procesamiento paralelo y luego esperar a que todas terminen.
La operación utilizada en esta llamada a función debe estar definida como una operación en el proyecto actual. Consulte las instrucciones sobre inserción de elementos del proyecto.
Nota:
- Para cada operación (identificada por su
operationID
) de la que se debe esperar, se debe hacer una llamada a este método. - Las instancias de operación que se agregan (mediante llamadas a la función
RunOperation
) después de que se realiza esta llamada no se esperan. - El usuario actual necesita tener acceso de lectura para la operación que se está esperando.
El segundo argumento (opcional) es el tiempo de espera en segundos. El tiempo de espera predeterminado es de 1 hora (3600 segundos) y si todas las operaciones no han terminado dentro de este tiempo, se lanzará un error. Si se espera que sus operaciones se ejecuten durante un tiempo más prolongado en condiciones normales, debe aumentar el tiempo de espera. Puede 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 las verificaciones de la cola de operaciones. El intervalo de sondeo predeterminado es de 10 segundos. El valor predeterminado no tendrá un impacto significativo en el rendimiento, pero si se espera que sus operaciones se ejecuten durante un tiempo muy prolongado, puede que desee 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>");