Funções Gerais
As funções gerais incluem aquelas funções que não são específicas de uma atividade específica, mas que podem ser aplicadas em quase todos os script.
ArgumentList
Declaração
null ArgumentList(type var1[,... ])
Sintaxe
ArgumentList(<var1>[,... ])
Parâmetros Obrigatórios
var1
: Uma variável local, a ser inicializada a partir da lista de argumentos da instância chamadora
Parâmetros Opcionais
var2,... varN
: Variáveis adicionais a serem inicializadas a partir da lista de argumentos da instância de chamada
Descrição
Esta função inicializa um conjunto de variáveis locais de sua lista de argumentos.
A construção das variáveis locais depende de qual destes casos se aplica:
- Caso 1: Mapeamentos de Transformação Quando a chamada de função é feita no mapeamento de um campo alvo. (Uma chamada para a função
SetInstances
deve ter sido feita anteriormente.) As variáveis locais são construídas a partir das variáveis globais correspondentes na instância dada pela funçãoSetInstances()
. - Caso 2: Executando um Script Quando a chamada da função é feita em um script. As variáveis locais são construídas a partir dos argumentos correspondentes na lista fornecida pela chamada
RunScript
declaração. Essas variáveis também podem ser abordadas por índice, como_1
,_2
...
Um valor nulo é retornado por esta função e pode ser ignorado. Como alternativa, consulte a função GetInstance
.
Exemplos
// 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
Declaração
int AutoNumber()
Sintaxe
AutoNumber()
Descrição
Retorna o número de uma instância dentro de uma hierarquia específica.
Aviso
Este método foi descontinuado e pode ser removido em uma versão futura do Jitterbit. Use o TargetInstanceCount
ou SourceInstanceCount
funciona em vez disso. O TargetInstanceCount
função é equivalente a esta função.
Exemplos
Suponha que uma arquitetura de destino tenha dois registros de nível superior: PO1 e PO2:
- PO1 é pai de três registros filhos: PO1_record1, PO1_record2 e PO1_record3.
- PO2 é pai de dois registros filhos: PO2_record1 e PO2_record2.
Quando o AutoNumber
função é chamada:
AutoNumber
chamado no nível pai retorna 1 em PO1 e retorna 2 em PO2.AutoNumber
no nível filho de PO1 retorna 1 em PO1_record1, retorna 2 em PO1_record2 e retorna 3 em PO1_record3, já que PO1 tem 3 registros filhos.
CancelOperation
Declaração
void CancelOperation(string operationInstanceGUID)
Sintaxe
CancelOperation(<operationInstanceGUID>)
Parâmetros Obrigatórios
operationInstanceGUID
: O GUID da instância de operação que será cancelada
Descrição
Cancela uma instância de operação específica especificada por um GUID de instância de operação.
Como mostrado no exemplo abaixo, chame o GetOperationQueue
função para recuperar instâncias de operações em execução. O GUID da instância de operação está no índice 4 das submatrizes retornadas pelo GetOperationQueue
função. Veja o GetOperationQueue
função para obter detalhes.
Exemplos
// 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
Declaração
void CancelOperationChain(string message)
Sintaxe
CancelOperationChain(<message>)
Parâmetros Obrigatórios
message
: Se for uma string não vazia, ela será registrada como uma mensagem de aviso no log de operação.
Descrição
Se a operação atual tiver operações bem-sucedidas ou com falha, chamar esse método fará com que essas operações sejam canceladas. Quaisquer operações vinculadas por uma condição também serão canceladas. No entanto, todos os scripts da operação atual serão concluídos.
Isto pode ser útil se uma operação estiver sendo executada em loop e a condição para parar o loop tiver sido atingida.
Exemplos
CancelOperationChain("The success operation does not need to run.");
Eval
Declaração
string Eval(type expToEvaluate, type defaultResult)
Sintaxe
Eval(<expToEvaluate>, <defaultResult>)
Parâmetros Obrigatórios
expToEvaluate
: Uma expressão a ser avaliada; se válido, seu resultado será retornadodefaultResult
: Resultado padrão a ser avaliado e retornado seexpToEvaluate
não é válido
Descrição
Avalia o primeiro argumento; se válido, seu resultado é retornado como uma string. Caso contrário, o valor padrão será avaliado e seus resultados serão retornados como uma string.
Isto pode ser usado como uma instrução "try-catch", pois o segundo argumento será avaliado somente se o primeiro falhar.
Nota
Não é recomendado usar esta função com RunOperation
pois sempre retornará um resultado válido após a execução da operação, a menos que a própria chamada da operação esteja malformada ou inválida. Em vez disso, para capturar operações com falha, funções como If
e GetLastError
pode ser usado para obter funcionalidade semelhante. Para obter mais informações, consulte o Scripting seção em Práticas recomendadas para Design Studio.
Exemplos
// 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
Declaração
type Get(string name)
type Get(string name[, int index1, int index2,... int indexN])
type Get(array name[, int index1, int index2,... int indexN])
Sintaxe
Get(<name>[, <index1>, <index2>,... <indexN>])
Parâmetros Obrigatórios
name
: O nome de uma variável global, seja um escalar ou um array, ou um array
Parâmetros Opcionais
index1,... indexN
: Índices que especificam o elemento desejado no array ou subarray
Descrição
Retorna o valor de uma variável global com um determinado nome. Se for passado um array ou o nome de uma variável global que seja um array, retorna um elemento do array. Veja também o complemento Set
função.
Se o primeiro argumento for uma matriz ou o nome de uma variável global que seja uma matriz, a função recupera um elemento específico por seu índice (ou índices para uma matriz multidimensional, como um conjunto de registros) usando os argumentos restantes.
As matrizes são indexadas em zero; o primeiro elemento está no índice 0 e o último elemento (do array $array
) está no índice [Length($array)-1]
.
A tentativa de recuperar um elemento além do final da matriz resultará em um valor de retorno nulo.
Exemplos
// 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
Declaração
type GetChunkDataElement(string name)
Sintaxe
GetChunkDataElement(<name>)
Parâmetros Obrigatórios
name
: O nome da variável chunk
Descrição
Retorna o valor da variável chunk com um determinado nome. Uma variável chunk é avaliada à medida que cada pedaço de dados é processado. Um método alternativo é usar o SCOPE_CHUNK
sintaxe do Set
função. Veja também o SetChunkDataElement
e Set
funções.
Exemplos
// 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
Declaração
string GetHostByIP(string ipAddress)
Sintaxe
GetHostByIP(<ipAddress>)
Parâmetros Obrigatórios
ipAddress
: Uma string com um endereço IP
Descrição
Resolve um endereço IP para um nome de hospedar.
Exemplos
GetHostByIP("127.0.0.1");
GetInputString
Declaração
string GetInputString(type arg)
Sintaxe
GetInputString(<arg>)
Parâmetros Obrigatórios
arg
: Uma variável global
Descrição
Retorna a entrada não formatada como uma string dada uma variável global de origem.
Isso é útil se a representação Jitterbit padrão de um tipo de dados (como data ou duplo) não for adequada e a entrada "bruta" for necessária. Se este método for chamado em um objeto que não seja uma variável global de origem, uma string vazia será retornada.
Exemplos
// The input is too large for a Jitterbit double
// return the raw input instead
$SessionId = GetInputString(root$transaction$body$GetMachineList$req$SessionID$)
GetLastOperationRunStartTime
Declaração
date GetLastOperationRunStartTime(string operationId)
Sintaxe
GetLastOperationRunStartTime(<operationId>)
Parâmetros Obrigatórios
operationId
: Uma operação no projeto atual
Descrição
Retorna a última data e hora em que a operação especificada foi executada. O valor de retorno é uma data (que inclui a data e a hora). Para ser usado apenas com um único Agente.
A operação utilizada nesta chamada de função deve ser definida como uma operação no projeto atual. Veja as instruções em inserir itens do projeto.
A data retornada está em UTC (sem fuso horário específico). Use o ConvertTimeZone
função para converter para uma hora local, como visto no exemplo abaixo.
Aviso
Esta função deve ser usada apenas com um único Agente Privado, pois não é precisa ao usar Agentes em Nuvem ou vários Agentes Privados.
Exemplos
$lastOpRun = GetLastOperationRunStartTime("<TAG>Operations/MyOperation</TAG>");
// Converting to a local time zone
$lorInMyTimeZone = ConvertTimeZone($lastOpRun,"UTC","CST");
GetName
Declaração
string GetName(type arg)
Sintaxe
GetName(<arg>)
Parâmetros Obrigatórios
arg
: Uma variável ou variável global
Descrição
Retorna o nome de uma variável ou de uma variável global.
Certas funções retornam uma matriz de variáveis globais nomeada; se definido, esta função recupera o nome do valor.
Exemplos
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
Declaração
array GetOperationQueue([string operationTag])
Sintaxe
GetOperationQueue([<operationTag>])
Parâmetros Opcionais
operationTag
: Uma operação no projeto atual; caso contrário, todas as operações no projeto atual serão usadas
Descrição
Retorna o conteúdo da fila de operação como uma matriz. Somente as operações para as quais o usuário atual tem acesso de leitura serão retornadas. Para ser usado apenas com um único Agente.
O resultado é retornado como uma matriz de matrizes, com estes elementos em cada submatriz:
- 0: GUID de operação (string)
- 1: O
IsExecuting
sinalizador (booleano) - 2: Timestamp (data) de quando a operação foi adicionada à fila
- 3: Segundos no status atual (inteiro)
- 4: GUID da instância de operação (string)
- 5: Nome da operação (string)
O argumento da tag de operação é opcional. Se o argumento da tag de operação estiver presente, somente as entradas da fila para essa operação específica serão retornadas. Veja as instruções em inserir itens do projeto.
Aviso
Esta função deve ser usada apenas com um único Agente Privado, pois não é precisa ao usar Agentes em Nuvem ou vários Agentes Privados.
Exemplos
// 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
Declaração
string GetServerName()
Sintaxe
GetServerName()
Descrição
Retorna o nome da máquina em que o agente está sendo executado.
Exemplos
GetServerName();
// Returns the server name
GUID
Declaração
string GUID()
Sintaxe
GUID()
Descrição
Retorna uma string GUID (um identificador globalmente exclusivo, também conhecido como identificador universalmente exclusivo ou UUID).
O formato do GUID é xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
, onde M é a versão (4) e N é a variante (8).
Exemplos
GUID();
// Returns a string such as "c056f89d-1f45-458e-8b25-9ecf2ed10842"
IfEmpty
Declaração
type IfEmpty(type arg, type default)
Sintaxe
IfEmpty(<arg>, <default>)
Parâmetros Obrigatórios
arg
: Um argumento para avaliar para ver se é nulo ou uma string vaziadefault
: Valor padrão a ser retornado se arg for nulo ou uma string vazia
Descrição
Retorna o valor padrão se o primeiro argumento for nulo ou se a representação de string do argumento for uma string vazia. Caso contrário, ele retorna o primeiro argumento. Este é um atalho para um If
declaração de função:
If(IsNull(arg)|Length(arg)==0, default, arg)
Veja também o IsNull
função.
Exemplos
// If the variable "myDate" is null or empty,
// returns the current date, otherwise returns "myDate"
result = IfEmpty(myDate, Now());
IfNull
Declaração
type IfNull(type arg, type default)
Sintaxe
IfNull(<arg>, <default>)
Parâmetros Obrigatórios
arg
: Um argumento para avaliar para ver se é nulodefault
: Valor padrão a ser retornado se arg for nulo
Descrição
Retorna o valor padrão se o primeiro argumento for nulo; caso contrário, retorna o primeiro argumento.
Este é um atalho para um If
declaração de função:
If(IsNull(arg), default, arg)
Veja também o IsNull
e IfEmpty
funções.
Exemplos
// If the variable "myDate" is null,
// returns the current date, otherwise returns "myDate"
result = IfNull(myDate, Now());
InitCounter
Declaração
long InitCounter(type counter[, long initialValue])
Sintaxe
InitCounter(<counter>, <initialValue>)
Parâmetros Obrigatórios
counter
: O nome de uma variável ou uma referência a uma variável global a ser usada como contador
Parâmetros Opcionais
initialValue
: O valor inicial para definir o contador; o padrão é 0
Descrição
Inicializa um contador, opcionalmente passando um valor inicial. Para ser usado apenas com um único Agente.
Se nenhum valor inicial for definido, o valor inicial será definido como 0. O primeiro argumento é o nome de uma variável ou uma referência a uma variável (veja os exemplos). Este método precisa ser chamado apenas em contextos de thread único. Chamar esse método em um contexto multithread resultará em erro. Consulte também as Considerações ao Chunking.
Aviso
Esta função deve ser usada apenas com um único Agente, pois resulta em erro em um contexto de múltiplos Agente.
Exemplos
// 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
Declaração
int InList(type x[, type arg1, ... type argN])
Sintaxe
InList(<x>[, <arg1>, ... <argN>])
Parâmetros Obrigatórios
x
: Um elemento a ser comparado para uma correspondência
Parâmetros Opcionais
arg1...argN
: Uma série de argumentos quex
é para ser comparado com
Descrição
Verificações de x
na lista de argumentos (arg1
através argN
). Se uma correspondência (por valor) for encontrada, esta função retornará um inteiro representando a posição da correspondência na lista, sendo a primeira posição da lista representada pelo inteiro 1.
Se a lista contiver mais de uma instância de x, esta função retornará a posição da primeira correspondência (a correspondência com o índice de posição mais baixo). 0 será retornado se a lista não contiver um valor correspondente ou se apenas um único argumento for fornecido.
Exemplos
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
IsInteger
Declaração
bool IsInteger(type x)
Sintaxe
IsInteger(<x>)
Parâmetros Obrigatórios
x
: Um elemento a ser avaliado
Descrição
Retorna verdadeiro se o argumento for do tipo inteiro ou longo ou puder ser convertido em inteiro ou longo sem qualquer perda de informação.
Exemplos
$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
Declaração
bool IsNull(type x)
Sintaxe
IsNull(<x>)
Parâmetros Obrigatórios
x
: Um elemento a ser avaliado
Descrição
Retorna verdadeiro se o argumento for nulo. Aplica-se a campos, variáveis e funções de banco de dados que podem retornar nulos.
Veja também o IfNull
e IfEmpty
funções para atalhos que podem ser usados em vez desta função.
Exemplos
// If the "POHeader.Vendor_Code" is null,
// it returns a string "VC", otherwise it returns the code
If(IsNull(POHeader.Vendor_Code), POHeader.Vendor_Code, "VC")
IsValid
Declaração
bool IsValid(type x)
Sintaxe
IsValid(<x>)
Parâmetros Obrigatórios
x
: Um elemento a ser avaliado
Descrição
Retorna verdadeiro se a avaliação do argumento resultar sem erro.
Exemplos
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
Declaração
int Length(type x)
Sintaxe
Length(<x>)
Parâmetros Obrigatórios
x
: Um elemento a ser avaliado
Descrição
Retorna o comprimento do argumento de entrada.
O comportamento deste método depende do tipo de argumento:
- string: O comprimento da string é retornado
- array: O número de elementos no array é retornado
- dados binários: O número de bytes é retornado
- Para todos os outros tipos, é feita uma tentativa de converter o argumento em uma string e o comprimento da string resultante é retornado.
- Se o argumento não puder ser convertido em uma string, ou se o argumento for nulo ou de tipo desconhecido, 0 será retornado.
Exemplos
// 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
Declaração
null Null()
Sintaxe
Null()
Descrição
Retorna nulo.
Exemplos
Esta função pode ser usada para inserir um valor nulo em colunas específicas de um banco de dados.
Random
Declaração
int Random(int min, int max)
Sintaxe
Random(<min>, <max>)
Parâmetros Obrigatórios
min
: Valor inteiro do número aleatório mínimomax
: Valor inteiro do número aleatório máximo
Descrição
Gera um número inteiro aleatório entre e incluindo os valores mínimo e máximo fornecidos. Veja também o RandomString
função.
Exemplos
// 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
Declaração
string RandomString(int len[, string chars])
Sintaxe
RandomString(<len>[, <chars>])
Parâmetros Obrigatórios
len
: Comprimento da string aleatória resultante
Parâmetros Opcionais
chars
: String contendo caracteres que serão usados na string aleatória resultante
Descrição
Gera uma string aleatória de comprimento determinado. Por padrão, a função utiliza caracteres alfanuméricos; o conjunto que inclui a-z, A-Z e 0-9. Veja também o Random
função.
Exemplos
// 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
Declaração
array ReadArrayString(string arrayString[, string type])
Sintaxe
ReadArrayString(<arrayString>[, <type>])
Parâmetros Obrigatórios
arrayString
: Uma representação em string de um array
Parâmetros Opcionais
type
: Uma string que descreve o tipo que a string do array representa, como"string"
,"int"
,"double"
,"bool"
Descrição
Lê uma string que representa uma matriz única ou multidimensional.
A matriz é representada colocando os elementos da matriz com um par de chaves ({
e }
). Cada elemento da matriz pode ser uma matriz ou um elemento escalar separado por vírgula (,
). Os elementos em uma matriz devem ser todos escalares ou todos matrizes.
O valor escalar pode ser representado por uma string CSV. As aspas duplas para colocar a string são opcionais, a menos que a string contenha caracteres especiais, como ",{}\n
(aspas duplas, vírgula, colchetes, tabulações, quebras de linha ou retornos de carro). Dentro da string entre aspas duplas, cada aspa dupla deve ser escapada por duas aspas duplas. O segundo argumento opcional serve para especificar o tipo de dados do valor escalar. O tipo é considerado string se não for especificado explicitamente.
Exemplos
// 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
Declaração
int RecordCount()
Sintaxe
RecordCount()
Descrição
Retorna o número da instância do loop de destino que está sendo gerado no momento.
Se for chamado em uma condição, ele retornará o número da última instância gerada. A primeira vez que este método é chamado em um loop ele retorna 0 (zero) se for chamado em uma condição; caso contrário, retorna 1 (um). O contador é zerado cada vez que um novo loop é iniciado.
Nota
Este método foi descontinuado e poderá ser removido em uma versão futura.
Usar SourceInstanceCount()
ou TargetInstanceCount()
em vez de. TargetInstanceCount()
é equivalente a este método.
Exemplos
RecordCount
retorna um valor de 5 ao gerar a quinta linha em um nó de loop de destino.
ReRunOperation
Declaração
bool ReRunOperation([bool runSynchronously])
Sintaxe
ReRunOperation([<runSynchronously>])
Parâmetros Opcionais
runSynchronously
: Sinalizador para indicar se a operação deve ser executada de forma síncrona (o padrão) ou assíncrona
Descrição
Executa novamente a operação atual.
O comportamento deste método em relação ao valor de retorno e variáveis globais é idêntico ao RunOperation
função. Consulte essa função para obter uma descrição de como a nova execução da operação de forma síncrona ou assíncrona afeta as variáveis globais globais.
Aviso
Como esta é uma chamada recursiva, é essencial que haja uma condição de parada, provavelmente incluindo o CancelOperation
função. Caso contrário, você acabará em um loop infinito de chamadas de operação.
Exemplos
ReRunOperation();
// Re-runs the current operation synchronously
ReRunOperation(false);
// Re-runs the current operation asynchronously
RunOperation
Declaração
bool RunOperation(string operationId[, bool runSynchronously])
Sintaxe
RunOperation(<operationId>[, <runSynchronously>])
Parâmetros Obrigatórios
operationId
: Um ID de operação no projeto atual. Veja as instruções em inserir itens do projeto.
Parâmetros Opcionais
runSynchronously
: Sinalizador para indicar se a operação deve ser executada de forma síncrona (o padrão) ou assíncrona
Descrição
Executa uma operação de forma síncrona ou assíncrona, sendo síncrono o padrão.
Executando de Forma Síncrona
Se run_synchronously=true
a operação chamada e quaisquer operações de sucesso/falha serão executadas dentro da operação atual e a operação atual aguardará o término de toda a cadeia de operação. Todas as variáveis globais são herdadas pela operação chamada e quaisquer alterações nas variáveis globais serão refletidas na operação atual. Este é o comportamento padrão se o segundo argumento não for fornecido. Devoluções false
se a operação chamada resultou em falha.
Se run_synchronously=false
este método coloca a operação chamada na fila de processamento Jitterbit para ser processada assim que todas as operações anteriores a ela forem processadas. Todas as variáveis globais são herdadas pela operação chamada, mas as alterações nessas variáveis não serão refletidas na operação atual. A operação atual continuará a ser executada independentemente da operação chamada e não há garantia de qual operação terminará primeiro. Devoluções false
se a operação chamada não puder ser adicionada à fila. Com o modo assíncrono, essas variáveis globais são passadas para a operação chamada por valor e não por referência, o que garante que quaisquer alterações nas variáveis não sejam refletidas em nenhuma outra operação.
Se a função retornar false
para indicar uma falha ou se a operação chamada não pôde ser colocada na fila, chame GetLastError
para recuperar a mensagem de erro.
Exemplos
// Runs the "MyOperation"
RunOperation("<TAG>MyProject/Operations/MyOperation</TAG>");
RunOperationFromProject
Declaração
bool RunOperationFromProject(string operationId[, bool runSynchronously])
Sintaxe
RunOperationFromProject(<operationId>[, <runSynchronously>])
Parâmetros Obrigatórios
operationId
: Um ID de operação em um projeto diferente implantado no mesmo ambiente do projeto atual.
Parâmetros Opcionais
runSynchronously
: Sinalizador para indicar se a operação deve ser executada de forma síncrona (o padrão) ou assíncrona
Descrição
Executa uma operação de forma síncrona ou assíncrona, sendo síncrono o padrão. Esta função, disponível a partir da versão 8.22, permite executar operações de diferentes projetos que estão localizados e já implantados no mesmo ambiente do seu projeto atual. Esta função funciona de forma semelhante à RunOperation
função.
Obtendo o ID da Operação
Para obter o OperationID da operação no outro projeto (referido como projeto remote), você deve primeiro implantar o projeto remoto no mesmo ambiente do projeto atual.
Então, usando o _Analista de Negócios_modo do Design Studio, insira esta função em seu script. O assistente exibido solicitará o projeto que você gostaria de usar e permitirá que você selecione uma de suas operações atualmente implementadas. Em seguida, ele criará um caminho apropriado e o inserirá como ID. Veja também as instruções sobre inserir itens do projeto.
Variáveis globais
Variáveis globais definidas no projeto remoto podem ser herdadas, dependendo se a operação remota é executada de forma síncrona ou não. Conforme descrito na próxima seção, se executadas de forma síncrona, as variáveis globais serão herdadas pela cadeia de operação chamada e quaisquer alterações nas variáveis globais serão refletidas na operação atual. Isso permite que um projeto remoto se comunique com a operação de chamada.
Com o modo assíncrono, essas variáveis globais são passadas para a operação remota por valor e não por referência, o que garante que quaisquer alterações nas variáveis não sejam refletidas na operação atual.
Executando de Forma Síncrona
Para runSynchronously=true
, a operação e quaisquer operações com sucesso ou falha serão executadas dentro da operação atual e a operação atual aguardará a conclusão de toda a cadeia de operação chamada. Todas as variáveis globais são herdadas pela cadeia de operação chamada e quaisquer alterações nas variáveis globais serão refletidas na operação atual. Este é o comportamento padrão se o segundo argumento não for fornecido. Devoluções false
se a operação chamada resultou em falha.
Para runSynchronously=false
, este método coloca uma operação na fila de processamento Jitterbit para ser processada assim que todas as operações anteriores a ela forem processadas. Todas as variáveis globais são herdadas pela cadeia de operação chamada, mas as alterações nessas variáveis não serão refletidas na operação atual. A operação atual continuará a ser executada independentemente da cadeia de operação chamada e não há garantia de qual operação terminará primeiro. Devoluções false
se a operação não puder ser adicionada à fila.
Se a função retornar false
para indicar uma falha ou se a operação não pôde ser colocada na fila, ligue GetLastError
para recuperar a mensagem de erro.
Nota
A operação no projeto externo já deve ter sido implantada nesse projeto para ser usada em um RunOperationFromProject
função em seu projeto atual.
Exemplos
// Runs the "MyOperation" in the default mode of synchronously
RunOperationFromProject("<TAG>Project/MyProject/Operations/MyOperation</TAG>");
RunPlugin
Declaração
bool RunPlugin(string pluginId)
Sintaxe
RunPlugin(<pluginId>)
Parâmetros Obrigatórios
pluginId
: Um ID de plugin no projeto atual. Veja as instruções em inserir itens do projeto.
Descrição
Executa um plugin especificado e continua a execução do script atual. Se diversas versões de um plug-in estiverem instaladas em um agente, a versão mais recente disponível será usada.
Na UI do Design Studio, apenas os plug-ins que podem ser executados dentro de um script são exibidos; plug-ins executados em origens, destinos e chamadas de serviço da Web ficam ocultos. Veja as instruções em inserir itens do projeto.
Devoluções true
se o plugin for concluído sem erros. Devoluções false
se o plugin não pôde ser executado ou a própria implementação do plugin retornou um erro. Chamar GetLastError
para recuperar a mensagem de erro.
Exemplos
// Runs the Jitterbit HMACSHA256Generator plugin
RunPlugin("<TAG>plugin:http://www.jitterbit.com/plugins/pipeline/user/HMACSHA256Generator</TAG>");
RunScript
Declaração
string RunScript(string scriptId[, type var1, type var2, ..., type varN])
Sintaxe
RunScript(<scriptId>[, <var1>, <var2>, ..., <varN>])
Parâmetros Obrigatórios
scriptId
: Um ID de script no projeto atual. Veja as instruções em inserir itens do projeto.
Parâmetros Opcionais
var1...varN
: Variáveis adicionais, a serem passadas para o script que está sendo chamado
Descrição
Executa o script especificado e continua a execução do script atual. Este método retorna, em caso de sucesso, o valor de retorno do script chamado como uma string.
Uma lista de valores pode ser passada para um RunScript
funcionam como variáveis de entrada. O script criará variáveis locais usando esses valores com nomes padrão, como _1, _2 ...
.
Se nomes abrangentes forem preferidos, o ArgumentList
função pode ser usada para mapear uma lista de nomes de variáveis locais para a lista de_1, _2 ...
. Veja o ArgumentList
função para exemplos.
Aviso
O tipo de retorno é um string
. Todos os outros tipos são convertidos em seu equivalente de string. Valores nulos são retornados como vazios string
. Matrizes são retornadas como um string
; se contiverem valores escalares, eles podem ser convertidos em uma matriz usando o ReadArrayString
função. (Uma matriz multidimensional também pode ser convertida por ReadArrayString
.)
Aviso
Se o script chamado for um script JavaScript, nenhum argumento será passado. Quaisquer argumentos incluídos na chamada para o RunScript
não será declarada ou disponibilizada no script JavaScript. O único método para passar informações para um script JavaScript é usar variáveis globais; essas são variáveis prefaciadas com um $
símbolo. Esses valores podem ser disponibilizados dentro do script JavaScript usando o comando Jitterbit.GetVar
função.
Exemplos
// 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
Declaração
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])
Sintaxe
Set(<name>, <value>[, <index1>, <index2>, ..., <indexN>])
Parâmetros Obrigatórios
name
: O nome de uma variável global, seja um escalar ou um arrayvalue
: Um valor a ser atribuído à variável global
Parâmetros Opcionais
index1...indexN
: Índice ou índices usados para descrever a posição de um elemento se estiver configurando um elemento em uma matriz
Descrição
Define o valor de uma variável global com um determinado nome como um valor e retorna o valor. Veja também o complemento Get
função.
Primeira Forma: Escalares
Na primeira forma, um nome de string de uma variável global é definido usando o nome e o valor fornecidos.
(Embora uma variável *local* possa ser passada como referência, isso não é recomendado, pois os resultados podem ser inconsistentes. Variáveis locais não devem ser definidas através deste mecanismo.)
Veja os exemplos abaixo.
Segunda e Terceira Formas: Matrizes
Na segunda e terceira formas, argumentos adicionais fornecem os índices para definir um elemento em uma matriz.
Se o primeiro argumento for uma matriz (ou o nome de uma variável global que seja uma matriz), você poderá definir o valor de um elemento da matriz especificando seu índice (ou índices para matrizes multidimensionais) como argumentos adicionais.
Para anexar dados a um array, passe um valor de índice negativo ou o tamanho do array. O tamanho pode ser determinado usando o Length
funciona como Length($array)
.
As matrizes são indexadas em zero; o primeiro elemento está no índice 0 e o último elemento (do array $array
) está no índice [Length($array)-1]
. Matrizes podem ser criadas com o Array
ou ReadArrayString
funções.
A tentativa de definir um elemento além do final da matriz resultará na adição de elementos adicionais de valor nulo à matriz, conforme necessário para preencher a matriz até o tamanho correto.
Sintaxe do Prefixo SCOPE_CHUNK
Definir um nome de variável prefixado com a frase SCOPE_CHUNK
criará uma variável global que é avaliada à medida que cada pedaço de dados é processado. Isso pode ser usado na criação de variáveis globais cujo valor é exclusivo para um determinado pedaço e pode então identificar esse pedaço quando um nome de arquivo ou registro é criado em um destino. Veja também o GetChunkDataElement
e SetChunkDataElement
funciona como um método alternativo que permite o uso de outros nomes de variáveis.
Cuidado
O SCOPE_CHUNK
a sintaxe de prefixo não é suportada em operações com uma transformação que usa mapeamento condicional.
Exemplos
// 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
Declaração
type SetChunkDataElement(string name, type value)
Sintaxe
SetChunkDataElement(<name>, <value>)
Parâmetros Obrigatórios
name
: O nome da variável chunkvalue
: O valor para definir a variável chunk como
Descrição
Define o valor de uma variável de bloco especificada e retorna o valor. Uma variável chunk é avaliada à medida que cada pedaço de dados é processado. Um método alternativo é usar o SCOPE_CHUNK
sintaxe do Set
função.
Veja também o GetChunkDataElement
e Set
funções.
Exemplos
// 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
Declaração
void Sleep(int seconds)
Sintaxe
Sleep(<seconds>)
Parâmetros Obrigatórios
seconds
: O número inteiro de segundos para suspender a operação atual
Descrição
Faz com que a execução seja suspensa por um número especificado de segundos.
Exemplos
// Sleeps the current operation for 1 minute
Sleep(60);
SourceInstanceCount
Declaração
int SourceInstanceCount()
Sintaxe
SourceInstanceCount()
Descrição
Retorna a contagem de instâncias do gerador mais recente.
O valor independe de a instância de destino ter sido gerada ou não; o mesmo valor será retornado se for chamado em um script de condição ou em um script de mapeamento.
Quando a primeira instância de origem é usada como gerador, 1 é retornado, depois 2 e assim por diante.
Veja também o TargetInstanceCount
função.
Exemplos
// Returns the instance count of the most recent generator
currentSourceInstance = SourceInstanceCount();
TargetInstanceCount
Declaração
int TargetInstanceCount()
Sintaxe
TargetInstanceCount()
Descrição
Retorna a contagem de instâncias de um nó de loop de destino gerador.
Quando chamado em uma condição, ele retorna o número de instâncias de destino que foram geradas até o momento para o nó do loop atual. O número retornado por este método será um a menos se for chamado em uma condição, pois, em uma condição, não se sabe se a instância de destino atual será gerada ou não.
Quando a primeira instância de destino é gerada, 1 é retornado, depois 2 e assim por diante. Se chamada em uma condição, a sequência será 0, 1 e assim por diante.
Veja também o SourceInstanceCount
função.
Exemplos
// Returns the instance count of the most recent target generator
currentTargetInstance = TargetInstanceCount();
WaitForOperation
Declaração
void WaitForOperation(string operationId[, int timeOutSec, int pollIntervalSec])
Sintaxe
WaitForOperation(<operationId>[, <timeOutSec>, <pollIntervalSec>])
Parâmetros Obrigatórios
operationID
: Uma operação no projeto atual
Parâmetros Opcionais
timeOutSec
: Uma variável localpollIntervalSec
: Uma variável local
Descrição
Interrompe a execução de um script ou mapeamento até que todas as instâncias da operação especificada atualmente na fila de operação tenham concluído o processamento. Este método é útil se você deseja adicionar muitas instâncias de uma operação à fila para processamento paralelo e, em seguida, aguardar a conclusão de todas elas.
A operação utilizada nesta chamada de função deve ser definida como uma operação no projeto atual. Veja as instruções em inserir itens do projeto.
Observação:
- Para cada operação (identificada pelo seu
operationID
) que deve ser esperado, uma chamada deve ser feita para esse método. - Instâncias de operação que são adicionadas (por chamadas ao
RunOperation
função) após esta chamada ser feita não são esperados. - O usuário atual precisa ter acesso de leitura para a operação que está sendo aguardada.
O segundo argumento (opcional) é o tempo limite em segundos. O tempo limite padrão é de 1 hora (3.600 segundos) e se todas as operações não forem concluídas dentro desse tempo, um erro será gerado. Se você espera que suas operações sejam executadas por mais tempo em condições normais, você deverá aumentar o tempo limite. Você pode lidar com esse erro usando o Eval
função.
O terceiro argumento (opcional) é o intervalo de pesquisa em segundos. O intervalo de sondagem é o tempo entre as verificações da fila de operação. O intervalo de pesquisa padrão é de 10 segundos. O padrão não será um impacto significativo no desempenho, mas se for esperado que suas operações sejam executadas por um longo período de tempo, você pode querer aumentar o intervalo de sondagem.
Exemplos
// 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>");