- Introdução
- Criar
- Adicione um agente de IA a um fluxo de trabalho
- Chamar uma API externa
- Processar e-mails de entrada
- Crie um fluxo de trabalho de notificação do Slack
- Adicione aprovação humana a um fluxo de trabalho
- Crie um fluxo de trabalho de agente de chat
- Tratar erros
- Noções básicas de depuração
- Intervenção humana: escalonamento ou etapa humana
- Avaliando seus fluxos de trabalho
- Implantar e executar
- Exemplos
- Referência
Sintaxe de expressão
Sintaxe de expressão JavaScript para variáveis, operadores e condições em fluxos de trabalho.
Uma expressão é um pequeno fragmento de JavaScript, uma linguagem de programação amplamente utilizada, que lê ou calcula um valor. As expressões em um fluxo de trabalho fazem referência aos valores com o prefixo $vars , e são usadas em campos de configuração, condições de Decisão e Switch e código de Script.
Variáveis e fluxo de dados descreve como os dados se movem entre nós e como as variáveis funcionam.
Referências de variáveis
Cada valor ao qual você faz referência permanece em $vars:
$vars.httpRequest1.output.body // node output
$vars.orderTotal // variable
$vars.manualTrigger1.output.userId // trigger input
$vars.httpRequest1.output.body // node output
$vars.orderTotal // variable
$vars.manualTrigger1.output.userId // trigger input
- Saída do nó:
$vars.<nodeName>.output. Cada nó expõe seu resultado sob.output. A forma desse objeto depende do nó, então cada página da referência do nó lista os campos de saída de seu nó. - Variáveis:
$vars.<name>. - Entradas de gatilhos:
$vars.<triggerName>.output.<inputName>.
As propriedades aninhadas usam a notação de ponto, e os elementos de array usam a notação de colchetes:
$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id
$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id
Onde você escreve expressões
A regra resumida: escreva $vars… diretamente no código do Script, em condições e em campos definidos como Expressão, e envolva-a em {{ $vars… }} dentro dos campos de texto definidos como Valor fixo.
A maioria dos campos de configuração pode conter um valor fixo ou uma expressão. Um ícone na extremidade direita do campo abre um menu com três opções:
- Valor fixo: insira um valor diretamente.
- Expressão: escreva uma expressão em JavaScript. O editor oferece o IntelliSense, que sugere nomes e propriedades conforme você digita. Nesse modo, o campo mostra um
=antes da expressão. - Limpar valor: esvazia o campo.
O menu Inserir ao lado do rótulo do campo abre uma lista pesquisável dos valores disponíveis nesse nó. A lista é uma árvore sob $vars, com uma entrada para cada nó, seu output e os campos dentro dela, e cada campo mostra seu tipo, como string ou object. A lista também tem um grupo $metadata com as entradas FolderKey, InstanceId, ProcessKey e ElementCount.
Campos de valor fixo
Um campo definido como Valor fixo retém o texto. Para incorporar uma expressão no texto, selecione um valor no menu Inserir , que encapsula a referência entre chaves duplas. O editor verifica a referência e relata um problema abaixo do campo, por exemplo, quando uma propriedade não existe na saída do nó:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Campos de expressão e código do Script
Um campo definido para as condições Expression, Decision e Switch, a seção Atualizar Variável e o código do Script levam a expressão diretamente, sem chaves:
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
Em um campo de expressão, o texto e um valor são combinados combinando-os com + ou usando um modelo literal. Ambos os seguintes produzem o mesmo resultado:
"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`
"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`
Operadores
Os operadores JavaScript padrão são compatíveis:
| Operador | Exemplo | Resultado |
|---|---|---|
| Igualdade | $vars.status === "active" | true ou false |
| Desigualdade | $vars.count !== 0 | true ou false |
| Comparação | $vars.price > 100 | true ou false |
| E lógico | $vars.isVerified && $vars.isActive | true ou false |
| Ou lógico | $vars.role === "admin" || $vars.role === "owner" | true ou false |
| Ternário | $vars.count > 0 ? "has items" : "empty" | String |
Operações de string
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
Os literais do modelo combinam variáveis e texto estático:
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
Encadeamento opcional
O operador ?. lê com segurança propriedades que podem estar indefinidas:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
O resultado é undefined em vez de um erro de runtime, se qualquer propriedade intermediária for nula ou indefinida.
Coalescência nula
O operador ?? fornece um valor padrão quando um valor é nulo ou indefinido:
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
Erros comuns
| Problema | Causa | O que fazer |
|---|---|---|
Uma expressão se resolve para undefined | Você fez referência à saída de um nó antes que ele seja executado, ou a um campo que não existe na saída | Faça referência à saída apenas de nós upstream; verifique a página de referência do nó para obter seus campos de saída reais. Use o encadeamento opcional (?.) para propriedades que podem estar ausentes. |
| Uma condição de Decision ou Switch se comporta de forma inesperada ou falha | A condição não é uma expressão booleana simples, por exemplo, ela está escrita como uma declaração return | Escreva uma expressão simples que se resolve para true ou false, por exemplo, $vars.order1.output.total > 1000. Não use return. |
Cannot find name '$vars' (ou '$self' ) | A variável não está no escopo neste nó ou $self é usada em um nó que não produz saída por si só | Faça referência apenas às variáveis mostradas no seletor de variáveis para esse nó. $vars resolve apenas para variáveis dentro do escopo; $self está disponível apenas em nós que produzem saída. |
| Um valor de outro nó não está disponível para referência | O escopo é somente upstream: um nó não pode ver nós downstream, nós em uma ramificação irmã ou nós dentro de um loop do qual já saiu | Reestruture para que o nó produtor esteja acima do local onde você faz referência a ele ou transporte o valor por meio de uma variável que está no escopo. |
$vars.<node>.error não está disponível | A saída de erro de um nó está no escopo apenas quando o tratamento de erros está habilitado nele (ou seu caminho de erro está conectado) | Habilite o tratamento de erro no nó ou conecte seu identificador de erro e, em seguida, faça referência a $vars.<node>.error. |
Failed to evaluate expression =js:(https://...): Unexpected token ':' | Um valor simples, como um URL, está em um campo definido como Expressão sem aspas, portanto, é lido como JavaScript | Altere o campo para Valor fixo ou coloque o texto entre aspas, por "https://api.example.com/users". |
{{ }} aparece como texto literal ou um campo de texto não é resolvido | Incompatibilidade de modo: {{ }} funciona apenas em campos definidos como Valor fixo | Use {{ $vars.x }} apenas em campos de valor fixo. Nos campos de expressão e nas condições Decision e Switch, escreva $vars.x diretamente sem chaves. |
As condições de Decision e Switch são executadas como expressões no runtime. Uma declaração return é válida apenas no código de nó do Script.
Observações
- As expressões são avaliadas no runtime, não no momento do design. Os erros de sintaxe aparecem quando o nó é executado.
- Uma expressão em um campo de configuração deve ser resolvida no tipo que o campo espera. Um campo de condição deve ser resolvido como
trueoufalse. - Um campo de expressão mostra um
=antes da expressão para marcar o modo de expressão. O prefixo=js:que aparece em um arquivo.flowé um formato de serialização interno e você nunca o digita no editor. - A verificação de tipo é parcial. As referências a saídas sem uma estrutura fixa não são totalmente validadas, portanto, um erro de digitação em um nome de campo aninhado pode ser passado sem um aviso. Compare caminhos aninhados com os campos de saída listados na referência do nó.
Próximas Etapas
- Variáveis e fluxo de dados: como os dados se movem entre os nós.
- Script: escreva JavaScript em um nó.
- Comunidade: faça perguntas e compartilhe fluxos de trabalho com outros construtores no Fórum da UiPath.