Ir para o conteúdo

JavaScript

Introdução

O JavaScript está disponível para uso em scripts criados como um componente de projeto somente (não em scripts usados dentro de uma transformação). Esta página fornece informações sobre o suporte a JavaScript no Harmony, bem como alguns exemplos para você começar. Veja também as páginas relacionadas para criar um script, usando o editor de script, e testando um script.

Importante

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

Suporte a JavaScript no Harmony

O mecanismo JavaScript do Harmony suporta o padrão ECMA-262 v5.1 conforme especificado em 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 confirma a manipulação e o 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 Document Object Model (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 usando 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"];

Depois de criar um novo JavaScript no Cloud Studio, você pode inserir o script diretamente no editor de script. Em JavaScripts usados no Cloud Studio, os scripts devem ser incluídos em um <javascript> etiqueta de abertura e </javascript> tag de fechamento.

Iterações de Loop

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 sobre como aumentar o número máximo de loops permitidos, consulte [Settings] em Editar o arquivo de configuração (jitterbit.conf).

Para um exemplo de um loop, veja JavaScript loop mais adiante nesta página em Exemplos.

Paleta de Componentes

A paleta de componentes de script fornece acesso a vários componentes que podem ser usados dentro de um script. Você pode usar componentes dentro de um script arrastando-os ou clicando duas vezes neles da paleta de componentes, usando o recurso de preenchimento automático ou digitando ou colando manualmente a sintaxe correta.

Nota

Se um script chamar outros componentes do projeto que ainda não foram implantados, esses componentes deverão ser implantados antes que você possa executar o script com sucesso.

Você pode acessar a paleta de componentes de script no lado direito do designer de projeto e do editor de script:

funções JavaScript

Algumas das guias exibidas na paleta de componentes de script mostram componentes que não podem ser usados em um script escrito em JavaScript. Especificamente, não há suporte para referenciar plugins, operações, notificações e outros scripts em um script escrito em JavaScript. As guias que contêm funções ou componentes que podem ser usados em um script escrito em JavaScript são descritas abaixo.

Funções

O a aba Funções fornece uma lista de funções disponíveis para uso em um script.

Dentro de um script, você pode usar funções inserindo a sintaxe da função.

Para adicionar a sintaxe da função a um script (Jitterbit Script ou JavaScript), use um destes métodos:

  • Arraste a função da paleta para o script para inserir a sintaxe da função.
  • Clique duas vezes na função na paleta para inserir a sintaxe da função no local do seu cursor dentro do script. Ao inserir a sintaxe da função, o primeiro argumento da função fica destacado e seu cursor é movido para o final do argumento.
  • Comece a digitar o nome da função e pressione Control+Space para exibir uma lista de sugestões de preenchimento automático. Selecione uma função para inserir a sintaxe da função.
  • Insira manualmente a sintaxe da função.

As funções disponíveis para uso em um JavaScript estão disponíveis em quatro categorias: Jitterbit, Keywords, Common Functions e Math. Para informações detalhadas sobre cada função disponível em JavaScript no Harmony, consulte estas páginas:

Variáveis

O a aba Variáveis fornece acesso a variáveis que estão disponíveis para referência global em todo o projeto, incluindo variáveis globais, variáveis do projeto e variáveis Jitterbit.

Dentro de um script, você pode usar variáveis inserindo a sintaxe da variável (veja a documentação para cada tipo de variável em Variáveis).

Para adicionar a sintaxe variável a um script (Jitterbit Script ou JavaScript), use um destes métodos:

  • Arraste a variável da paleta para o script para inserir a sintaxe da variável.
  • Clique duas vezes na variável na paleta para inserir a sintaxe da variável no local do cursor dentro do script.
  • Comece a digitar o nome da variável e pressione Control+Space para exibir uma lista de sugestões de preenchimento automático. Selecione uma variável para inserir a sintaxe da variável.
  • Insira manualmente a sintaxe da variável.

Variáveis locais não estão listados porque não estão disponíveis globalmente; no entanto, você ainda pode usá-los localmente dentro de um script.

Variáveis Globais

Todas as variáveis globais Jitterbit podem ser acessadas e atualizadas a partir de um JavaScript. Quaisquer variáveis globais JavaScript recém-definidas se tornam 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.SetVar e Jitterbit.GetVar 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 é convertido em uma string quando a variável é 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 abaixo.

Dica

Informações adicionais sobre o Jitterbit.GetVar e Jitterbit.SetVar funções está na próxima seção 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á estão 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 é 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 Harmony.
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 Harmony.

Variáveis do Projeto

As variáveis de projeto são criadas primeiro como um componente de projeto no Cloud Studio. Depois que uma variável de projeto é criada, você pode definir valores para elas por meio do Cloud 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 Harmony define certas variáveis globais que estão sempre disponíveis ao longo de um 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. Saiba mais em Variáveis Jitterbit.

No Jitterbit JavaScript, as variáveis Jitterbit predefinidas pelo Harmony 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.

Endpoints

O a aba Endpoints fornece uma lista de endpoints no projeto que estão disponíveis para referência em um script.

Em um script, você pode referenciar endpoints como um argumento para funções inserindo o caminho de referência de conexão ou atividade.

Para adicionar um caminho de referência de conexão ou atividade a um script (Jitterbit Script ou JavaScript), use um destes métodos:

  • Arraste a conexão ou atividade da paleta para o script para inserir a referência apropriada.
  • Clique duas vezes na conexão ou atividade na paleta para inserir a referência apropriada no local do cursor dentro do script.
  • Comece a digitar o nome da conexão ou atividade e pressione Control+Space para exibir uma lista de sugestões de preenchimento automático. Selecione uma conexão ou atividade para inserir a referência apropriada.
  • Insira manualmente a referência de conexão ou atividade.

Os tipos de endpoints que podem ser usados dentro de scripts dependem se há funções que suportam tomar o tipo específico de conexão ou referência de atividade como um argumento. As referências de endpoint devem ser usadas em conjunto com essas funções para serem válidas no script.

Conexões e atividades que podem ser usadas no script aparecem dentro de categorias que listam o número de cada item disponível em cada categoria. Nomes de atividades são precedidos por colchetes contendo o tipo de interação com o recurso de dados que é específico para o tipo de atividade (por exemplo, Read, Write, Query, Upsert, GET, POST, etc.). Para aparecer aqui, conexões e atividades já devem estar configuradas dentro do projeto. Por exemplo, se houver uma única conexão HTTP configurada no projeto, com duas atividades configuradas usando essa conexão, elas aparecerão agrupadas da seguinte forma:

endpoints HTTP

As referências de conexão estão contidas em <TAG> e </TAG> tags e são construídas do tipo do componente do projeto (connection), seguido de dois pontos (:), seguido pelo tipo de conexão, seguido pelo nome da conexão fornecido pelo usuário.

As referências de atividade são mais longas, pois a referência de conexão da qual elas são associadas também deve ser incluída no caminho. As referências de atividade estão contidas em <TAG> e </TAG> tags e são construídas do tipo do componente do projeto (activity), seguido de dois pontos (:), seguido pelo tipo de conexão, seguido pelo tipo de atividade, seguido pelo nome da atividade fornecido pelo usuário.

Dependendo da conexão específica ou do tipo de atividade conforme listado abaixo, você pode usar funções da aba Funções que tomam uma referência de conector como argumento. As funções descritas abaixo estão disponíveis para serem usadas com as conexões e atividades listadas.

Categoria
Descrição Uso de componentes como parâmetros de função
Endpoints do banco de dados Esta categoria inclui qualquer banco de dados configurado conexões (que podem ser usadas em um script) e atividades associadas (que não podem ser usadas em um script escrito em JavaScript).

Conexões de banco de dados podem ser usadas com quaisquer funções listadas em JavaScript Jitterbit e funções comuns que usam um databaseId como parâmetro, incluindo:

  • Jitterbit.DbExecute
  • Jitterbit.DbLookup

Endpoints de compartilhamento de arquivos
Endpoints de FTP
Endpoints de HTTP
Endpoints de armazenamento local
Endpoints de armazenamento temporário
Essas categorias incluem qualquer Compartilhamento de arquivos, FTP, HTTP, Armazenamento local e Armazenamento Temporário conexões (que não podem ser usadas em um script) e atividades associadas (que podem ser usadas em um script).

Nota

Embora uma categoria API Endpoints também esteja incluída, API conexões e atividades não podem ser usadas em um script.

As atividades incluídas (exceto atividades de API ) podem ser usadas com quaisquer funções listadas em JavaScript Jitterbit e funções comuns que usam um sourceId ou targetId como parâmetro, incluindo:

  • Jitterbit.ReadFile
  • Jitterbit.WriteFile

Salesforce Endpoints Esta categoria inclui qualquer Salesforce configurado conexões. As conexões do Salesforce não podem ser usadas em um script escrito em JavaScript. Não aplicável.
Endpoints NetSuite Esta categoria inclui qualquer NetSuite configurado conexões. Conexões NetSuite não podem ser usadas em um script escrito em JavaScript. Não aplicável.

Exemplos

Esses exemplos de JavaScript são fornecidos para referência.

Funções de Arquivo JavaScript

JavaScript File Functions
<javascript>
// This script:
// * Generates some random numbers
// * Writes them to a target file
// * Then reads them back in
// * Writes 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>activity:tempstorage/Temporary Storage Endpoint/tempstorage_write/tmpdata</TAG>", mystring);

// Read the data back in from the file
var filedata = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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);
}

/////////////////
</javascript>

Funções Matemáticas JavaScript

JavaScript Math Functions
<javascript>
// 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;
}

/////////////////
</javascript>

Loop de JavaScript

JavaScript Loop
<javascript>
// Create 100 random numbers

var $output = "";

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

SetScriptResult($output);
</javascript>

Exemplo 1 de JavaScript JSON

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

var jsonData = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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);
</javascript>

Exemplo 2 de JavaScript JSON

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

var jsonData = Jitterbit.ReadFile("<TAG>activity:tempstorage/Temporary Storage Endpoint/tempstorage_read/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 are 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;
</javascript>

Exemplo 3 de JavaScript JSON

JavaScript JSON Example 3
<javascript>
// 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>activity:http/HTTP Endpoint/http_post/Example HTTP POST</TAG>", $outputJSON);
WriteToOperationLog($outputJSON);
SetScriptResult($outputJSON);

</javascript>