Ocorrências
A linha do tempo persistente de toda aresta de ocorrência, observada pelo juiz de uma execução ou pelo vigia do modo Sempre fora de execução, com a condição congelada por trás de cada uma.
A aba Ocorrências de Eventos (/events?view=occurrences) é a linha do tempo persistente
do que as coisas sob teste fizeram: uma linha por aresta de ocorrência, tenha sido o juiz de uma
execução ou o vigia do modo Sempre, de fora de execução, quem a observou. Vê-la exige Ver eventos;
exportar exige Exportar/importar históricos. As ocorrências são definidas por modelo em
Process > Preparação > Ocorrências; esta aba lê o histórico delas e não muda nada.
Ela segue a conduta compartilhada das três linhas do tempo descrita em Eventos: 500 linhas por página com um paginador embaixo, um período, uma busca com atraso, atualização ao vivo, um painel de detalhes, exportação CSV e JSON do período inteiro.
O que é uma linha
Uma ocorrência é uma condição booleana sobre os canais de um modelo, com um atraso de liga e um atraso de desliga. Uma linha é uma das quatro transições de uma sessão de observação:
| Transição | Significado |
|---|---|
| Ativada | A condição subiu e se manteve pelo atraso de liga. |
| Normalizada | A condição caiu e se manteve pelo atraso de desliga. |
| Indisponível | Um ou mais canais que a condição referencia pararam de entregar valor. O juiz segura a última condição confirmada e nunca fabrica uma normalização. |
| Restaurada | Todo canal referenciado entrega de novo; a condição é avaliada do zero e o seu atraso recomeça. |
Cada linha também diz em qual escopo ela foi observada e por que a sua sessão começou:
| Campo | Valores | Significado |
|---|---|---|
| Escopo | Execução, Fora de execução | Execução: o juiz da própria execução, armado pelo procedimento; a aresta também é escrita no arquivo daquela execução. Fora de execução: o vigia do modo Sempre, que lê os vínculos da unidade entre execuções. |
| Motivo | Execução iniciada, Execução retomada, Vigia iniciado, Observação fora de execução retomada, Definição alterada | Por que uma sessão de observação nova começou: uma execução começou; uma execução foi retomada depois de a aplicação reiniciar; o vigia do modo Sempre começou para esta ocorrência e unidade; a unidade voltou à observação fora de execução depois de uma execução; ou a condição, os atrasos, os canais referenciados, o estado de habilitação ou o modo de armar foram editados. |
Uma sessão nova começa do zero: nenhuma condição, disponibilidade ou estado de antirrepique atravessa um intervalo sem observação, então uma condição já verdadeira pode produzir outra Ativada quando uma execução começa ou quando a aplicação volta, e não existe linha sintética de "sessão iniciada" nesta linha do tempo. O arquivo da própria execução grava a fronteira da sessão mesmo quando nenhuma transição a segue; Históricos e relatórios usam isso para classificar uma ativação aberta mais antiga como Interrompida. Essa marca fica fora desta linha do tempo e não gera notificação nenhuma. Edições só de exibição (nome, mensagem, severidade) preservam a sessão e mudam apenas os snapshots posteriores.
Busca e filtro
| Controle | Valores | O que faz |
|---|---|---|
| Busca | Texto de exemplo "Buscar nome, mensagem, modelo, unidade ou procedimento" | Casamento por "contém" no nome da ocorrência, na sua mensagem, no nome do modelo, no nome da unidade e no nome do procedimento, como foram fotografados na hora. |
| Severidade | Todas as severidades (padrão), Crítica, Alerta, Informação | Mantém apenas as transições de ocorrências que carregavam aquela severidade quando aconteceram. |
| Atualizar | Relê o diário; dica "Atualizar ocorrências". | |
| Exportar | Exportar como CSV…, Exportar como JSON… | Grava as linhas listadas no momento. Desenhado apenas com Exportar/importar históricos; fica cinza enquanto a lista está vazia. |
As linhas
| Parte da linha | Conteúdo |
|---|---|
| Hora | Data e hora em que o juiz observou a aresta (numa execução, o instante da própria amostra julgada). |
| Ponto | O tom da severidade: crítico para Crítica, cautela para Alerta, neutro para Informação. |
| Nome | O nome da ocorrência na hora. |
| Resumo | "Transição · obs N (Motivo) · Modelo / Unidade · contexto", onde N é a posição da aresta dentro da sua sessão e o contexto é "Execução · " seguido do nome do procedimento (ou apenas "Execução" quando nenhum nome de procedimento foi gravado) ou "Fora de execução". Exemplo: "Ativada · obs 1 (Execução iniciada) · Forno / Linha 2 · Execução · Cozimento 180". |
| Nível | A palavra da severidade. |
A mensagem que uma linha carrega é a mensagem da própria ocorrência para Ativada e Normalizada (vazia quando a definição não tem nenhuma, mostrada como "Nenhuma mensagem capturada." no painel) e, para as arestas de disponibilidade, "Sinal indisponível:" ou "Sinal restaurado:" seguido dos nomes dos canais afetados, separados por vírgulas.
O painel de detalhes
Selecionar uma linha abre o painel com o distintivo da severidade e o nome, o instante completo, a linha de resumo, a mensagem e quatro cartões:
| Cartão | Campo | Conteúdo |
|---|---|---|
| EVENTO | Nível | A severidade. |
| EVENTO | ID do evento | A identidade desta aresta no diário. Numa observação de execução, é o mesmo id que o arquivo da execução guarda. |
| SNAPSHOT DA OCORRÊNCIA | Transição | Ativada, Normalizada, Indisponível ou Restaurada. |
| SNAPSHOT DA OCORRÊNCIA | Modelo | O nome do modelo na hora. |
| SNAPSHOT DA OCORRÊNCIA | Unidade | O nome da unidade na hora. |
| SNAPSHOT DA OCORRÊNCIA | Escopo | Execução ou Fora de execução. |
| SNAPSHOT DA OCORRÊNCIA | Procedimento | Só no escopo Execução: o nome do procedimento, ou um traço quando nenhum foi gravado. |
| SNAPSHOT DA OCORRÊNCIA | ID da execução | Só no escopo Execução: o id da execução, o mesmo que Históricos mostra. |
| SNAPSHOT DA OCORRÊNCIA | ID do modelo, ID da unidade, ID da ocorrência | Os ids estáveis por trás dos nomes, que renomear não muda. |
| SESSÃO DE OBSERVAÇÃO | Sequência no diário | O número de inserção da linha no diário, que ordena linhas com o mesmo instante. |
| SESSÃO DE OBSERVAÇÃO | ID da observação | A identidade da sessão que observou a aresta; toda aresta de uma sessão a compartilha. |
| SESSÃO DE OBSERVAÇÃO | Sequência da transição | A ordem da aresta dentro da sessão, começando em um. Um salto significa uma aresta que o diário não conseguiu persistir. |
| SESSÃO DE OBSERVAÇÃO | Início | Quando a sessão começou, como instante completo. |
| SESSÃO DE OBSERVAÇÃO | Motivo | Execução iniciada, Execução retomada, Vigia iniciado, Observação fora de execução retomada ou Definição alterada. |
| CONFIGURAÇÃO CONGELADA | Condição | A condição JavaScript que a sessão de fato julgou. |
| CONFIGURAÇÃO CONGELADA | Atraso de liga / desliga | "x ms / y ms", o antirrepique que a sessão usou. |
| CONFIGURAÇÃO CONGELADA | IDs dos canais referenciados | Os ids dos canais que condicionaram a condição, separados por ponto e vírgula. |
Copiar evento copia uma linha: "instante | Ocorrência | severidade | nome | resumo | mensagem | EventId=… | OccurrenceId=… | ObservationId=… | ObservationSequence=… | ObservationStartedAt=… | ObservationReason=… | Condition=… | OnDelayMs=… | OffDelayMs=… | ReferencedChannelIds=…".
Colunas da exportação
O CSV e o JSON carregam os mesmos campos, nesta ordem: Timestamp (o cabeçalho do CSV acrescenta a
referência de tempo, "Timestamp (UTC-03:00)"), JournalSequence, Severity, Name, Transition,
Scope, Model, ModelId, Unit, UnitId, Procedure, RunId, Message, EventId,
OccurrenceId, ObservationId, ObservationSequence, ObservationStartedAt,
ObservationReason, Condition, OnDelayMs, OffDelayMs e ReferencedChannelIds (separados por
ponto e vírgula no CSV, um vetor no JSON). O JSON é um envelope com TimeZone e Events. Os nomes
dos arquivos são occurrence-history-<yyyyMMdd-HHmmss>.csv e .json. O CSV segue a preferência de
separador decimal da estação como toda outra exportação: com decimais por ponto o separador de lista
é ,, com decimais por vírgula ele é ;. Uma célula que começa com =, +, - ou @ recebe um
apóstrofo na frente para que a planilha a leia como texto.
Onde mais uma ocorrência é gravada
Uma observação de execução é escrita primeiro no arquivo da própria execução e depois copiada para cá com o mesmo id de evento e o contexto da execução; se a cópia falhar, o arquivo da execução ainda guarda a aresta e o Console carrega uma linha de Error dizendo isso. Uma observação fora de execução existe apenas aqui. Toda aresta também deixa uma linha no Console sob a área Process: uma ativação no nível da sua severidade (Crítica como erro, Alerta como alerta, Informação como informação), uma perda de sinal nesse mesmo nível, uma normalização e uma restauração como informação. Uma ativação ainda levanta uma notificação dentro da janela intitulada "Ocorrência · " seguida do nome da unidade e, para uma ativação de Alerta ou Crítica observada durante uma execução, uma notificação do sistema operacional enquanto a janela está escondida ou minimizada.
Estados vazios e a linha de status
- "Nenhuma ocorrência ainda" com "As transições de ocorrência vindas de execuções e do monitoramento do modo Sempre fora de execução vão aparecer aqui."
- "Nenhuma ocorrência casa com estes filtros" com "Ajuste a severidade ou os termos de busca para ampliar este histórico."
- A linha de status diz "N mostradas · página 1" e, em seguida, " · filtrado" quando uma busca, uma severidade ou um período está em vigor; à direita, "1 selecionada" e "Atualizado hh:mm:ss".
O que a aba Ocorrências não faz
- Ela não define, arma nem edita uma ocorrência (Process > Preparação > Ocorrências).
- Ela não emparelha arestas em episódios com duração: essa visão derivada, com as suas classificações Interrompida e Incompleta, está em Históricos para uma execução e nos painéis da própria unidade.
- Ela não tem filtro por unidade, execução, escopo ou data; busque pelo nome da unidade, do modelo ou do procedimento, ou abra a execução em Históricos.
- Ela não mostra estado ao vivo: se uma ocorrência está ativa agora se lê no painel da unidade, não aqui.