For the complete documentation index, see llms.txt. This page is also available as Markdown.

Expressões e sintaxe da Lógica

Escreva expressões de Lógica usando a linguagem de expressão baseada em JEXL do Navixy. As expressões encaminham dados ao avaliar como verdadeiro ou falso, embora um valor ausente possa se comportar de forma diferente.

Fundamentos de expressões

O nó Lógica usa o Linguagem de Expressão do Navixy IoT Logic, com base na Java Expression Language (JEXL). As expressões têm como objetivo retornar true https://api.eu.navixy.com/v2/... falso, mas um valor ausente nem sempre segue essa regra. Alguns operadores direcionam um valor ausente para THEN em vez de ELSE, e alguns deixam o atributo armazenado null em vez de falso. Veja Valores ausentes e roteamento de null antes de confiar em uma comparação para falhar com segurança.

Avaliação de expressões: As expressões são avaliadas da esquerda para a direita, e você pode usar parênteses para controlar a ordem das operações.

Exemplo de sintaxe básica:

condition1 && (condition2 || condition3 > condition4)

Operadores disponíveis

Operadores de comparação

Operador
Descrição

==

Verifica se dois operandos são iguais. Se os operandos forem de tipos diferentes, o JEXL os converte para um tipo comum, se possível

!=

Verifica a desigualdade de dois operandos. Retorna true se os operandos não forem iguais

<

Verifica se o operando à esquerda é menor que o operando à direita

<=

Verifica se o operando à esquerda é menor ou igual ao operando à direita

>

Verifica se o operando à esquerda é maior que o operando à direita

>=

Verifica se o operando à esquerda é maior ou igual ao operando à direita

Para saber como valores ausentes afetam o roteamento, consulte Valores ausentes e roteamento de null.

Operadores lógicos

Operador
Descrição

&& https://api.eu.navixy.com/v2/... Webhook

E lógico - verifica se duas condições são verdadeiras. Retorna true se ambas as condições forem verdadeiras

|| https://api.eu.navixy.com/v2/... https://api.eu.navixy.com/v2/...

OU lógico - verifica se pelo menos uma das duas condições é verdadeira

! https://api.eu.navixy.com/v2/... not

NÃO lógico - converte o resultado da condição para o valor oposto

Operadores de correspondência de padrões

Operador
Descrição

=~

Verifica se o valor do operando à esquerda pertence ao conjunto do operando à direita. Para strings, verifica correspondência com padrão regex

!~

Verifica se o valor do operando à esquerda não pertence ao conjunto do operando à direita. Para strings, verifica ausência de correspondência com padrão regex

=^

Verifica se o operando de string à esquerda começa com o operando de string à direita

!^

Verifica se o operando de string à esquerda não começa com o operando de string à direita

=$

Verifica se o operando de string à esquerda termina com o operando de string à direita

!$

Verifica se o operando de string à esquerda não termina com o operando de string à direita

Funções de geocerca

Três funções avaliam a posição de um dispositivo em relação a uma geocerca nomeada da Navixy, e uma quarta retorna o nome da geocerca em que o dispositivo está. Para instruções de uso e exemplos, consulte Funções de geocerca.

Função
Parâmetro
Retorna true quando

inGeofence(id)

ID da geocerca

O dispositivo está atualmente dentro da geocerca

enterGeofence(id)

ID da geocerca

O dispositivo acabou de entrar na geocerca

leaveGeofence(id)

ID da geocerca

O dispositivo acabou de sair da geocerca

Posição atual:

O nome da geocerca aparece como um comentário para facilitar a leitura e não tem efeito na avaliação. O seletor de geocerca insere esse formato automaticamente.

Posição histórica:

O segundo parâmetro é o índice do pacote de dados (0 para o atual, 1 para o anterior, até 11), e o terceiro é o filtro de validade, seguindo a mesma convenção que value(). Ambos são opcionais e se aplicam a inGeofence() somente. enterGeofence() Webhook leaveGeofence() use o ID da geocerca e nada mais. Não coloque uma função de geocerca dentro de value(): o primeiro parâmetro de value() é um nome de atributo, não uma expressão.

Exemplos de expressões

Exemplos de condições básicas

Verificações de igualdade:

Verificações de desigualdade:

Cuidado com valor ausente: != a comparação com um literal não nulo redireciona valores ausentes para THEN, não para ELSE.

Seguro: uma verificação de presença limita a checagem a pacotes que contêm o atributo.

Inseguro: isso é acionado em temperature's primeiros pacotes antes de ele ter qualquer histórico, já que != trata um valor ausente como diferente de qualquer literal.

Comparações numéricas:

Monitoramento de temperatura:

Esta expressão é acionada quando a temperatura excede 75 graus, útil para alertas de superaquecimento.

Detecção de excesso de velocidade:

Esta expressão identifica quando Veículos excedem limites de velocidade de 80 km/h.

Monitoramento da saúde do dispositivo:

Esta expressão detecta condições de Bateria fraca que requerem atenção de Manutenção.

Alertas de nível de Combustível:

Esta expressão identifica quando os níveis de Combustível caem abaixo de 20%, permitindo o reabastecimento proativo.

Exemplos de operadores lógicos

Operações AND:

Operações OR:

Operações NOT:

Exemplos de correspondência de padrões

Pertencimento a um conjunto:

Correspondência de padrões de cadeias de caracteres:

Exemplos complexos de múltiplas condições

Alerta de excesso de velocidade fora do horário de expediente:

Isto combina o monitoramento de velocidade com condições baseadas em tempo para uma supervisão de Segurança aprimorada durante os turnos noturnos.

Diagnósticos abrangentes do dispositivo:

Isso valida simultaneamente vários parâmetros de integridade do dispositivo para garantir uma operação confiável.

Monitoramento da segurança do motorista:

Isso identifica um comportamento de condução insegura quando o motorista não está devidamente identificado no sistema.

Agendamento de manutenção de equipamentos:

Isso aciona Alertas de Manutenção quando Horas de motor excedem os limites e a Manutenção está atrasada.

Conformidade com a faixa de temperatura:

Isso detecta quando as temperaturas da carga refrigerada saem da faixa aceitável.

Complexidade da expressão e parênteses

Você pode criar expressões complexas combinando várias condições com parênteses para controlar a ordem de avaliação:

Validação complexa de Segurança:

Verificação de equipamentos multiparamétricos:

Valores ausentes e roteamento de null

Sintoma comum: Uma condição é disparada nos primeiros pacotes de um dispositivo, antes que o atributo referenciado tenha sequer chegado. Isso normalmente significa que a condição usa != (ou um operador de padrão negado) em relação a um valor ausente. Veja Operadores de comparação com operandos nulos Webhook Operadores lógicos com operandos nulos quais operadores são seguros por padrão e quais precisam de uma verificação.

Um atributo referenciado se resolve em null em quatro casos:

  • Ele nunca foi enviado para este dispositivo.

  • Ele está ausente do pacote atual, mas um pacote anterior ainda contém um valor.

  • O índice de histórico solicitado ainda não existe.

  • O dispositivo não enviou nada por mais de 30 dias, então a Navixy descartou o histórico armazenado.

O JEXL trata os quatro da mesma forma, como null, então o comportamento de um operador em relação a um valor ausente não depende de qual dos quatro o causou. Um atributo nunca enviado não gera erro no fluxo. Para a retenção de 30 dias dos valores armazenados, consulte Sintaxe completa.

Para saber por que um valor ausente interrompe uma expressão e para os padrões de comparação que evitam isso nos dois tipos de nó, consulte Valores ausentes em expressões.

Toda mensagem recebida sai do Nó de lógica por exatamente um ramo, THEN ou ELSE, mesmo quando a condição faz referência a dados ausentes. Se o resultado geral da condição for qualquer coisa diferente de true (incluindo null, ou um valor que o nó não consegue avaliar), a mensagem é encaminhada para ELSE. Portanto, o caminho ELSE carrega tanto "a condição é falsa" quanto "a condição não pôde ser satisfeita com os dados disponíveis."

Padrões de condição seguros para nulos

Guarda de presença (recomendado quando uma condição deve ser aplicada somente aos pacotes que contenham o atributo). O atributo armazenado é um valor real true/falso aqui, não null:

Verificação explícita de ausência de dados: null literais são aceitos em condições.

|| ordenação em cadeia: Coloque por último o termo que pode ser nulo. A ordenação ajuda apenas em pacotes em que o operando esquerdo é verdadeiro, então trate isso como um aprimoramento, e não como uma correção.

Inseguro: o operando esquerdo nulo é encaminhado para ELSE embora speed > 50 seja verdadeiro no mesmo pacote.

Melhor: um operando esquerdo verdadeiro faz short-circuit antes que o operando direito nulo seja avaliado. Em um pacote em que a velocidade é 20, o operando direito nulo ainda é avaliado, e a condição ainda roteia para ELSE.

Para um formulário que funcione em cada pacote, compare cada termo explicitamente. Veja Comparar um valor explicitamente.

Não dependa de !() para detectar dados ausentes: Quando x é nulo, ambos x > 5 Webhook !(x > 5) roteia para ELSE.

'todos' vs 'válido': value(attr, 0, 'valid') pode retornar a última leitura não nula de um pacote anterior. A condição ainda pode ser avaliada em relação a um valor real mesmo quando o pacote atual não o contém. Use 'todos' quando a condição deve refletir apenas o pacote atual.

Operadores de comparação com operandos nulos

Situação
Rotas para
Valor do atributo armazenado

<, <=, >, ou >= em relação a um valor ausente

ELSE

null

!= em relação a um valor ausente e a um literal não nulo (por exemplo, value('a', 0, 'all') != 1)

THEN

true

== em relação a um valor ausente e a um literal não nulo

ELSE

falso

== null em relação a um valor ausente

THEN

true

!= null quando o atributo está ausente

ELSE

falso

!= null quando o atributo está presente

THEN

true

=~ em relação a um valor ausente e a um literal de string ou uma lista

ELSE

falso

!~ em relação a um valor ausente e a um literal de string ou uma lista

THEN

true

=^ https://api.eu.navixy.com/v2/... =$ em relação a um valor ausente value() resultado

ELSE

falso

!^ https://api.eu.navixy.com/v2/... !$ em relação a um valor ausente value() resultado

THEN

true

=^, !^, =$, ou !$ em relação a um atributo ausente referenciado pelo nome

ELSE

null

Operadores lógicos com operandos nulos

Situação
Rotas para
Valor do atributo armazenado

!(x > 5) quando x está ausente

ELSE

null

Operando nulo em `

` avaliado antes de um operando verdadeiro no mesmo pacote

Operando verdadeiro em `

` avaliado antes de um operando nulo (encurta a avaliação)

Operando nulo em && com um operando verdadeiro, em qualquer ordem

ELSE

null

falso operando em && avaliado antes de um operando nulo (encurta a avaliação)

ELSE

falso

falso operando em `

` avaliado antes de um operando nulo

A ordem importa para ambos os operadores. Cada um avalia primeiro o operando à esquerda e para ali quando o operando à esquerda já determina o resultado. Um falso operando à esquerda determina &&, e um true operando à esquerda determina ||. Em qualquer outra combinação, o operando nulo é avaliado, a condição se resolve como null, e a mensagem é roteada para ELSE.

Um operando verdadeiro não consegue encurtar a avaliação de um nulo em &&, pois o AND ainda precisa saber se o lado nulo falharia na condição. Um falso operando pode, e o nó então armazena um verdadeiro falso em vez de null. Para a mesma regra aplicada a fórmulas de atributo, e para os padrões de comparação que a evitam, veja Valores ausentes em expressões.

Cenários de tratamento de erro

Cenário
Resultado
Caminho do fluxo
Valor do atributo

A expressão é avaliada como true

Sucesso

Conexão THEN

true

A expressão é avaliada como falso

Sucesso

Conexão ELSE

falso

O atributo referenciado está null e é usado sozinho, sem operador de comparação

Resolve-se para null

Conexão ELSE

null

Valor ausente comparado com <, <=, >, ou >=

Resolve-se para null

Conexão ELSE

null

Valor ausente comparado com == e um literal não nulo

É avaliado como falso

Conexão ELSE

falso

Valor ausente comparado com == null

É avaliado como true

Conexão THEN

true

Valor ausente comparado com != e um literal não nulo

É avaliado como true

Conexão THEN

true

Erro de sintaxe na expressão

Resolve-se para null

Conexão ELSE

null

Exemplos práticos de implementação

Monitoramento de temperatura da frota

Requisito de negócio: Monitore veículos refrigerados para garantir a conformidade da temperatura da carga

  • Caminho THEN: Envie alertas imediatos para a central, registre violações de conformidade e acione ações corretivas

  • Caminho ELSE: Continue o processamento normal para temperaturas em conformidade e atualize os painéis de status

Fiscalização da segurança do motorista

Requisito de negócio: Identifique padrões de condução insegura durante as horas ativas do turno

  • Caminho THEN: Gere relatórios de orientação ao motorista, envie notificações de segurança e registre incidentes

  • Caminho ELSE: Processe dados de comportamento normal de condução e atualize as métricas de desempenho

Alertas de manutenção preditiva

Requisito de negócio: Detecte possíveis falhas de equipamento antes que ocorram

  • Caminho THEN: Agende manutenções, envie alertas aos técnicos e registre dados de diagnóstico

  • Caminho ELSE: Continue o monitoramento de rotina e atualize os painéis de integridade do equipamento

Monitoramento de conformidade da geocerca

Requisito de negócio: Garanta que os veículos operem dentro das áreas autorizadas durante o horário comercial

Esta expressão usa a inGeofence() função para verificar se um dispositivo está dentro de uma geocerca nomeada, combinada com um atributo de horário comercial. Os limites da geocerca são gerenciados na interface de geocercas da Navixy, portanto não é necessário manter valores de coordenadas na expressão.

O == true A comparação mantém a condição funcionando em pacotes em que a função de geocerca não consegue decidir, como um pacote que não carrega posição. Sem ela, um valor vazio interrompe toda a condição e a mensagem é roteada para ELSE.

  • Caminho THEN: Continue as operações normais; o dispositivo está na área autorizada durante o horário de trabalho.

  • Caminho ELSE: Gere um alerta de localização não autorizada, notifique a segurança e registre a violação.

Para detectar o momento em que um veículo sai da área autorizada, em vez de verificar continuamente, use leaveGeofence() em vez disso:

Para a referência completa sobre funções de geocerca, incluindo enterGeofence(), geofenceName(), e testar uma posição anterior com inGeofence(), consulte Funções de geocerca.

Atualizado

Isto foi útil?