Condições no Shopify Flow
As condições dão continuidade a um workflow quando determinadas regras são atendidas, como o início de uma declaração se-então. Ao definir uma condição, você escolhe critérios de campos da GraphQL Admin API (como product.title), um operador lógico (como igual a) e um valor para verificação (como Blue jeans). Quando um workflow avalia uma condição, o Flow compara o valor definido no workflow com o valor retornado para a loja e exibe os resultados na execução do workflow. Para entender melhor os campos e valores disponíveis para definir condições, aprenda a pré-visualizar os dados da loja.
Saiba mais sobre os conceitos básicos das condições.
Nesta página
Tipos de dados usados com o Flow
Ao definir uma condição, você escolhe um critério entre os campos disponíveis na Admin API, e o Flow o compara com o valor retornado pela loja.
O Flow é compatível com os seguintes tipos de dados:
- Ponto flutuante: valores de ponto flutuante são números com casas decimais. Por exemplo, 4,25.
- Inteiro: valores inteiros são números sem casas decimais. Por exemplo, 42.
- Data: valores de data são a representação numérica da data. Por exemplo, 01012021.
- String: valores de string são texto. As comparações com valores de string não diferenciam maiúsculas de minúsculas.
- Booleano: valores booleanos são verdadeiro ou falso.
- Enum: valores de enum são conjuntos de dados que permitem que uma variável seja um conjunto de constantes predefinidas.
Operadores lógicos
Os operadores lógicos definem como a condição é aplicada. As condições podem verificar propriedades simples, como se o total de um pedido está acima de um determinado valor ou se um cliente aceita marketing. Os operadores lógicos também podem verificar propriedades mais complexas.
Os operadores podem ser operadores no nível do campo, como igual a ou diferente de, ou operadores de lista, como pelo menos um de ou nenhum de.
Operadores no nível do campo
Os operadores no nível do campo são usados para comparar 2 valores. O Flow pode usar os seguintes operadores:
| Operador | Descrição | Exemplo |
|---|---|---|
| Igual a | Compara valores para verificar se são iguais. |
O valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado ao segundo valor, 50.Se o total de descontos do pedido for exatamente 50, a condição será verdadeira. |
| Diferente de | Compara valores para verificar se são diferentes. |
O valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado ao segundo valor, 50.Se o total de descontos do pedido não for exatamente 50, a condição será verdadeira. |
| Maior que e Maior ou igual a | Compara valores para verificar se o primeiro é maior que, ou maior ou igual ao, segundo valor. |
O valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado ao segundo valor, 50.Se o total de descontos do pedido for 137, a condição será verdadeira, pois 137 é maior que 50. |
| Menor que e Menor ou igual a | Compara valores para verificar se o primeiro é menor que, ou menor ou igual ao, segundo valor. |
O valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado ao segundo valor, 50.Se o total de descontos do pedido for 47, a condição será verdadeira, pois 47 é menor ou igual a 50. |
| Pelo menos um de | Verifica se o campo é igual a algum valor na lista fornecida. Os valores devem ser inseridos individualmente e seguidos pela tecla Enter (semelhante às tags). O uso em um array vazio resulta em uma avaliação falsa. |
O valor de order.lineitem.product.title é comparado com: pineapple, guava, kiwi.Se o título do produto do item de linha for guava, a condição será verdadeira, pois “guava” está na lista fornecida. |
| Nenhum de | Verifica se o campo não é igual a nenhum dos valores da lista fornecida. |
O valor de order.lineitem.product.title é comparado com: pineapple, guava, kiwi.Se o título do produto do item de linha for raspberry, a condição será verdadeira, pois “raspberry” não está na lista fornecida. |
| Inclui | Compara valores para verificar se o primeiro valor inserido contém os dados do segundo valor inserido. |
O valor de order.lineitem.product.title é comparado com: berry.Se o título do produto do item de linha for strawberry, a condição será verdadeira, pois “berry” está incluído em “strawberry”. |
| Não inclui | Compara valores para verificar se o primeiro valor inserido não contém os dados do segundo valor inserido. |
O valor de order.lineitem.product.title é comparado a: berry.Se o título do produto do item de linha for apple, a condição será verdadeira, porque "berry" não está incluído em "apple". |
| Começa com | Compara os valores para verificar se o primeiro começa com os dados do segundo. |
O valor de order.shippingAddress.country é comparado a: United.Se o país do endereço de entrega do pedido for United Kingdom, a condição será verdadeira, porque "United Kingdom" começa com "United". |
| Não começa com | Compara os valores para verificar se o primeiro não começa com os dados do segundo. |
O valor de order.shippingAddress.country é comparado a: United.Se o país do endereço de entrega do pedido for Canada, a condição será verdadeira, porque "United Kingdom" não começa com "Canada". |
| Termina com | Compara os valores para verificar se o primeiro termina com os dados do segundo. |
O valor de order.lineitems.product.title é comparado a: pie.Se o título do produto do item de linha for key lime pie, a condição será verdadeira, porque "key lime pie" termina com "pie". |
| Não termina com | Compara os valores para verificar se o primeiro não termina com os dados do segundo. |
O valor de order.lineitems.product.title é comparado a: pie.Se o título do produto do item de linha for chocolate cake, a condição será verdadeira, porque "chocolate cake" não termina com "pie". |
Operadores nulos ou vazios
| Operador | Descrição | Condição Verdadeiro/Falso |
|---|---|---|
| Vazio ou não existe | Verifica se um campo está vazio (não tem valor) ou não existe (é nulo). |
Retorna verdadeiro quando o campo está vazio ou é nulo e falso se estiver presente.
|
| Não vazio e existe | Verifica se um campo está presente e não está vazio ou não é nulo. | Retorna verdadeiro quando o campo não está vazio e existe, e falso quando está vazio. |
Operadores de lista
Os operadores de lista são combinados com operadores de nível de campo para permitir a verificação de condições em dados incluídos em listas.
Como no exemplo de “pelo menos um”, talvez você queira verificar se um pedido contém um produto específico (localizado em order.lineItems) com uma tag específica (uma lista em order.lineItems.product.tags). Em ambos os casos, o exemplo usa o operador de lista Pelo menos um de.
O Flow fornece três operadores para trabalhar com listas: Pelo menos um de, Nenhum de e Todos os.
| Operador | Descrição | Exemplo de uso |
|---|---|---|
| Pelo menos um de | Verifica se algum item da lista corresponde à condição especificada. Retorna true se houver correspondência de algum item na lista. Se a lista estiver vazia ou nenhum item corresponder, retornará false. | Verifique se um pedido contém um produto com uma tag específica usando Pelo menos um de itens de linha do pedido.product.tags é igual a nomedatag. |
| Nenhum de | Verifica se nenhum dos itens da lista corresponde à condição especificada. Retorna true se nenhum dos itens corresponder à condição. Se a lista estiver vazia, retornará true. | Verifique se um produto não tem a tag presale com Nenhuma das tags de produto é igual a presale.Um erro comum é tentar negar o operador usando não é igual a. O uso dessa dupla negativa, Nenhuma das tags de produto não é igual a presale, torna a condição difícil de entender e inválida.
|
| Todos os | Verifica se todos os itens da lista correspondem à condição especificada. Retorna true se todos os itens na lista corresponderem à condição. | Verifique se todos os itens de linha de um pedido têm um fabricante de produto específico chamado Acme usando Todos os itens de linha do pedido têm um product.vendor igual a Acme. |
Ordem das condições
É possível criar workflows com várias condições, e cada uma pode resultar em ações diferentes. A ordem das condições é importante. A verificação das condições começa no início do workflow e prossegue sistematicamente por cada condição. A verificação para quando uma condição é atendida.
Este exemplo usa várias condições para verificar se um cliente se qualifica para um programa de fidelidade com base no valor total gasto na loja. As condições são verificadas na ordem em que são exibidas:
- Se o preço total for maior que US$ 1.000 e o cliente concordar em aceitar marketing, marque-o com a tag
Gold. - Se o preço total for menor que US$ 1.000, mas maior que US$ 500, e o cliente concordar em aceitar marketing, marque-o com a tag
Silver. - Se o preço total for menor que US$ 500, mas maior que US$ 200, e o cliente concordar em aceitar marketing, marque-o com a tag
Bronze.

Combinação de vários critérios em uma condição
Ao criar uma condição, é possível definir vários critérios e escolher como combiná-los para determinar se a condição geral é verdadeira ou falsa.
Se todos os critérios forem atendidos
Selecionar E resulta em uma resposta verdadeira somente se todos os critérios definidos forem verdadeiros.
Por exemplo, você cria um workflow para marcar clientes com tags que estão no Canadá e gastam mais de US$ 500 em um único pedido.

O workflow marca o cliente com uma tag apenas se ele estiver localizado no Canadá e gastar mais de US$ 500 no pedido. Se uma dessas condições for falsa, o cliente não será marcado com a tag.
Se algum critério for atendido
A seleção de OU resulta em uma resposta verdadeira se algum dos critérios definidos for verdadeiro.
Por exemplo, você pode criar um workflow para marcar pedidos com uma recomendação de risco de Cancelar ou Investigar com tags. Contanto que uma dessas condições seja verdadeira, o pedido receberá a tag.

Dados estáticos e dinâmicos em condições
Normalmente, o segundo valor em uma condição é um valor estático, inserido manualmente (como product.title == “your title”). Esse valor permanece o mesmo sempre que o workflow é executado.
Também é possível usar valores dinâmicos se o campo do segundo valor exibir o ícone . Os valores dinâmicos são extraídos dos dados da loja sempre que o workflow é executado. Para usar um valor dinâmico, clique no ícone
e selecione o valor com o qual quer fazer a verificação. Os valores dinâmicos não estão disponíveis para todos os campos.
Por exemplo, você pode criar um workflow que marca um pedido com uma tag se o país do endereço de faturamento do pedido corresponder ao país do endereço de entrega.

Neste exemplo, o primeiro e o segundo valores são extraídos dos dados da loja, em vez de especificar manualmente uma string estática para verificação no segundo valor. Se o país no endereço de faturamento informado pelo cliente for o mesmo que o país informado no endereço de entrega, a condição será verdadeira e o pedido será marcado com uma tag.
Ocasionalmente, talvez seja necessário usar dados dinâmicos do tipo errado. Por exemplo, pode ser preciso comparar um número armazenado como uma string com outro número. Nesse caso, use a opção Executar código para converter os dados para o tipo correto.
Modelos
A maioria dos modelos na biblioteca de modelos contém uma condição.
Exemplos de condições
Verificar se pelo menos um item em uma lista corresponde a uma condição
Este exemplo exibe uma condição típica que verifica se pelo menos um item em uma lista corresponde a um determinado valor.
Nesse caso, a condição verifica se um dos produtos de um pedido tem a tag presale. Para criar essa condição, escolha order / lineItems / product / tags. Por padrão, o Flow escolhe pelo menos um de como operador lógico:

As partes pelo menos um de são operadores de lista e são usadas para lidar com a correspondência em vários itens da lista. A parte é igual a é um operador no nível do campo que determina se um único item da lista corresponde.
Verificar se nenhum dos itens em uma lista corresponde a uma condição
Este exemplo exibe uma condição típica que verifica se nenhum dos itens de uma lista corresponde a um determinado valor. Um problema comum a ser considerado é que as listas podem estar vazias. Quando uma lista está vazia, a condição é tratada pelo operador de lista (neste caso, nenhum de).
Neste caso, a condição verifica se nenhuma das tags de produto é igual a foo:

A condição retornará true se (1) não houver tags de produto ou (2) nenhuma das tags for foo. Caso contrário, retornará false.
Verificar se um item em uma lista corresponde a vários critérios
Este exemplo exibe uma condição típica que verifica se pelo menos um item em uma lista corresponde a dois critérios separados.
Neste caso, a condição verifica se um dos produtos em um pedido tem a tag presale e um productType clothing.

Para criar essa condição:
- Escolha order / lineItems / product / tags para o primeiro critério.
- Escolha Adicionar critérios para o mesmo item na lista lineItems. Observação: escolher o item da lista errado aqui é um erro comum.
- Escolha lineItems_item como o objeto de nível superior e, em seguida, product / productType para o segundo critério. Observação: escolher o objeto errado aqui também é um erro comum.
- Escolha E para combinar os dois critérios.
- Insira os valores
presaleeclothingpara os dois critérios.