Operadores operators
Há dois tipos de operadores: operadores unários e operadores binários. Há operadores unários à esquerda e operadores unários à direita.
// left-hand unary operators
// <operator> <operand>
// operand is an expression
not (@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example@adobe.com")
// right-hand unary operators
// <operator> <operand>
// operand is an expression
@event{LobbyBeacon.endUserIDs._experience.emailid.id} is not null
// binary operators
// <operand1> <operator> <operand2>
// operand is an expression
(@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example1@adobe.com") or (@event{LobbyBeacon.endUserIDs._experience.emailid.id}=="example2@adobe.com")
Observações importantes important-notes
-
Ao usar uma multiplicação (
*), ambos os campos de operação devem ter o mesmo tipo, inteiro ou decimal. Exemplo:- o exemplo a seguir está correto:
3.0 * 4.0 3 * 4.0levará a um erro
- o exemplo a seguir está correto:
-
Ao usar o operador
+, a expressão precisa ser encapsulada entre parênteses. Exemplo:toDateTimeOnly(toDateTime((currentTimeInMillis()) + 1))está corretotoDateTimeOnly(toDateTime(currentTimeInMillis() + 1))levará a um erro
Lógico logical
e
<expression1> and <expression2>
<expression1> e <expression2> devem ser booleanos. O resultado é booleano.
Exemplo:
3.14 > 2 and 3.15 < 1
ou
<expression1> or <expression2>
<expression1> e <expression2> devem ser booleanos. O resultado é booleano.
Exemplo:
3.14 > 2 or 3.15 < 1
não
not <expression>
<expression> deve ser booleano. O resultado é booleano.
Exemplo:
not 3.15 < 1
Comparação comparison
é nulo
<expression> is null
O resultado é booleano.
Observe que nulo significa que a expressão não tem um valor avaliado.
Exemplo:
@event{BarBeacon.location} is null
não é nulo
<expression> is not null
O resultado é booleano.
Observe que nulo significa que a expressão não tem um valor avaliado.
Exemplo:
@event{BarBeacon.location} is not null
tem nulo
<expression> has null
<expression> deve ser uma lista. O resultado é booleano.
Útil para identificar se uma lista contém pelo menos um valor nulo.
Exemplo:
["foo", "bar", null] has null
Retorna verdadeiro
["foo", "bar", ""] has null
Retorna falso porque “” não é considerado nulo.
==
<expression1> == <expression2>
Exemplo:
3.14 == 42
"foo" == "bar"
!=
<expression1> != <expression2>
O resultado é booleano.
Exemplo:
3.14 != 42
"foo" != "bar"
>
<expression1> > <expression2>
Datetime pode ser comparado com Datetime.
Datetimeonly pode ser comparado com Datetimeonly.
O inteiro ou o decimal podem ser comparados com o inteiro ou o decimal.
Qualquer outra combinação é proibida.
O resultado é booleano.
Exemplo:
3.14 > 42
>=
<expression1> >= <expression2>
Datetime pode ser comparado com Datetime.
Datetimeonly pode ser comparado com Datetimeonly.
O inteiro ou o decimal podem ser comparados com o inteiro ou o decimal.
Qualquer outra combinação é proibida.
O resultado é booleano.
Exemplo:
42 >= 3.14
<
<expression1> < <expression2>
Datetime pode ser comparado com Datetime.
Datetimeonly pode ser comparado com Datetimeonly.
O inteiro ou o decimal podem ser comparados com o inteiro ou o decimal.
Qualquer outra combinação é proibida.
O resultado é booleano.
Exemplo:
42 < 3.14
<=
<expression1> <= <expression2>
Datetime pode ser comparado com Datetime.
Datetimeonly pode ser comparado com Datetimeonly.
O inteiro ou o decimal podem ser comparados com o inteiro ou o decimal.
Qualquer outra combinação é proibida.
O resultado é booleano.
Exemplo:
42 <= 3.14
Aritmética arithmetic
+
<expression1> + <expression2>
Ambas as expressões devem ser numéricas (números inteiros ou decimais).
O resultado também é numérico.
Exemplo:
1 + 2
Devoluções 3
-
<expression1> - <expression2>
Ambas as expressões devem ser numéricas (números inteiros ou decimais).
O resultado também é numérico.
Exemplo:
2 - 1
Devoluções 1
/
<expression1> / <expression2>
Ambas as expressões devem ser numéricas (números inteiros ou decimais).
O resultado também é numérico.
<expression2> não deve ser igual a 0 (retorna 0).
Exemplo:
4 / 2
Devoluções 2
*
<expression1> * <expression2>
Ambas as expressões devem ser numéricas (números inteiros ou decimais).
O resultado também é numérico.
Exemplo:
3 * 4
Retorna 12
%
<expression1> % <expression2>
Ambas as expressões devem ser numéricas (números inteiros ou decimais).
O resultado também é numérico.
Exemplo:
3 % 2
Retorna 1.
Matemática math
é numérico
<expression> is numeric
O tipo da expressão é inteiro ou decimal.
Exemplo:
@ is numeric
é inteiro
<expression> is integer
O tipo da expressão é inteiro.
Exemplo:
@ is integer
é decimal
<expression> is decimal
O tipo da expressão é decimal.
Exemplo:
@ is decimal
String string
+
<string> + <expression>
<expression> + <string>
Ela concatena duas expressões.
Uma expressão deve ser uma sequência de caracteres encadeada.
Exemplo:
"the current time is " + (now())
Retorna “a hora atual é 23T09-2023:30:06.693Z”
(now()) + " is the current time"
Retorna “2023-09-23T09:30:06.693Z é a hora atual”
"a" + "b" + "c" + 1234
Retorna “abc1234”.
Data date
+
<expression> + <duration>
Anexe uma duração a um dateTime, um dateTimeOnly ou uma duração.
Exemplo:
(toDateTime("2023-12-03T15:15:30Z")) + (toDuration("PT15M"))
Retorna um dateTime 2023-12-03T15:30:30Z
(toDateTimeOnly("2023-12-03T15:15:30")) + (toDuration("PT15M"))
Retorna um dateTimeOnly 2023-12-03T15:30:30
(now()) + (toDuration("PT1H"))
Retorna um dateTime (com fuso horário UTC) uma hora depois da hora atual
(toDuration("PT1H")) + (toDuration("PT1H"))
Retorna uma duração PT2H
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 é uma referência completa de operadores disponíveis no editor de expressão avançado de Jornada, abrangendo lógica (
and,or,not), comparação (==,!=,>,>=,<,<=,is null,is not null,has null), aritmética (+,-,/,*,%), verificação de tipo matemático (is numeric,is integer,is decimal), concatenação de cadeias de caracteres e operadores aritméticos de data.
Intenções:
- Combinar condições booleanas usando operadores lógicos
and,orenot - Verifique se um valor de campo ou expressão é nulo ou não usando
is null/is not null - Detectar valores nulos em uma lista usando o operador
has null - Comparar valores numeric, datetime e datetimeonly usando
>,>=,<,<=,==e!= - Executar aritmética em valores numéricos usando
+,-,/,*e% - Adicione uma duração a um valor dateTime, dateTimeOnly ou duration usando o operador
+
Glossário:
- Operador unário: um operador aplicado a um único operando; pode ser à esquerda (por exemplo,
not) ou à direita (por exemplo,is null) (específico do produto) - Operador binário: um operador aplicado entre dois operandos (por exemplo,
and,==,+) (específico do produto) - tem nulo: um operador unário à direita que retorna verdadeiro se uma lista contiver pelo menos um elemento nulo (específico do produto)
- é numérico / é inteiro / é decimal: operadores de verificação de tipo que retornam um booleano com base no subtipo numérico da expressão (específico do produto)
Medidas de Proteção:
- Ao usar a multiplicação (
*), ambos os operandos devem ser do mesmo tipo numérico (inteiro ou ambos decimais) — a mistura de tipos causa um erro - Ao usar o operador
+para a aritmética de data, a expressão deve ser colocada entre parênteses para evitar erros de análise - Os operadores de comparação (
>,>=,<,<=) só são válidos entre tipos compatíveis: Datetime com Datetime, DatetimeOnly com DatetimeOnly ou numeric com numeric — qualquer outra combinação é proibida - Uma cadeia de caracteres vazia
""não é considerada nula —has nullretorna falso para uma lista que contém"" - Os operadores
==e!=não executam controle de tipo de dados entre operandos
Terminologia:
- Nome canônico: Operadores — Acrônimo: none — variantes: operadores de expressão, operadores de jornada
- Sinônimos:
and= “AND lógico”;or= “OR lógico”;not= “NOT lógico”;%= “módulo” - Não confunda:
is null(a expressão não tem valor avaliado) ≠== null(não é uma sintaxe válida);has null(a lista contém nulo) ≠is null(a própria expressão é nula)
Perguntas frequentes:
- P: Posso multiplicar um inteiro por um decimal diretamente? — Não; ambos os operandos de
*devem ser do mesmo tipo. Use3.0 * 4.0(ambos decimais) ou3 * 4(ambos inteiros). - P: Como adiciono 15 minutos a um dateTime? — Use
(toDateTime("...")) + (toDuration("PT15M")). - P: Qual é a diferença entre
is nullehas null? —is nullverifica se uma única expressão não tem valor avaliado;has nullverifica se uma lista contém pelo menos um elemento nulo. - P:
"" has nullretorna verdadeiro? — Não; uma cadeia de caracteres vazia não é considerada nula, portanto, o resultado é falso. - P: Por que o
3 * 4.0causa um erro? — O operador*requer que ambos os operandos sejam do mesmo tipo numérico; não é permitido misturar números inteiros e decimais.