Instrução condicional (if, then, else) conditional-instruction
A instrução condicional (if, then, else) é compatível com o editor avançado. Ele permite definir expressões mais complexas. Ele é composto pelos seguintes elementos:
- if: a condição a ser avaliada primeiro.
- then: a expressão a ser avaliada caso o resultado da avaliação da condição seja verdadeiro.
- else: a expressão a ser avaliada caso o resultado da avaliação da condição seja falso.
if (<expression1>)
then
(<expression2>)
else
(<expression3>)
<expression1> deve retornar um booleano.
<expression2> e <expression3> devem ter o mesmo tipo ou tipos compatíveis. As assinaturas compatíveis e os tipos retornados são:
boolean,boolean : boolean
dateTime,dateTime : dateTime
dateTimeOnly,dateTimeOnly : dateTimeOnly
decimal,integer : decimal
integer,decimal : integer
integer,decimal : decimal
duration,duration : duration
string,string : string
listBoolean,listBoolean : listBoolean
listDateTime,listDateTime : listDateTime
listDateTimeOnly,listDateTimeOnly : listDateTimeOnly
listDateOnly,listDateOnly : listDateOnly
listDecimal,listDecimal : listDecimal
listInteger,listInteger : listInteger
listString,listString : listString
Uso
A instrução condicional permite otimizar o workflow de jornada reduzindo o número de atividades de condição. Por exemplo, na mesma atividade de ação, é possível especificar duas alternativas para uma definição de campo usando apenas uma expressão de condição.
Exemplo de uma atividade de ação (para um campo que espera uma string como o resultado da instrução condicional):
if (startWithIgnoreCase(@event{eventiOSPushPermissionAllowed.device.model}, 'iPad') or startWithIgnoreCase(@event{eventiOSPushPermissionAllowed.device.model}, 'iOS'))
then
('apns')
else
('fcm')
Esta seção contém conhecimento estruturado destinado a oferecer suporte à interpretação, recuperação e resposta a perguntas relacionadas a este tópico.
Para uma compreensão completa, essas informações devem ser combinadas com a documentação desta página. Nenhuma das origens deve ser independente; a página descreve o recurso, enquanto esta seção fornece um contexto adicional que ajuda a desfazer a ambiguidade da terminologia, intenção, aplicabilidade e restrições.
- TL;DR: Esta página explica a instrução condicional
if / then / elsedisponível no editor de expressão avançado de Jornada, incluindo regras de sintaxe, combinações de tipo com suporte e um exemplo de uso prático.
Intenções:
- Grave uma expressão condicional usando
if,theneelsepara retornar valores diferentes com base em uma condição booleana - Reduzir o número de atividades de condição em uma jornada incorporando a lógica condicional em linha em uma única atividade de ação
- Determinar quais combinações de tipos de dados são válidas para as ramificações
theneelse - Aplicar a instrução condicional para rotear tokens de notificação por push para o APNS ou o FCM com base no modelo do dispositivo
Glossário:
- Instrução condicional: uma construção de expressão
if / then / elseno editor avançado que avalia um booliano e retorna uma das duas expressões (específica do produto) - Editor de expressão avançado: a interface Journey Optimizer para gravar expressões complexas usadas em condições, atividades de espera e mapeamento de parâmetros de ação (específico do produto)
Medidas de Proteção:
- Parênteses são necessários em todas as expressões nas cláusulas
if,theneelse - A cláusula
if(<expression1>) deve retornar um tipo booleano - As expressões
theneelse(<expression2>e<expression3>) devem ter o mesmo tipo ou tipos compatíveis (por exemplo,decimaleintegersão compatíveis,stringeintegernão são) - Nem todas as combinações de tipo são suportadas — somente os pares listados na tabela de assinaturas suportadas são válidos
Terminologia:
- Nome canônico: instrução condicional — Acrônimo: none — variantes: if/then/else, condição de estilo ternário
- Sinônimos: “instrução condicional” = “condição embutida” = “expressão if-then-else”
- Não confundir: instrução condicional (expressão em linha) ≠ Atividade de condição (um nó da tela de jornada)
Perguntas frequentes:
- P: A cláusula
ifprecisa ser colocada entre parênteses? — Sim, parênteses são necessários em todas as expressões, incluindo a condição na cláusulaif. - P: Posso usar
if / then / elsepara retornar um número de uma ramificação e uma sequência de caracteres de outra? — Não;<expression2>e<expression3>devem ter tipos iguais ou compatíveis. - P: Como a instrução condicional reduz a complexidade da jornada? — Permite especificar duas alternativas de valor de campo em uma única atividade de ação usando uma expressão, evitando um nó de atividade de Condição separado na tela.
- P: Que tipo a instrução condicional retorna se ambas as ramificações forem cadeias de caracteres? — Retorna um
string. - P:
if / then / elsepode ser usado para selecionar um canal de notificação por push? — Sim; por exemplo, avaliando o modelo de dispositivo para retornar'apns'para dispositivos Apple ou'fcm'para outros.