Skyone
Português
Português
  • Home
  • Plataforma Skyone
    • Visão Geral
    • Acesso e Cadastro
      • Recuperar senha da plataforma
    • Configurações e Preferências
      • Meu Perfil
      • Gestão de Usuários
        • Como convidar um usuário para a plataforma?
        • Opções para Gestão de Usuários
        • Tipos de permissões de usuários
      • Convites
      • Minha Empresa
      • Configuração de Casos de Suporte
      • Gestão de Empresas
      • Faturamento
      • Configurações
      • Segurança
      • Feedback
      • Logs
      • Cancelamento
      • Parceiro-Clientes
        • Meus Clientes
        • Meu Parceiro
    • Notificação
    • Health: Verificação do status da plataforma
    • Casos de suporte
      • Como acompanhar e responder os casos de suporte?
      • Guia para abertura de chamados ABO
  • Computação em Nuvem
    • Visão Geral
    • Autosky
      • Login e Registro de senha
        • Recuperação de Senha
      • Perfil e preferências
      • Recursos do Autosky
        • Dashboard
        • Contas
          • Servidores
            • Opções dos servidores
        • Ambientes
          • Ambiente Micro
            • Instâncias do ambiente micro
            • Servidores do ambiente micro
          • Ambiente Scaling
            • Instâncias do ambiente scaling
            • Servidores do ambiente scaling
          • Outros recursos dos ambientes
        • Clientes
          • Editar e Clonar
          • Usuários
          • Aplicações
          • Sessões
          • Gerenciar Restrições de Acesso
          • Manutenção
            • Histórico de manutenção:
        • Usuários
    • Servidores em Nuvem
      • Opções de Servidores em Nuvem
      • Auditoria de Backups
  • Studio
    • Visão Geral
      • Criação da conta
      • Recuperar senha
      • Guia rápido da plataforma
      • Como testar a plataforma gratuitamente
      • Espaço de trabalho
        • Criação de novo espaço
        • Encontrar um espaço
        • Enviar convite para um espaço
        • Editar um espaço
      • Organizações
        • Criando uma Organização
        • Visão Geral da Organização
        • Administração da Organização
        • Monitoramento da Organização
      • Configurações e Preferências
        • Perfil
        • Notificações
        • Uso e Pagamento
        • Usuários e permissões
    • Integrações
      • Gestão das integrações
        • Criar integração
        • Importar integração
        • Editar integração
        • Opções da integração
        • Fluxos dessa integração
      • Fluxos
        • Gestão dos fluxos
          • Criar fluxo
          • Opções do fluxo
          • Flow Canva: configuração e edição do fluxo
            • Flow Canva: visão geral
            • Exception Handler
              • Configuração do Exception Handler
              • Cases do Exception Handler
            • Fluxos Multicontexto
              • Exemplo: Multicontexto com API Gateway
              • Exemplo: Multicontexto com Gatilho Temporal
            • Configuração do fluxo
        • Gatilhos
          • Gatilhos API Gateway: Adição e Configuração
          • Gatilhos AS2: Adição e Configuração
          • Gatilho de Fila: Adição e Configuração
          • Gatilhos de Fluxo: Adição e Configuração
          • Gatilhos Temporais: Adição e Configuração
          • Gatilhos Webhook: Adição e Configuração
        • Módulos Ferramentais
          • Módulo AS2
          • Módulo CSV
          • Módulo Chamada de Fluxo
          • Módulo Data Balancer
          • Módulo Data SQL execute
          • Módulo EDI
          • Módulo File Job Execute
          • Módulo IF
          • Módulo JavaScript
          • Módulo JSONata Job Execute
          • Módulo Log
          • Módulo Loop Do While
          • Módulo Loop For
          • Módulo Retorno
          • Módulo Transformação de Dados
          • Módulo XML
          • Outros Módulos Ferramentais da plataforma
      • Cabeçalho dos módulos
      • Conectando componentes de um fluxo
      • Edição de gatilhos e módulos no fluxo
      • Operações de Dados
        • Manipulação de Objetos
          • Exemplo prático: Manipulação de variáveis
        • SMOP (Pequenas Operações)
        • Regras de Parametrização
    • Módulos
      • Gestão de módulos
        • Criação de Módulos
        • Importar Módulos
          • Arquivos IAC - Integration as Code
        • Edição de Módulos
        • Opções de Módulos
      • Configurações & Operações
        • Configurações de Módulos
          • Conectividade: Banco de Dados
          • Conectividade: Email
          • Conectividade: REST
          • Conectividade: SOAP
          • Conectividade: Arquivo
          • Conectividade: RFC
          • Gestão das contas conectadas
        • Operações de Módulos
          • Importar operações em módulos REST
          • Gestão das operações
        • Fluxos usando este Módulo
    • Monitoramento
    • API Gateway
    • Terminais & Agente
      • Agente
        • Versões suportadas pelo Agente
        • Como atualizar a versão do Agente
        • Como fazer backup dos arquivos do Agente
      • Terminais
    • Data Management
      • Engine
        • Como utilizar o Proxy para Data Engine
      • Parâmetros
      • Filtros de arquivo
      • Templates de arquivo
      • File Jobs
      • JSONata Jobs
    • Data Lake
    • Data Warehouse
      • Data Jobs
      • Banco de Dados
    • Inteligência Artificial
    • How to
      • Inserir JSON em bancos de dados
      • Flattening: Transformação de dados utilizando JSONata
      • Como utilizar o Form Data
      • Entendendo a recursividade no JSONata
      • Consolidação de output de módulo REST
      • Como configurar um timeout de um componente?
      • Isolar na execução: conceito e aplicação em variáveis
      • Parâmetros de URL no API Gateway
      • Caso de uso: parâmetros de gatilho API Gateway
      • Caso de uso: Exception Handler em transações financeiras
      • Caso de uso: utilizando Grupos para gerenciar acessos aos fluxos
      • Como criar endpoint para download e integrar com o Power BI
      • É possível usar dois gatilhos em um único fluxo?
    • FAQ
    • GIGS: O guia completo
    • Glossário
  • Cibersegurança
    • Visão Geral
    • Análise de Ameaças
      • Painel de Segurança
      • Alvos
      • Agendamentos
      • Resolução de Alvos
      • Grupo de Ameaças
      • Relatório
    • Como instalar os agentes de segurança do Bitdefender
Powered by GitBook
On this page
  • Definição
  • Configuração do módulo
  • Exemplos de Uso
  1. Studio
  2. Integrações
  3. Fluxos
  4. Módulos Ferramentais

Módulo JavaScript

PreviousMódulo IFNextMódulo JSONata Job Execute

Last updated 3 months ago

Definição

O módulo ferramental "JavaScript", módulo padrão da plataforma para a utilização em qualquer fluxo, permite rodar código JavaScript de maneira segura dentro de um ambiente controlado. Este módulo é ideal para realizar transformações de dados, cálculos personalizados e outras operações programáticas específicas do JavaScript.

Confira a seguir o que está disponível para uso, o que é restrito e exemplos práticos de como utilizar a funcionalidade.

✅ Possibilidades de uso

  • Execução de código JavaScript padrão: Você pode usar todas as funcionalidades padrão do JavaScript, incluindo declarações de variáveis, loops, condicionais, manipulação de objetos e arrays.

  • Funções Assíncronas e Promises: Suporte para async/await e Promises, permitindo operações assíncronas como requisições de dados simuladas ou operações que dependem de temporizadores.

  • Temporizadores:

    • setTimeout: Disponível para agendar operações assíncronas após um atraso especificado.

    • clearTimeout: Disponível para cancelar temporizadores criados com setTimeout.

  • Manipulação de Strings e Números: Uso de funções globais como parseInt, parseFloat, Number, String, e outras para manipulação de números e strings.

  • Funções nativas de JavaScript: Todas as funções nativas de JavaScript, como Math, Date, JSON, Array, Object, e RegExp, estão disponíveis.

  • Memória: Pode ser usado até 60MB de memória para a execução do código.

🚫 Restrições de uso

  • Importação de Módulos: Não é possível importar módulos usando require ou import. Isso inclui tanto módulos nativos do Node.js quanto bibliotecas de terceiros, garantindo um ambiente seguro e isolado.

  • Acesso ao Sistema: Não há acesso ao sistema de arquivos, rede, ou outras operações de sistema que possam comprometer a segurança da plataforma.

  • Manipulação de Processos: Funções para manipulação de processos, como process.exit() e process.kill(), não estão disponíveis.

  • Palavras-chave Restritas: Certas palavras-chave e operações, como eval e Function, estão restritas para evitar a execução de código que poderia escapar do ambiente seguro.

  • Acesso a Variáveis Globais: O código executado é isolado do contexto global, sem acesso a variáveis globais externas ao sandbox.

Configuração do módulo

O módulo "JavaScript" aparece na opção Ferramentas da edição de um fluxo. Após clicar para adicioná-lo, o modal de configuração será exibido.

Configuração das variáveis

Preencha os seguintes campos:

  • Chave: identificação da variável

  • Valor: digite ou arraste uma variável

  • Tipo: escolha o tipo de dados mais adequado. As opções são: texto, número, booleano, objeto e array.

Após o preenchimento das configurações, clique em "Avançar".

Resultado

Nesta tela, é possível executar e visualizar as informações da transformação de dados e manipulá-las com o JavaScript.

Parâmetros

Todos os parâmetros são passados dentro do campo "data". Na prática isso significa que todos os parâmetros estão dentro de um objeto "data", que pode ser acessado pelo código JavaScript.

Estrutura e Conteúdo do data:

  • Tipo de Dados: "data" é um objeto JSON. Isso significa que ele pode conter pares de chave-valor, onde as chaves são strings e os valores podem ser de tipos de dados como strings, números, arrays, objetos, booleans, ou null.

  • Campos Personalizados: O conteúdo de data é completamente personalizado e pode conter qualquer informação que o código do usuário precise para funcionar. Não há restrições específicas quanto à estrutura dos dados, além de serem serializáveis em JSON.

Exemplos de Campos:

  • Números e Strings: Valores numéricos ou de texto que podem ser utilizados para cálculos ou manipulações.

  • Arrays e Objetos: Estruturas de dados mais complexas que podem conter listas de itens ou outros objetos aninhados.

  • Dados de Configuração: Informações de configuração específicas que determinam como o código deve se comportar.

Para finalizar a configuração do módulo, clique em "Salvar".

Exemplos de Uso

Exemplo 1: Código síncrono com dois parâmetros:

Imagine um cenário em que temos dois parâmetros. Neste exemplo, chamaremos de "number1" e "number2". Inserimos os dados e utilizamos o seguinte código no JavaScript:

function addNumbers(data) {
  return data.number1 + data.number2;
}
return addNumbers(data);

Em seguida, clicamos em "Executar". O resultado será a soma dos parâmetros, como mostra a imagem abaixo:

Exemplo 2: Código assíncrono com Promises:

Neste exemplo, vamos trabalhar com um cenário assíncrono utilizando Promises no JavaScript.

Imagine que queremos processar os dados após um certo tempo. Vamos usar dois parâmetros, que estão dentro de "data", e a função retornará uma Promise.

O código abaixo simula uma operação assíncrona usando setTimeout para aguardar um segundo antes de resolver a Promise com uma mensagem e os dados fornecidos, após o clique em "Executar":

function fetchData(data) {
return new Promise((resolve) => {
setTimeout(() => {
resolve({ message: 'Data processed successfully', data });
}, 1000);
});
}

return fetchData(data);

O resultado pode ser observado na imagem abaixo:

Exemplo 3: Criar token utilizando a função signJwtToken

Neste exemplo, vamos criar um token JWT utilizando o módulo Javascript.

Para isso utilizaremos a função signJwtToken disponibilizada pela plataforma no contexto do módulo. Essa função recebe três parâmetros, sendo eles:

  • payload: Este campo é obrigatório e do tipo 'objeto'. Seu valor corresponde ao body do token.

  • secret: Este campo é obrigatório e do tipo 'texto'. Seu valor corresponde a chave secreta para gerar e validar o token.

A função signJwtToken recebe um payload (dados que desejamos incluir no token) e uma chave secreta para assinar o token.

Exemplo de utilização

Nos dados de entrada pode ser configurado um parâmetro ou variável caso necessário, exemplo:

Exemplo de dados de entrada:

{
  "data": {
    "payload": {
      "id": 1,
      "first_name": "Kristos",
      "last_name": "Amiranda",
      "email": "kamiranda0@hugedomains.com",
      "gender": "Male",
      "ip_address": "183.129.112.78"
    },
    "secret": "687398ee-8c99-48fe-93b5-5ade50d6e22f"
  }
}

Inserimos o código abaixo na área de Código JavaScript:

const {payload, secret} = data;

return signJwtToken(payload, secret, {expiresIn: '1d'})

Após a execução, o retorno pode ser observado na imagem abaixo:

Em caso de erro, o retorno será diferente, conforme abaixo:

{
	"error": "simulate error",
	"success": "false"
}

Exemplo 4: Decodificar um token usando a função decodeJwtToken

Neste exemplo vamos decodificar um token JWT para verificar e acessar os dados armazenados nele.

Utilizaremos novamente uma função disponibilizada pelo módulo chamada decodeJwtToken. Essa função espera receber dois parâmetros, sendo eles:

  • token: Este campo é obrigatório e do tipo 'texto'. Representa o token que será decodificado e verificado.

  • secret: Este campo é obrigatório e do tipo 'texto'. Representa a chave secreta utiliza para assinar o token.

Exemplo de utilização

Para a entrada, utilizamos os seguintes dados:

{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZmlyc3RfbmFtZSI6IktyaXN0b3MiLCJsYXN0X25hbWUiOiJBbWlyYW5kYSIsImVtYWlsIjoia2FtaXJhbmRhMEBodWdlZG9tYWlucy5jb20iLCJnZW5kZXIiOiJNYWxlIiwiaXBfYWRkcmVzcyI6IjE4My4xMjkuMTEyLjc4IiwiaWF0IjoxNzM3NjQwNzk1LCJleHAiOjE3Mzc3MjcxOTV9.Isi8OlBpc-yUa5EsJa9IOA8wgmAFivgrn_pRClssVGE",
    "secret": "687398ee-8c99-48fe-93b5-5ade50d6e22f"
  }
}

Inserimos o código abaixo na área de Código JavaScript:

const {token, secret} = data;

return decodeJwtToken(token, secret)

Após a execução, o retorno pode ser observado na imagem abaixo:

Em caso de erro o retorno será diferente sendo:

{
    "error": "simulate error",
    "success": "false"
}

Boas Práticas

  • Validação de Entrada: Sempre valide os dados de entrada para garantir a execução correta do código e evitar erros inesperados.

  • Desempenho: Evite loops infinitos ou recursões profundas que possam causar uso excessivo de memória.

.

options: Este campo é opcional e do tipo 'objeto'. Para mais detalhes sobre sua configuração, consulte a documentação da biblioteca javacript: .

Sendo que os parâmetros paylod e secret são obrigatórios, podendo ser acrescidos de outras opções. Neste nosso exemplo, utilizamos o expiresIn. Para visualizar as demais opções,.

Saiba sobre o Cabeçalho do Módulo aqui
jsonwebtoken
consulte a documentação
Definição
Possibilidades de uso
Restrições de uso
Configuração do módulo
Configuração das variáveis
Resultado
Exemplos de Uso
Código síncrono com dois parâmetros
Código assíncrono com Promises
Criar token utilizando a função signJwtToken
Decodificar um token usando a função decodeJwtToken
Boas práticas
Exemplo de configuração
Tela "Resultado"