Condições sobre o dado
Sem condição, uma Coleta empurra tudo o que coleta para todos os destinos, e o “Encaminhar Resposta” de uma Entrega faz o mesmo com a resposta. A condição decide pelo conteúdo: só encaminhe se a temperatura passar de 80, só mande ao MES a nota que o SAP aceitou, abra uma nota de PM se o status for diferente de OK e a máquina estiver ligada.
Uma condição é escrita uma vez, no mesmo editor, e serve a três lugares:
| Onde | O que decide | Olha |
|---|---|---|
| Encaminhamento da Coleta — Coletas › Encaminhar Coleta | Se aquele destino recebe a leitura | O dado coletado |
| Encaminhar Resposta da Entrega — Definições | Se aquele destino recebe a resposta | A resposta do destino |
| Alerta Condição Atendida — Alertas | Se o alerta dispara (e-mail, WhatsApp, chamado) | O dado coletado |
Como se escreve
Uma condição é uma ou mais regras, combinadas com E (todas precisam valer) ou OU (basta uma):
| Parte | O que é |
|---|---|
| Campo | O caminho no dado, com ponto: temperatura, tags.Status, RETURN.TYPE, linhas.0.valor. Vazio = o conteúdo inteiro, para dado que não é JSON. input.<nome> lê um Parâmetro de Entrada |
| Operador | Ver a tabela abaixo |
| Valor | Texto, número ou uma Variável: {{LIMITE_TEMP}} |
| Operador | Atende quando |
|---|---|
| igual a, diferente de | O valor lido é (ou não é) o valor |
| maior que, maior ou igual, menor que, menor ou igual | Comparação — de número, quando os dois lados são número |
| entre | O número lido está entre os dois valores, inclusive |
| contém, não contém | O texto contém o valor, sem diferenciar maiúsculas |
| está vazio, não está vazio | Campo ausente, texto vazio, lista ou objeto vazios |
| mudou | O valor é diferente da leitura anterior |
O botão ao lado do campo sugere caminhos em três grupos: Da última mensagem (com o valor lido), Parâmetros de Entrada e Do Contrato Observado — os campos das mensagens reais daquela Coleta ou das respostas daquela Entrega, ver Contrato Observado. Dá para digitar qualquer outro.
O que vale saber sobre a comparação
- Número compara como número.
"100" > "80"é verdadeiro, mesmo com os dois como texto no JSON. Vírgula decimal vale:80,5é oitenta e meio. - Campo ausente não é maior nem igual a nada, mas é diferente de tudo, e conta como vazio.
- Variável é por Aplicação.
{{LIMITE_TEMP}}resolve com a Variável da Aplicação da Coleta (ou da Entrega) quando existe, e a Global quando não. É assim que cada máquina tem o seu limite com uma regra só. Uma Variável que não existe não vira “limite zero”: a comparação falha. mudounão dispara na primeira leitura — não há com o que comparar. A última leitura de cada campo fica guardada e sobrevive a reinício. Salvar a Coleta, a Entrega ou o alerta recomeça essa memória.
Parâmetros de Entrada — input.
O campo normal lê o dado: a leitura da Coleta, ou a resposta da Entrega. Para decidir pelo que
quem chamou mandou, use o prefixo input. com o nome do Parâmetro de Entrada: input.sendToMES igual a true encaminha ao MES só as chamadas que pediram isso.
| Onde | De onde vem input.<nome> |
|---|---|
| Coleta | Os Parâmetros de Entrada da chamada — pela API dinâmica, MCP, Gatilho ou Banco de Testes —, já com o valor padrão aplicado |
| Entrega (Encaminhar Resposta) | O Payload de Entrada da Definição, lido da mensagem recebida |
- O parâmetro aparece na hora. O grupo Parâmetros de Entrada vem das linhas do formulário: o parâmetro recém-adicionado já é oferecido, antes de salvar e antes de haver mensagem.
- O prefixo separa os dois. Se o dado também tiver um campo
sendToMES,sendToMESlê o dado einput.sendToMESlê o parâmetro. - Coleta agendada não tem parâmetros: ninguém chamou. Ali
input.<nome>é campo ausente — e, numa Coleta sem Parâmetros de Entrada,input.xcontinua sendo um caminho comum no dado. - Mensagens coletadas antes desta versão não guardaram os parâmetros: para elas,
input.<nome>é ausente.
Testar com a última mensagem
O botão Testar com a última mensagem, no editor, avalia a condição que está na tela — mesmo sem
aplicar — contra o dado real mais recente: a última leitura da Coleta, ou a última resposta da
Entrega. O resultado mostra se atende e, regra por regra, o valor lido e o esperado, além do dado.
Nada é gravado. O botão aparece depois que a Coleta ou a Entrega foi salva uma vez; mensagens do
Banco de Testes ficam de fora. Os Parâmetros de Entrada daquela mensagem entram entre os campos,
como input.<nome>, com o valor recebido.
Encaminhamento condicional
Em cada linha de Encaminhar Coleta (na Coleta) e de Encaminhar Resposta (na Entrega), o botão Regras, no início da linha, abre o editor. Quando há condição, ele fica azul e mostra quantas regras ela tem; o resumo aparece no tooltip.
- Sem condição, o destino recebe tudo — como sempre foi.
- Condição verdadeira: encaminha, com o Transformador do encaminhamento como de costume.
- Condição falsa: aquele destino não recebe, e fica o rastro do motivo.
A condição olha o dado cru, antes do Transformador: a regra fala da leitura, não do formato do destino.
Quando nenhum destino da Coleta atende, a mensagem termina Processada — foi a regra que decidiu, não é erro. Na Entrega, a mensagem já terminou quando o destino respondeu; a condição só decide o que segue adiante.
O rastro. Os encaminhamentos não feitos aparecem na mensagem de origem, no quadro
Encaminhamentos não feitos (condição não atendida): no popup e na página da
mensagem, e no resultado do Banco de Testes.
Cada linha diz o destino e o motivo — ✗ temperatura = "72" (esperado > "80").
Um uso típico na Entrega: a BAPI devolve RETURN.TYPE. Com RETURN.TYPE igual a S no
encaminhamento para o MES, só a nota aceita pelo SAP segue; a recusada fica com o motivo na
mensagem.
Alerta Condição Atendida
Em Alertas, o tipo Condição Atendida vale para uma Coleta e tem, além dos destinatários e canais de sempre:
| Campo | O que faz |
|---|---|
| Condição | O mesmo editor, sobre o dado coletado |
| Separar por | Um campo do dado (ex.: equipamento). Cada valor dispara e normaliza por conta própria — ver abaixo |
| Duração mínima (s) | Só dispara se a condição continuar verdadeira por esse tempo — temperatura acima de 80 por 5 minutos, e não um pico de uma leitura |
| Mensagem do alerta | O texto, com {{dado.campo}}, {{coleta}}, {{aplicacao}}, {{chave}} e as Variáveis. Vazio = a Coleta e as regras com os valores lidos |
Sem avalanche
Um MQTT publicando a cada segundo com a temperatura alta abriria uma nota por segundo. O alerta dispara na passagem de falso para verdadeiro, e fica quieto enquanto a condição continuar valendo. Quando ela deixa de valer, sai o aviso Condição Normalizada, e a próxima passagem dispara de novo.
A duração mínima é conferida a cada nova leitura: não há relógio próprio. Uma fonte que para de publicar não completa a duração.
Separar por
Uma Coleta que traz vários equipamentos — uma linha por forno, a cada ciclo — com um estado só
alternaria “atendida” e “normalizada” a cada ciclo: o forno 2 acima do limite e o forno 1 abaixo se
desmentiriam. Com Separar por equipamento, cada forno tem o seu estado: dispara quando ele
passa do limite e normaliza quando ele volta. A mensagem e o chamado trazem o valor — Condição
atendida na Coleta “FORNO_01” (equipamento = forno-2).
Escolha um campo que identifique a coisa monitorada, e não a leitura: um id de mensagem ou um horário criaria um estado por leitura.
Chamado
O alerta abre chamado nos destinos de Help Desk como qualquer outro, e o
corpo do destino pode usar o dado que disparou: {{dado.equipamento}}, {{dado.tags.Status}}. É o
que permite abrir a nota de PM no equipamento que veio na leitura.
Cada passagem abre o seu chamado — e, separado por chave, cada equipamento o seu. A trava de “um chamado por vez” dos outros alertas não se aplica aqui: com ela, a nota do forno 2 esperaria a do forno 1.
O que não dispara
- Mensagem de teste (Banco de Testes): o encaminhamento condicional é avaliado e mostrado, mas o alerta não dispara.
- Reenvio de uma leitura antiga: reenviar não abre nota de novo.
- Coleta só de consulta, que devolve o resultado a quem chamou e não encaminha.