Funções (Functions)
O botão Funções abre um editor de código Ruby onde é possível definir funções reutilizáveis disponíveis em todos os blocos de código do fluxo de captura. É o local ideal para centralizar lógicas que se repetem em vários nodes — validações, formatações, integrações com APIs externas etc.
As funções são salvas por processo e ficam armazenadas no arquivo functions.fnc do fluxo. Ao publicar o processo, o conteúdo é gravado no banco de dados e passa a ser carregado automaticamente pelo captureprocessor durante a execução.
Interface
O editor é um único bloco de código Ruby com realce de sintaxe (tema escuro). Dois botões estão disponíveis na toolbar do modal:
| Botão | Ação |
|---|---|
| Beautify | Formata e organiza o código automaticamente |
| Save | Salva as funções para o processo atual |
Definindo Funções
Escreva funções Ruby normais com def. Todas as funções definidas aqui estarão disponíveis em qualquer expressão Ruby configurada nos nodes do fluxo.
def formatar_cpf(valor)
v = valor.to_s.gsub(/\D/, '')
"#{v[0..2]}.#{v[3..5]}.#{v[6..8]}-#{v[9..10]}"
end
def valor_em_reais(valor)
"R$ " + sprintf("%.2f", valor.to_s.gsub(",", ".").to_f)
end
Chamando Funções nas Expressões dos Nodes
Para chamar uma função definida aqui a partir de um campo Ruby de qualquer node, use normalmente o nome da função:
formatar_cpf(#Node_3#)
valor_em_reais(getval("ValorTotal"))
Variáveis Disponíveis nas Funções
Dentro das funções (e nas expressões em geral), é possível acessar os valores capturados no fluxo pelos seguintes formatos:
| Sintaxe | O que retorna |
|---|---|
#Node_X# | Valor do node com ID X |
getval("AliasDoNode") | Valor do node pelo Alias |
getcode() | Código único da instância de captura |
#field_nomedofield# | Valor extraído pelo IA Gemini para o campo |
getfieldval("nomedofield") | Mesmo que acima, em formato de chamada |
Testando as Funções
Use o botão Terminal na toolbar do ScanDesigner para testar qualquer código Ruby com acesso às funções do processo atual. O Terminal carrega automaticamente as funções salvas, permitindo verificar o comportamento antes de publicar.
Centralize validações e formatações recorrentes aqui para facilitar a manutenção. Uma correção na função se propaga imediatamente para todos os nodes que a chamam.