UiPath Documentation
maestro-automate
latest
false
Guia do usuário do Maestro Automate

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:

OperadorExemploResultado
Igualdade$vars.status === "active"true ou false
Desigualdade$vars.count !== 0true ou false
Comparação$vars.price > 100true ou false
E lógico$vars.isVerified && $vars.isActivetrue 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​

ProblemaCausaO que fazer
Uma expressão se resolve para undefinedVocê fez referência à saída de um nó antes que ele seja executado, ou a um campo que não existe na saídaFaç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 falhaA condição não é uma expressão booleana simples, por exemplo, ela está escrita como uma declaração returnEscreva 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ênciaO 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á saiuReestruture 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ívelA 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 JavaScriptAltere 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 é resolvidoIncompatibilidade de modo: {{ }} funciona apenas em campos definidos como Valor fixoUse {{ $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 true ou false.
  • 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​

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte(opens in new window)

Quer aprender? Academia UiPath(opens in new window)

Tem perguntas? Fórum do UiPath(opens in new window)

Fique por dentro das novidades