Ir para o conteúdo

JavaScript no Jitterbit Design Studio

O 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 em mapeamentos de transformação ou no script pad. Veja Criando um script para obter instruções sobre como criar um novo JavaScript e usar o construtor de script no Jitterbit.

Importante

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

Suporte a 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 tem suporte nativo de JSON e a definição e uso de funções dentro de scripts. O JavaScript do Jitterbit está em conformidade com a manipulação e comportamento de objetos JavaScript padrão.

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 do 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, arrays e objetos JSON são totalmente suportados. Mapas Jitterbit também são suportados dentro do JavaScript. JavaScript trata mapas Jitterbit como objetos JSON, e Jitterbit Scripts tratam objetos JSON como mapas Jitterbit. Propriedades JSON são acessadas via 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 como esta:

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

Crie um novo JavaScript

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

  • Na árvore à esquerda, clique com o botão direito do mouse 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ção anexo e escolha Inserir > Script. Ou clique com o botão direito do mouse em uma fonte ou destino e escolha Inserir antes disto > Script ou Inserir depois disto > Script. Um ícone de script aparecerá dentro do gráfico de operação. Em seguida, faça um dos seguintes:

    • Clique com o botão direito do mouse 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 construtor de script

Depois de criar um novo JavaScript no Jitterbit, você pode inseri-lo diretamente na área de script.

Nota

Ao contrário de um Jitterbit Script, que requer que o script seja encapsulado 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 um JavaScript estão disponíveis em quatro categorias.

anexo

Jitterbit

Esta categoria contém uma lista de funções específicas do Jitterbit. Elas incluem um número limitado de funções Jitterbit padrão, 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ão disponíveis para uso em JavaScript. Para acessar uma dessas funções do Jitterbit em seu JavaScript, prefixe a função com "jitterbit.". Essas funções 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 no Construtor de Fórmulas 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 automaticamente o limpa. Nenhum valor é retornado. Veja WriteFile em Construtor de Fórmulas 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. Veja DBExecute em Construtor de Fórmulas 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. Veja DBLookup em Construtor de Fórmulas 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, usar pontos em um nome de variável não é recomendado. 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 matrizes, dicionários ou objetos JSON. Em vez disso, é recomendado que você crie variáveis globais 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 A função recupera uma variável global Jitterbit atribuída anteriormente (uma variável prefixada com "Jitterbit"). O valor retornado é o tipo de dado 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 várias 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 Funções de registro e erro.

  • SetScriptOutput e SetScriptResult
    Define a saída para o script. Essas duas funções são aliases e qualquer uma delas pode ser usada dependendo da 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 no 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 para 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 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 o JavaScript math objeto conforme especificado no padrão ECMAScript 5.1. Esta categoria é fornecida para facilitar a referência; para a documentação abrangente, consulte o padrão ECMAScript 5.1.

Itens do projeto

Em JavaScript, você pode acessar itens de projeto como fontes e alvos, assim como faria em um Jitterbit Script. Embora os Jitterbit Scripts possam chamar Jitterbit JavaScripts, o inverso não é verdadeiro neste momento. Os 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 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.

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, usar pontos em um nome de variável não é recomendado. 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 matrizes, dicionários ou objetos JSON. Em vez disso, é recomendado que você crie variáveis globais 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.

Definir uma variável global
  • Nomes sem pontos (recomendado): Uma variável global que não contém pontos 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 o $ 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 a mesma 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 somente 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.
Obter 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 comando 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

Variáveis de projeto são criadas primeiro como um item de projeto dentro do Design Studio. Depois que uma variável de projeto é criada, você pode definir valores para elas 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 de projeto depende se o nome da variável de projeto contém um ponto.

  • Nomes sem pontos: O valor de uma variável de projeto que não contém nenhum ponto 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 comando 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 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). Elas podem ser usadas para buscar informações globais, como o nome do arquivo de origem atual ou o nome da operação atual. Elas são documentadas 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.

Plugins

Atualmente, não há suporte para usar plugins em um JavaScript. Em vez disso, use um Jitterbit Script e chame tanto o plugin quanto seu JavaScript a partir dele.

Teste e depurar

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

Exemplos

Os seguintes exemplos de JavaScript 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;
}

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

Loop de 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, totalizaria 75.000 iterações em execução no mesmo script.

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

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

Exemplo 1 de JavaScript JSON

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 2 de JavaScript JSON

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 3 de JavaScript JSON

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);