Ir para o conteúdo

JavaScript

Introdução

O JavaScript está disponível para uso apenas em scripts criados como um componente de projeto (não em scripts usados em 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 melhorar o desempenho, recomendamos usar JavaScript somente quando um Jitterbit Script equivalente não está disponível.

Suporte JavaScript em Harmony

O mecanismo JavaScript do Harmony suporta o ECMA-262 v5.1 padrão conforme especificado em 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 confirma 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 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 assim:

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

Depois de criar um novo JavaScript no Cloud Studio, você poderá inserir o script diretamente no editor de script. Em JavaScripts usados no Cloud Studio, os scripts devem ser colocados dentro de um <javascript> tag de abertura e </javascript> etiqueta de fechamento.

javascript

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

Para obter um exemplo de loop, consulte Loop JavaScript posteriormente nesta página em Exemplos.

Paleta de Componentes

A paleta de componentes de script fornece acesso a vários componentes que podem ser usados em um script. Você pode usar componentes em um script arrastando ou clicando duas vezes neles na 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 implementados, esses componentes deverão ser implementados antes que você possa executar o script com êxito.

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 referência a plug-ins, operações, notificações e outros scripts em um script escrito em JavaScript. As guias que contêm funções ou componentes utilizáveis em um script escrito em JavaScript são descritas abaixo.

Funções

A aba Funções fornece uma lista de funções disponíveis para uso em um script:

funções da aba

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 cursor dentro do script. Ao inserir a sintaxe da função, o primeiro argumento da função fica destacado e o 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 JavaScript estão disponíveis em quatro categorias: Jitterbit, Palavras-chave, Funções comuns e Matemática. Para obter informações detalhadas sobre cada função disponível em JavaScript no Harmony, consulte estas páginas:

Variáveis

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

variáveis de aba

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

Para adicionar a sintaxe da 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 digitando 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 em um script.

Variáveis globais

Todas as variáveis globais do Jitterbit podem ser acessadas e atualizadas a partir de um JavaScript. Quaisquer variáveis globais JavaScript recém-definidas tornam-se 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.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, não é recomendado usar pontos em um nome de variável. 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 Jitterbit 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.

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 é 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.
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 Harmony.

Variáveis do Projeto

As variáveis do projeto são criadas primeiro como um componente do projeto no Cloud Studio. Depois que uma variável de projeto for criada, você poderá definir valores para ela por meio do Cloud Studio, o Management Console ou 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 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). Eles podem ser usados 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

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

endpoints da aba

Dentro de um script, você pode fazer referência a endpoints como um argumento para funções inserindo o caminho de referência da conexão ou da 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 de extremidade que podem ser usados em scripts dependem de haver funções que suportem o tipo específico de conexão ou referência de atividade como 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. Os nomes das atividades são precedidos por colchetes contendo o tipo de interação com o recurso de dados específico do tipo de atividade (por exemplo, Leitura, Gravação, Consulta, Upsert, GET, POST, etc.). Para aparecer aqui, as 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 por 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 à qual estão associadas também deve ser incluída no caminho. As referências de atividades estão contidas em <TAG> e </TAG> tags e são construídas do tipo do componente do projeto (activity), seguido por 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 listado abaixo, você pode usar funções da aba Funções que usam uma referência de conector como argumento. As funções descritas abaixo estão disponíveis para serem utilizadas com as conexões e atividades listadas.

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

As conexões de banco de dados podem ser usadas com qualquer função listada em JavaScript Jitterbit e Common Functions que usam um databaseId como parâmetro, incluindo:

  • Jitterbit.DbExecute
  • Jitterbit.DbLookup

Endpoints de compartilhamento de arquivos
** Endpoints FTP
Endpoints 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 qualquer função listada em JavaScript Jitterbit e funções comuns que usam um sourceId ou targetId como parâmetro, incluindo:

  • Jitterbit.ReadFile
  • Jitterbit.WriteFile

Endpoints do Salesforce Esta categoria inclui qualquer Salesforce 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. As conexões NetSuite não podem ser usadas em um script escrito em JavaScript. Não aplicável.

Exemplos

Estes 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>

Ciclo 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>

JavaScript JSON Exemplo 1

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

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

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>