Skip to Content
Primeiros passosConceitos

Conceitos

Quase toda configuração do CMS combina os mesmos poucos objetos. Entender essa cadeia resolve a maior parte das dúvidas de uso.

Aplicação

Representa um sistema integrado (ERP, MES, WMS, balança, CLP…). Tem uma sigla curta — usada nas URLs e nos relatórios — e é a unidade de agrupamento do sistema: interfaces, definições, tokens, alertas e relatórios são sempre organizados por Aplicação.

A Aplicação também é a unidade de monitoramento de disponibilidade: o CMS verifica em ciclos a conexão dela (keep-alive), registra períodos online/offline e gera o relatório de uptime.

O seletor no topo da tela define a Aplicação em foco: escolhida uma, as telas passam a mostrar só o que pertence a ela, e a escolha acompanha a navegação.

As ferramentas de chamado (Help Desk) também são Aplicações, de uma categoria própria. Elas aparecem em Interfaces, Definição de Mensagem e nos filtros de Mensagens, mas ficam fora do seletor de Aplicação em foco e dos cadastros da fábrica.

Interface

Uma interface de processamento. Define como as mensagens daquele fluxo são consumidas:

  • Ordem sequencial — uma mensagem por vez, preservando ordem de chegada.
  • Paralela — várias mensagens simultâneas, com concorrência configurável.

A Interface pode ser bloqueada (manualmente ou automaticamente por uma regra de erro de negócio). Enquanto bloqueada, as mensagens continuam entrando mas não são entregues — o que evita disparar centenas de erros contra um sistema destino que já se sabe indisponível.

Definição de Entrega

O contrato de entrega: para onde a mensagem vai e como.

Tipo de entrega

Define o protocolo usado para entregar a mensagem no destino:

TipoO que faz
HTTP_POSTEnvia o payload por POST para o endpoint do destino — o caso mais comum
HTTP_PUTEnvia por PUT, para APIs REST que esperam substituição do recurso
HTTP_PATCHEnvia por PATCH, para atualização parcial do recurso
HTTP_DELETEChama o endpoint por DELETE, para remoção do recurso
HTTP_SOAPMonta e envia o envelope SOAP para o web service do destino
MQTT_PUBLISHPublica o payload num tópico do broker MQTT
SQL_SERVER_EXECExecuta um comando ou procedure no SQL Server destino
ORACLE_EXECExecuta um comando ou procedure no Oracle destino
POSTGRES_EXECExecuta um comando no PostgreSQL destino
SQLITE_EXECExecuta um comando no banco SQLite de destino — o arquivo .db da conexão
INFLUXDB_WRITEGrava pontos numa série temporal do InfluxDB destino
MONGODB_WRITEGrava a mensagem como documento numa coleção do MongoDB — inserindo, ou atualizando um documento existente
SAP_RFC_CALLChama um módulo de função / BAPI no SAP com os dados da mensagem
OPC_UA_WRITEEscreve valores em tags de um servidor OPC UA (passa pelo gate de escrita)
MODBUS_WRITEEscreve valores em registradores Modbus TCP (passa pelo gate de escrita)
PI_WEB_API_WRITEEscreve valores em tags do PI System (AVEVA/OSIsoft)
SPARKPLUG_CMDPublica um comando no namespace Sparkplug B, sobre a mesma conexão MQTT
FILE_WRITEGrava o conteúdo num arquivo do diretório configurado na conexão

Campos comuns a todos os tipos

CampoO que define
SiglaIdentificador da definição, único no sistema todo — não só na Interface. Entra na URL de recebimento, então mudá-la depois quebra quem já integra
Aplicação e InterfaceA quem a definição pertence e por qual interface as mensagens passam
Tipo de mensagemASSINCRONA — persiste, enfileira e responde na hora; SINCRONA — espera a resposta do destino antes de responder ao chamador
URL de recebimentoEndereço público gerado para esta definição: POST /api/{sigla-da-interface}/{sigla-da-definicao}
Content-TypeCabeçalho usado no envio ao destino (padrão application/json)
Validar Content-TypeQuando ligado, recusa mensagem cujo content-type não corresponde ao esperado
EncodingCodificação do corpo enviado (padrão UTF-8)
Tamanho máximo do payloadLimite aceito no recebimento; acima disso a mensagem é recusada
Decodificação da mensagemConverte o corpo antes de processar: NENHUM, BASE64, XML_UNESCAPED, URL_ENCODED, HEX, CHARSET_LATIN1, HTML_ENTITIES
TransformadorScript aplicado ao payload antes da entrega (opcional)
Modelo de ConteúdoTexto com {{alias}} que substitui o payload como conteúdo entregue (opcional). Resolve contra a saída do Transformador
Timeout de envioSegundos de espera pela resposta do destino antes de considerar falha (padrão 30)
Máximo de tentativasQuantas vezes repetir uma falha técnica (padrão 3). Entre as tentativas o sistema espera 10 segundos
Credencial de destinoCredencial usada para autenticar a chamada de saída
Encaminhar respostaQuando ligado, devolve ao chamador a resposta que o destino retornou
Ativar WebService (WSDL)Publica o endpoint SOAP com WSDL dinâmico para esta definição
WS-Security no HeaderAceita autenticação por UsernameToken no envelope SOAP
Expor como ferramenta MCPDeixa um agente de IA chamar esta Entrega, pelo Servidor MCP de integrações
AtivoDesliga a definição sem apagá-la — deixa de receber mensagens

Campos por tipo de entrega

TipoCampos específicos
HTTP_POST · HTTP_PUT · HTTP_PATCH · HTTP_DELETEHost de destino e URI que compõem o endereço chamado
HTTP_SOAPHost de destino, URI e SOAP Action do web service
MQTT_PUBLISHQoS — 0 (no máximo uma vez) ou 1 (pelo menos uma vez). O broker vem da conexão da aplicação de destino
SQL_SERVER_EXEC · ORACLE_EXEC · POSTGRES_EXEC · SQLITE_EXECComando SQL executado no banco destino. Os placeholders :payload, :datetime e :transformer viram parâmetros bindados, nunca texto concatenado
SAP_RFC_CALLNome da função/BAPI, mapeamento dos parâmetros IMPORT e TABLES, o payload de entrada esperado (com campos obrigatórios) e commit após a chamada — muitas BAPIs de escrita exigem commit explícito
OPC_UA_WRITETags de escrita (alias → NodeId), e o gate opcional: tag e valor de trigger que liberam a escrita, além do valor gravado após escrever
MODBUS_WRITETags de escrita (alias → tabela e endereço), e o gate opcional: tabela, endereço e valor de trigger, além do valor gravado após escrever
PI_WEB_API_WRITETags de escrita (alias → caminho no PI), origem do timestamp (agora ou campo do payload) e o modo de escrita
INFLUXDB_WRITEMeasurement, mapeamento das colunas (cada alias vira tag ou field), precisão, origem do timestamp e o bucket de destino
MONGODB_WRITEColeção de destino, modo de gravação (inserir um, inserir em lote, atualizar ou criar, somente atualizar), os campos da chave nos modos que casam com documento existente, e o campo de data da gravação
FILE_WRITECaminho do arquivo dentro do diretório base, modo de escrita (criar novo ou anexar), encoding e escrita atômica
SPARKPLUG_CMDGrupo, Edge Node e Device do namespace, e as métricas do comando (alias → nome e tipo da métrica)

Nas tags de escrita, o produtor da mensagem envia um objeto plano {alias: valor} — ele não precisa conhecer os NodeIds nem os endereços internos do CLP, só os aliases configurados aqui. Cada mensagem pode trazer só um subconjunto dos aliases: grava-se o que vier.

Definição de Coleta

O espelho da Definição de Entrega para o sentido inverso: em vez de esperar alguém enviar, o CMS vai buscar a mensagem.

Tipo de coleta

Define de onde e como o dado é obtido:

TipoO que faz
HTTP_GET / HTTP_POSTChama um endpoint externo em intervalo agendado
MQTT_TOPIC_SUBSCRIBERAssina um tópico MQTT e reage a cada publicação
SQL_SERVER / ORACLE / POSTGRES / SQLITEExecuta uma consulta e transforma o resultado em mensagens
SAP_RFCChama um módulo de função / BAPI no SAP
SAP_IDOCRecebe IDocs enviados pelo SAP
OPC_UA_TRIGGERObserva uma tag OPC UA e dispara quando ela muda
MODBUS_TRIGGER / MODBUS_POLLObserva uma mudança ou varre registradores Modbus TCP
INFLUXDBExecuta uma consulta Flux, InfluxQL ou SQL numa série temporal
MONGODBLê documentos de uma coleção por filtro (find) ou pipeline (aggregate)
SPARKPLUG_SUBSCRIBERAssina um namespace Sparkplug B e recebe nascimentos e mudanças de métrica
PI_WEB_APILê tags do PI System: valor atual, histórico, interpolado ou resumo
FILE_WATCHObserva um diretório e transforma cada arquivo que chega em mensagem

Campos comuns a todos os tipos

CampoO que define
SiglaIdentificador da coleta, único no sistema todo. Entra na URL da API dinâmica de coleta
Aplicação e InterfaceA quem a coleta pertence e por qual interface o resultado passa
EncaminhamentosAs Interfaces/Definições de destino para onde o payload coletado segue. Uma coleta pode alimentar vários destinos de uma vez
Parâmetros de entradaCampos que um produtor externo pode enviar para POST /api/collect/{interface}/{coleta}, e que a coleta usa para montar a busca. Com eles, a coleta passa a rodar sob demanda
Ativar WebService (WSDL)Publica a mesma API dinâmica também em SOAP, na operação ExecutarColeta. Exige parâmetros de entrada
Expor como ferramenta MCPDeixa um agente de IA executar esta coleta, pelo Servidor MCP de integrações. Exige parâmetros de entrada
TransformadorScript aplicado ao payload coletado, antes do encaminhamento (opcional)
Máximo de tentativasQuantas vezes repetir uma falha (padrão 3), com 10 segundos entre elas
AtivoDesliga a coleta sem apagá-la — para o agendamento ou a assinatura
Resultado da última execuçãoStatus, horário e mensagem de erro da última busca. Só se aplica aos tipos pull: os tipos por evento têm status de conexão em tempo real

A periodicidade dos tipos pull pertence à Interface (intervalo em milissegundos ou expressão cron), não à Coleta. Ligar, desligar e executar na hora ficam na tela Agendadores.

Campos por tipo de coleta

TipoCampos específicos
HTTP_GET · HTTP_POSTURL de origem, parâmetros fixos, template de payload (no POST), credencial de origem, content-type de envio e timeout da coleta (padrão 30 s)
MQTT_TOPIC_SUBSCRIBERConexão externa do broker, tópico assinado e QoS
SQL_SERVER · ORACLE · POSTGRES · SQLITEConexão externa, query SELECT, modo de resultado, coluna chave e comando pós-coleta — o comando que marca como lido o que acabou de ser trazido
SAP_RFCConexão externa, nome da função/BAPI, mapeamento dos parâmetros IMPORT e TABLES, e as variáveis de entrada que vêm de fora
SAP_IDOCConexão externa (o listener) e os filtros de tipo de IDoc, tipo de mensagem e parceiro, que decidem quais IDocs esta coleta recebe
OPC_UA_TRIGGERConexão externa, NodeId e valor do trigger que disparam a coleta, tags de leitura (alias → NodeId) e o reset após a leitura — valor gravado de volta na tag de trigger para “consumir” o sinal
MODBUS_TRIGGER · MODBUS_POLLConexão externa, tabela, endereço e valor do trigger, tags de leitura (alias → tabela e endereço), intervalo de varredura, reset após a leitura e emitir somente se mudou
INFLUXDBConexão externa, consulta, linguagem (Flux, InfluxQL ou SQL) e o bucket/database desta coleta
MONGODBConexão externa, operação (find ou aggregate), coleção, filtro ou pipeline em JSON, projeção, ordenação, limite de documentos, formato do payload e o comando pós-coleta que marca os documentos lidos
SPARKPLUG_SUBSCRIBERConexão externa (o broker), grupo, Edge Node e Device assinados, e se solicita rebirth ao conectar
PI_WEB_APIConexão externa, tags lidas, modo de leitura (valor atual, histórico, interpolado ou resumo), janela de tempo, intervalo e o modo de emissão
FILE_WATCHConexão externa (o diretório base), subpasta, máscara de arquivo, encoding, modo de emissão e a ação após a leitura — mover, renomear ou deixar como está

O modo de resultado das consultas SQL decide a granularidade: LINHA_UNICA_PAYLOAD_UNICO (todo o resultado vira uma mensagem) ou UMA_LINHA_POR_PAYLOAD (cada linha vira uma mensagem independente).

Transformador

Script JavaScript executado em sandbox (node:vm dentro de worker_threads, num pool isolado) que recebe o payload e devolve outro: JSON ↔ XML, remapeamento de campos, cálculo de agregados.

O mesmo Transformador é reutilizável em Definições de Entrega e em Coletas. Pode ser escrito à mão no editor Monaco ou gerado por IA a partir de um exemplo de entrada, um de saída e um prompt — com histórico de gerações e aprovação explícita antes de entrar em uso.

Numa Entrega que recebe de vários sistemas em formatos diferentes, cada Aplicação produtora pode ter um Transformador próprio, que converte o formato dela para o da Entrega e roda antes do Transformador da Entrega — ver Transformador por Aplicação produtora.

Conexão Externa

Dados de conexão reutilizáveis, com botão de testar conexão. Coletas e Entregas apontam para uma Conexão em vez de repetir host/porta/usuário em cada configuração.

CategoriaTipos disponíveis
Bancos de dadosSQL Server, Oracle, PostgreSQL (inclui TimescaleDB), SQLite, InfluxDB, MongoDB (inclui Atlas, Azure Cosmos DB e AWS DocumentDB)
Chão de fábricaOPC UA, MQTT (inclui Sparkplug B), Modbus TCP, PI Web API
SAPSAP RFC / BAPI, SAP IDoc, SAP Gateway (OData), SAP CPI (Cloud Integration)
ArquivosDiretório monitorado e gravado

O tipo da conexão vinculada à Aplicação define quais tipos de Coleta e de Entrega ficam disponíveis nela — uma Aplicação com conexão MongoDB, por exemplo, só oferece Coleta MONGODB e Entrega MONGODB_WRITE.

Variáveis

Valores reutilizáveis que entram por {{nome}} nas configurações de Coletas, Entregas e Transformadores — endereços, códigos de centro, nomes que mudam de ambiente para ambiente. Existem em dois escopos: Globais (valem em todo o CMS) e Por Aplicação (valem só dentro dela). Quando o mesmo nome existe nos dois, vale o valor da Aplicação.

Servem para tirar de dentro de cada configuração o que muda entre ambientes: o que difere de desenvolvimento para produção fica num lugar só, em vez de espalhado por dezenas de definições.

Credencial

Credenciais de autenticação usadas nas chamadas de saída (HTTP/SOAP): basic, bearer, token em header, WS-Security. Ficam cifradas em repouso e nunca são reexibidas pela API.

Integrações REST puras não precisam de adaptador dedicado: use HTTP_GET/HTTP_POST + Credencial + Transformador. Os adaptadores nativos (SAP, OPC UA, Modbus, MongoDB…) existem só porque esses protocolos não são HTTP.

Como tudo se conecta

Aplicação (MES) └── Interface (MES_PALLET) ← ordem, concorrência, bloqueio ├── Definição (AnyToMES_Pallet) ← destino, timeout, tentativas, transformador │ ├── Credencial ← como autenticar no destino │ └── Transformador ← como converter o payload └── Coleta (SAP_ProdOrder) ← origem externa + encaminhamentos └── Conexão Externa ← host/porta/usuário do SAP, MQTT, OPC UA…