Ir para o conteúdo

JavaScript

JavaScript está disponível a partir da versão 8.24.2 para scripts criados como parte de uma operação (em outras palavras, como um item de projeto). No momento, o JavaScript não está disponível para uso nos mapeamentos de transformação ou no script pad. Consulte Criando um Script para obter instruções sobre como criar um novo JavaScript e usar o construtor de script no Jitterbit.

Importante

Para melhorar o desempenho, recomendamos usar JavaScript somente quando um Jitterbit Script equivalente não está disponível.

Suporte JavaScript no Jitterbit

O mecanismo Javascript do Jitterbit suporta o ECMA-262 v5.1 padrão conforme especificado pela ECMA International. Esta versão do JavaScript possui suporte nativo a JSON e à definição e utilização de funções dentro de scripts. O JavaScript do Jitterbit está em conformidade com a manipulação e comportamento padrão de objetos JavaScript.

Aviso

Embora o Jitterbit suporte JavaScript com base no padrão, nem todas as funcionalidades do JavaScript estão disponíveis. O Jitterbit não oferece suporte a estes recursos JavaScript:

  • APIs da web do modelo de objeto de documento (DOM)
  • Funções e objetos integrados do Mozilla
  • Certos tipos de JavaScript, como Set e Map
  • Acesso a objetos Java

Tipos de dados simples, matrizes e objetos JSON são totalmente suportados. Os mapas Jitterbit também são suportados em JavaScript. JavaScript trata mapas Jitterbit como objetos JSON e os Scripts Jitterbit tratam objetos JSON como mapas Jitterbit. As propriedades JSON são acessadas por meio de chaves de mapa.

Por exemplo, dado este objeto JSON definido em JavaScript:

var $myObj = {
 "name":"John",
 "age":30,
 "cars": {
   "car1":"Ford",
   "car2":"BMW",
   "car3":"Fiat"
   }
 };

Em um Jitterbit Script, o objeto seria acessado por um mapa. Acesse o "car3" propriedade assim:

$mycar = $myObj["cars"]["carro3"];

Crie um Novo JavaScript

Dentro do seu projeto no Jitterbit Studio, existem várias maneiras de criar um novo JavaScript como um item do projeto:

  • Na árvore à esquerda, clique com o botão direito na seção Scripts e selecione Novo JavaScript.

  • Dentro de uma operação existente, clique com o botão direito em qualquer ponto de inserçãoanexo e escolha Inserir > Script. Ou clique com o botão direito em uma origem ou destino e escolha Inserir antes disso > Script ou Inserir depois disso > Script. Um ícone de script aparecerá no gráfico de operação. Em seguida, faça um dos seguintes:

    • Clique com o botão direito no ícone do script e escolha Criar novo JavaScript.

    • Clique duas vezes no ícone do script e clique no botão Criar Novo JavaScript.

Usar o Construtor de Script

Depois de criar um novo JavaScript no Jitterbit, você pode inserir seu JavaScript diretamente na área de script.

Nota

Ao contrário de um Jitterbit Script, que exige que o script seja agrupado dentro <trans> ... </trans> tags, não há tags necessárias para scripts em JavaScript. Em vez disso, basta inserir seu JavaScript diretamente na área de script.

anexo

Funções

As funções disponíveis para uso em JavaScript estão disponíveis em quatro categorias.

anexo

Tremor

Esta categoria contém uma lista de funções específicas do Jitterbit. Isso inclui um número limitado de funções padrão do Jitterbit, bem como uma série de funções JavaScript específicas do Jitterbit.

Atualmente, um número limitado de funções do Jitterbit Script está disponível para uso em JavaScript. Para acessar uma dessas funções Jitterbit em seu JavaScript, prefixe a função com "Jitterbit.". Estas funções do Jitterbit estão disponíveis para uso em JavaScript no Jitterbit:

  • Jitterbit.ReadFile(string source_id[, string file_name])
    Lê um arquivo da fonte especificada conforme descrito em Formula Builder Funções de arquivo. O valor retornado é uma string. Por exemplo, em JavaScript, usando esta função Jitterbit para ler um arquivo:

    var MyData = Jitterbit.ReadFile("<TAG>Sources/myfile</TAG>");
    
  • Jitterbit.WriteFile(string target_id, type file_contents[, string file_name])
    Grava em um arquivo e libera o arquivo automaticamente. Nenhum valor é retornado. Veja WriteFile em Formula Builder Funções de arquivo.

  • Jitterbit.DbExecute(string database_id, string sql_str, ...)
    Executa uma instrução SQL em um banco de dados e retorna os resultados. O valor retornado é uma string. Consulte DbExecute em Formula Builder Funções de banco de dados.

  • Jitterbit.DbLookup(string database_id, string sql_str)
    Executa uma instrução SQL em um banco de dados e retorna o primeiro resultado que corresponde aos critérios especificados. O valor retornado é uma string. Consulte DBLookup em Formula Builder Funções de banco de dados.

  • Jitterbit.GetVar(string name) e Jitterbit.SetVar(string name, string value)

    Aviso

    O Jitterbit.GetVar e Jitterbit.SetVar funções são projetadas para permitir o uso de variáveis que contêm pontos dentro do nome da variável. No entanto, não é recomendado usar pontos em um nome de variável. Como o valor será convertido em uma string quando a variável for definida, essas funções não podem ser usadas com tipos de dados complexos, como arrays, dicionários ou objetos JSON. Em vez disso, é recomendado que você crie variáveis Jitterbit sem pontos e, em vez disso, use sublinhados no lugar de pontos e use o cifrão padrão $ sintaxe conforme descrito em Variáveis Globais.

    O Jitterbit.GetVar função recupera uma variável global Jitterbit atribuída anteriormente (uma variável prefixada com "Jitterbit"). O valor retornado é o tipo de dados apropriado.

    O Jitterbit.SetVar função atribui um valor a uma variável global Jitterbit (uma variável prefixada com "Jitterbit"). O valor retornado é uma string. Este exemplo usa uma API personalizada que executa uma operação contendo um JavaScript usando Jitterbit.GetVar e Jitterbit.SetVar:

    var response="Hello World";
    
    response += "\r\nProject name: " + Jitterbit.GetVar("$jitterbit.operation.project_name");
    response += "\r\nOperation Name: " + Jitterbit.GetVar("$jitterbit.operation.name");
    response += "\r\ntest_var: " + Jitterbit.GetVar("$jitterbit.api.request.parameters.test_var");
    
    Jitterbit.SetVar("$jitterbit.api.response.headers.content_type","text/plain");
    Jitterbit.SetVar("$jitterbit.api.response.headers.test_header", "This is a header test");
    Jitterbit.SetVar("$jitterbit.api.response",response);
    

Incluídas nesta categoria estão diversas funções adaptadas para uso com JavaScript no Jitterbit. Essas funções não são prefixadas com "Jitterbit.".

  • WriteToOperationLog
    Envia a saída para o log de operação atual do Jitterbit. Criado para uso com JavaScript no Jitterbit e funciona de forma semelhante à função Jitterbit descrita no Formula Builder Logging and Error Functions.

  • SetScriptOutput e SetScriptResult
    Define a saída do script. Essas duas funções são apelidos e podem ser usadas dependendo de sua preferência. Ao contrário dos Jitterbit Scripts, que retornam automaticamente o valor da última linha, os Jitterbit JavaScripts não retornam um valor automaticamente. Você pode usar qualquer uma dessas funções em seu JavaScript para retornar o resultado do script. Por exemplo:

    var MyVariable = "Hello World";
    WriteToOperationLog(MyVariable);
    SetScriptResult(MyVariable);
    

Palavras-chave

Esta categoria contém uma lista de palavras-chave JavaScript no padrão ECMAScript 5.1 e estão incluídas aqui por conveniência.

Funções Comuns

Esta categoria contém uma lista de funções JavaScript no padrão ECMAScript 5.1 que podem ser relevantes para usuários do Jitterbit. Esta categoria não é abrangente – você pode usar outras funções JavaScript que não estão listadas aqui, como JavaScript Array, Date, e String objetos e suas funções associadas.

Nota

Para obter uma lista abrangente de funções JavaScript, consulte o padrão ECMAScript 5.1 em https://www.ecma-international.org/ecma-262/5.1/.

Matemática

Esta categoria contém propriedades de função disponíveis para JavaScript math objeto conforme especificado no padrão ECMAScript 5.1. Esta categoria é fornecida para facilitar a referência; para obter a documentação abrangente, consulte o padrão ECMAScript 5.1.

Itens do Projeto

Em JavaScript, você pode acessar itens do projeto, como fontes e destinos, da mesma forma que faria em um Jitterbit Script. Embora os Scripts Jitterbit possam chamar JavaScripts Jitterbit, o inverso não é verdadeiro no momento. Jitterbit JavaScripts não podem chamar outros scripts ou operações.

Elementos de Dados

Esta aba fornece acesso a elementos de dados que estão disponíveis globalmente para uso em todo o seu projeto, incluindo Variáveis Globais, Variáveis e Variáveis Jitterbit.

anexo

Variáveis globais

Todas as variáveis do Jitterbit podem ser acessadas e atualizadas a partir do seu JavaScript. Quaisquer variáveis globais JavaScript recém-definidas se tornarão variáveis globais Jitterbit.

A sintaxe usada para definir e recuperar uma variável global depende se o nome da variável global contém um ponto final.

Aviso

O Jitterbit.GetVar e Jitterbit.SetVar funções são projetadas para permitir o uso de variáveis que contêm pontos dentro do nome da variável. No entanto, não é recomendado usar pontos em um nome de variável. Como o valor será convertido em uma string quando a variável for definida, essas funções não podem ser usadas com tipos de dados complexos, como arrays, dicionários ou objetos JSON. Em vez disso, é recomendado que você crie variáveis Jitterbit sem pontos e, em vez disso, use sublinhados no lugar de pontos e use o cifrão padrão $ sintaxe conforme descrito em Variáveis Globais.

Nota

Informações adicionais sobre o Jitterbit.GetVar e Jitterbit.SetVar funções está na seção anterior em Funções.

Defina uma Variável Global
  • Nomes sem pontos (recomendado): Uma variável global que não contém nenhum ponto em seu nome pode ser criada inicialmente ou atualizada usando o comando var $ou atualizado usando um cifrão $ sem var.

    • var $: Usando var e começando com um cifrão$, o exemplo de código var $serverURL="https://www.example.com" cria ou atualiza uma variável global chamada "serverURL" com um valor de "https://www.example.com". Novas variáveis globais que estão sendo inicializadas devem preceder a $ com var.
    • $: Prefixado com um cifrão $, o exemplo de código $serverURL="https://www.example.com" atualiza a mesma variável global chamada "serverURL" com o mesmo URL. Isso funciona apenas para variáveis globais que já foram inicializadas.
  • Nomes com pontos (não recomendado): Uma variável global que contém pontos em seu nome pode ser criada inicialmente ou atualizada apenas com o Jitterbit.SetVar função.

    • Jitterbit.SetVar: Usando Jitterbit.SetVar, o exemplo de código Jitterbit.SetVar("$server.URL", "https://www.example.com") cria ou atualiza uma variável global chamada "server.URL" com um valor de "https://www.example.com" que será tratado como uma string. Observe que o cifrão $ deve ser incluído no nome da variável, ou a variável não será global para o sistema Jitterbit.
Obtenha uma Variável Global
  • Nomes sem pontos: O valor de uma variável global que não contém pontos em seu nome pode ser recuperado prefixando com um cifrão $.

    • $: Prefixado com um cifrão $, o exemplo de código $serverURL recupera o valor da variável global "serverURL".
  • Nomes com pontos: O valor de uma variável global que contém pontos em seu nome pode ser recuperado somente com o Jitterbit.GetVar função.

    • Jitterbit.GetVar: Usando Jitterbit.GetVar, o exemplo de código Jitterbit.GetVar("$server.URL") retorna o valor da string da variável global chamada "server.URL". Observe que o cifrão $ deve ser incluído no nome da variável para ler o valor global do sistema Jitterbit.

Variáveis do Projeto

As variáveis de projeto são criadas primeiro como um item de projeto no Design Studio. Depois que uma variável de projeto for criada, você poderá definir valores para ela por meio do Design Studio, do Management Console ou do Citizen Integrator. Saiba mais sobre como criar e atualizar variáveis de projeto em Variáveis de Projeto.

No Jitterbit JavaScript, a sintaxe usada para recuperar o valor de uma variável do projeto depende se o nome da variável do projeto contém um ponto final.

  • Nomes sem pontos: O valor de uma variável de projeto que não contém pontos em seu nome pode ser recuperado começando com um cifrão $.

    • $: Prefixado com um cifrão $, o exemplo de código $org_netsuite_auth_username recupera o valor da variável do projeto chamada "org_netsuite_auth_username".
  • Nomes com pontos: O valor de uma variável de projeto que contém pontos em seu nome pode ser recuperado somente com o Jitterbit.GetVar função.

    • Jitterbit.GetVar: Usando Jitterbit.GetVar, o exemplo de código Jitterbit.GetVar("$server.URL") retorna o valor da variável do projeto chamada "server.URL". Observe que o cifrão $ deve ser incluído no nome da variável.

Variáveis de Jitterbit

O sistema Jitterbit define certas variáveis globais que estão sempre disponíveis em todo o seu projeto, conhecidas como variáveis Jitterbit (ou conhecidas como variáveis globais predefinidas). Eles podem ser usados para buscar informações globais, como o nome do arquivo de origem atual ou o nome da operação atual. Eles estão documentados individualmente em Variáveis Jitterbit seção.

No Jitterbit JavaScript, as variáveis Jitterbit predefinidas pelo Jitterbit são acessíveis apenas com o Jitterbit.GetVar função. Isso ocorre porque todas as variáveis Jitterbit predefinidas pelo Jitterbit contêm pontos dentro do nome da variável.

  • Jitterbit.GetVar: Usando Jitterbit.GetVar, o exemplo de código Jitterbit.GetVar("$jitterbit.operation.error") recupera o valor da variável Jitterbit "jitterbit.operation.error". Observe que o cifrão $ deve ser incluído no nome da variável.

Plug-ins

Atualmente, o uso de plug-ins em JavaScript não é compatível. Em vez disso, use um Jitterbit Script e chame o plugin e seu JavaScript a partir dele.

Testar e Depurar

Em um JavaScript, você pode ver e validar os valores das variáveis da mesma forma que faria em um Jitterbit Script. No entanto, a opção Desativar pontos de interrupção não é aplicável, pois a depuração não está disponível em JavaScript. Ao testar, os resultados do script (conforme definido pelo SetScriptOutput ou SetScriptResult funções) aparecerá no campo "Resultado" da aba "Teste" do Design Studio.

Exemplos

Os exemplos de JavaScript a seguir são fornecidos para referência.

Funções de Arquivo JavaScript

JavaScript File Functions
// This script will:
// * Generate some random numbers
// * Write them to a target file
// * Then read them back in
// * Write output to the Operation Log
//

// Get 200 random numbers between 1 and 10000
var mystring = getRandomNumbers(200,1,10000);

// Write the data to a file
Jitterbit.WriteFile("<TAG>Targets/tmpdata</TAG>", mystring);

// Read the data back in from the file
var filedata = Jitterbit.ReadFile("<TAG>Sources/tmpdata</TAG>");

// Output to the Operation Log
WriteToOperationLog("Read file, output: " + filedata);

// Displays the data in the result of the Studio test script tab
SetScriptResult(filedata);

/////////////////

function getRandomNumbers(howMany,min,max) {
  var output = "";

  for (var i=0; i<howMany; i++) {
    output = output + getRandomNumber(min,max) + " \n";
  }

  return output;
}

function getRandomNumber(min,max) {
  return Math.floor((Math.random() * max) + min);
}

/////////////////

Funções Matemáticas JavaScript

JavaScript Math Functions
// Create 200 random numbers
var $output = getRandomNumbers(200);

WriteToOperationLog($output);
SetScriptResult($output);

/////////////////

function getRandomNumbers(howMany) {
  var output = "";

  for (var i=0; i<howMany; i++) {
    output = output + Math.floor((Math.random() * 10000) + 1) + " \n";
  }

  return output;
}

/////////////////

Ciclo JavaScript

JavaScript Loop
// Create 100 random numbers

var $output = "";

for (var i=0; i<100; i++) {
  $output = $output + Math.floor((Math.random() * 10000) + 1) + " \n";
}

SetScriptResult($output);

O número máximo de iterações de loop permitidas no Harmony é 50.000. O número máximo de iterações de loop em JavaScript é por script, não por loop.

Por exemplo, um script JavaScript contendo três loops, onde cada loop executa 25.000 iterações, teria um total de 75.000 iterações em execução dentro de um script.

Para aumentar o número máximo de iterações permitidas em qualquer script JavaScript, adicione manualmente JavaScriptMaxIterations=X onde X é melhor que 50000.

Para obter mais informações, consulte Editar o arquivo de configuração (jitterbit.conf).

JavaScript JSON Exemplo 1

JavaScript JSON Example 1
WriteToOperationLog("\n\n Parsing JSON...");

var jsonData = Jitterbit.ReadFile("<TAG>Sources/JSON_Data</TAG>");
var $jsonObj = JSON.parse(jsonData);

WriteToOperationLog("Value of 'status' is: " + $jsonObj.status);
WriteToOperationLog("Value of 'operation' is: " + $jsonObj.operation);
WriteToOperationLog("Value of 'serverUrl' is: " + $jsonObj.serverUrl);

var $firstOrg = $jsonObj.orgAttrs[0];

WriteToOperationLog("First Org ID is: " + $firstOrg.orgId);
WriteToOperationLog("First Org Name is: " + $firstOrg.orgName);

Exemplo JavaScript JSON 2

JavaScript JSON Example 2
WriteToOperationLog("\n\n Parsing JSON...");

var jsonData = Jitterbit.ReadFile("<TAG>Sources/JSON_Data</TAG>");
var $jsonObj = JSON.parse(jsonData);

WriteToOperationLog("Status: " + $jsonObj.status);
WriteToOperationLog("Operation: " + $jsonObj.operation);

var orgs = "";
var needComma = false;

for (var i=0; i<$jsonObj.orgAttrs.length; i++) {
  if (needComma) orgs = orgs + ",";
  orgs = orgs + $jsonObj.orgAttrs[i].orgId;
  needComma = true;
}

WriteToOperationLog("Org IDs: " + orgs);

// You can modify existing JSON values
// Any changes will be reflected in the Jitterbit system as a map variable
// Here we'll insert a random number as an authentication token
var randomNumber = Math.floor((Math.random() * 10000) + 1);
$jsonObj.authenticationToken = randomNumber;

Exemplo JavaScript JSON 3

Nota

O exemplo a seguir usa JSON stringify para criar facilmente estruturas de valor de propriedade e, em seguida, enviá-las para uma API.

JavaScript JSON Example 3
// This script uses JSON stringify
// to create a property value structure
// and then pushes it to an API

var $complexAPI = {
  "properties": [
    {
      "property": "email",
      "value": $email
    },
    {
      "property": "firstname",
      "value": $firstname
    },
    {
      "property": "lastname",
      "value": $lastname
    },
    {
      "property": "website",
      "value": $website
    },
    {
      "property": "phone",
      "value": $phone
    }
  ]
}

var $outputJSON = JSON.stringify($complexAPI);
Jitterbit.WriteFile("<TAG>Targets/Example HTTP Post</TAG>", $outputJSON);
WriteToOperationLog($outputJSON);
SetScriptResult($outputJSON);