Executar JavaScript
Use esta ação quando um passo precisar de lógica personalizada que o CEL não consegue expressar — reformatar dados, calcular valores ou chamar uma API com código.
Melhor para
- Transformar JSON de passos anteriores exatamente no formato de que um passo posterior precisa
- Cálculos, parsing e validações além do que expressões CEL conseguem fazer
- Pequenas integrações usando
fetchquando a ação Requisição HTTP não for flexível o suficiente
Campos principais
| Campo | O que faz |
|---|---|
| Código JavaScript | O código a executar. Ele é envolvido em uma IIFE assíncrona, então você pode usar await no nível superior e terminar com return <valor> para produzir o resultado do passo |
| Dados de entrada | Expressão CEL opcional avaliada antes da execução. O resultado fica disponível dentro do código na variável input |
| Propósito | Rótulo opcional do que o código faz, exibido nos logs |
| Tempo limite (ms) | Limite de tempo de execução em milissegundos. O padrão é 5000 e o máximo é 30000 — código que ultrapassa o limite (incluindo loops infinitos) é encerrado |
| Limite de memória (MB) | Limite de memória do sandbox. O padrão é 128 MB, entre 8 e 256 |
O código executa em um sandbox V8 isolado em um serviço de execução separado. Não há acesso a APIs do Node.js (require, process, sistema de arquivos) — apenas os recursos padrão do JavaScript mais três pontes:
input— o valor avaliado de Dados de entradaconsole.log/info/warn/error— capturados e retornados na saídalogs(at é 200 entradas de 2.000 caracteres cada)fetch(url, options)— HTTP com proteção SSRF (endereços privados e internos são bloqueados) que retorna{ok, status, statusText, body}, combodyinterpretado como JSON quando possível e retornado como texto caso contrário
O que passos posteriores podem usar
step(N).data— o valor que você retornou comreturnstep(N).logs— a saída de console capturadastep(N).executionTimeMs— quanto tempo o código executou
Dicas
- Sempre use
return— o valor de retorno é copiado para fora do sandbox, então mantenha-o compatível com JSON. - Use
console.logenquanto constrói o passo; a saídalogsé a forma mais fácil de depurar. - Se o código lançar uma exceção, o passo falha com
code_execution_failed; ultrapassar o tempo limite falha comcode_execution_timeout. - Cada chamada de
fetchtambém é limitada pelo tempo do passo, então mantenha chamadas a terceiros bem dentro do orçamento de tempo.