Versionamento

Toda alteração em uma regra ou em uma análise publicada gera uma nova versão. Cada versão registra quem alterou, quando alterou e o que mudou. Uma versão anterior volta ao ar quando publicada novamente.

A mecânica é a mesma para a regra e para a análise: uma versão publicada é imutável, uma nova versão começa como rascunho, e a publicação substitui o que está no ar. As diferenças da análise estão em Versões de análise.

Status

Cada versão está em um dos seguintes status:

Status Comportamento
Rascunho aceita modificação livre e só passa a valer depois de publicada
Em observação executa em paralelo com a versão ativa, sem decidir nada, conforme Observação
Ativa está publicada e em uso pela API; não aceita modificação, e uma alteração gera uma nova versão
Inativa já esteve ativa em algum momento; é mantida para rastreabilidade e volta ao ar pelo botão Publicar
Arquivada está oculta no painel e preservada no histórico; permanece visível ao inspecionar eventos antigos que a utilizaram

Uma regra ou uma análise admite no máximo uma versão ativa e uma versão em observação ao mesmo tempo. Uma versão publicada apresenta o botão Nova versão a partir desta em lugar do botão de edição, e informa que não pode ser editada.

Nova versão

O botão Nova versão, na página da regra ou da análise, cria um rascunho a partir de uma das duas origens:

Origem Conteúdo do rascunho
A partir de uma versão cópia das condições da versão escolhida, ou das células, na análise; a versão ativa vem selecionada
Em branco nenhuma condição, ou nenhuma célula, na análise

O menu de uma versão publicada oferece o mesmo caminho, com a versão já escolhida, em Nova versão a partir desta. Editar uma versão publicada não cria rascunho: o rascunho nasce sempre de Nova versão ou de Nova versão a partir desta. Criar uma versão exige o perfil Editor ou Administração.

Um rascunho de regra em branco existe sem condições, mas o editor só salva a regra com ao menos uma condição. A publicação exige o mesmo.

Rascunhos abertos

Uma regra admite até três rascunhos abertos ao mesmo tempo. A página da regra apresenta a contagem, como 1 de 3 rascunhos abertos. Com o limite atingido, a criação de rascunhos está indisponível até que um rascunho seja publicado ou descartado. A análise não tem esse limite.

Arquivar e descartar

Descartar exclui um rascunho em definitivo.

Arquivar preserva o histórico e retira do painel uma regra, uma análise ou uma versão inativa de regra:

Item Efeito Restrição
Regra os rascunhos são excluídos e as versões inativas passam a Arquivada; uma regra que só teve rascunhos é excluída recusado enquanto alguma versão estiver ativa ou em observação
Análise a análise e todas as suas versões são arquivadas recusado enquanto uma regra publicada usar a análise
Versão inativa de regra a versão passa a Arquivada a versão ativa e a versão em observação não são arquivadas

O painel não restaura um item arquivado.

Comparação e publicação

Toda versão que pode entrar em vigor (rascunho, inativa ou em observação) apresenta o botão Publicar. Com outra versão ativa, a publicação exige a revisão prévia das mudanças em relação a ela: a tela de comparação abre posicionada entre a versão ativa e a versão a publicar, e o botão de publicar fica no próprio comparativo. Sem versão ativa, a publicação solicita apenas uma confirmação. O painel sinaliza uma regra sem versão publicada, que só passa a valer após a primeira publicação.

A comparação abrange as condições e as ações. Cada linha corresponde a uma condição. As linhas coloridas indicam as condições que mudaram, e uma etiqueta identifica a alteração (adicionada, removida, reordenada ou alterada). Na coluna de ações, uma ação riscada deixa de valer e a que a substitui aparece após a seta; uma ação marcada com + é nova. O comparativo expõe o efeito exato da publicação antes de a versão entrar em vigor.

Na análise, cada linha corresponde a uma célula, com o valor anterior e o novo de cada configuração alterada.

Condições atendidas

Cada condição de uma versão de regra registra quantas vezes foi atendida a cada dia. O painel apresenta a contagem na própria condição, junto com o total de execuções do período. A leitura distingue três situações: o dia em que a regra não recebeu tráfego, o dia em que a regra executou sem que a condição fosse atendida, e o dia em que a condição foi atendida ao menos uma vez.

A contagem localiza a condição que nunca é atendida, seja porque a expressão não corresponde ao tráfego real, seja porque uma condição anterior já preencheu o campo que ela testa. Uma condição que não é atendida nenhuma vez desde a publicação é candidata a revisão antes da próxima versão.

A contagem começa na publicação da versão e considera apenas eventos reais: as simulações ficam de fora. Uma versão recém-publicada, portanto, começa sem leitura.

Observação

Publique uma versão em observação (shadow) antes de ela entrar em vigor. A versão em observação executa em paralelo com a versão ativa, sobre os mesmos eventos reais, e nada do que ela produz altera o resultado do evento: a decisão continua sendo a da versão ativa. O ciclo de vida passa a ser rascunho, observação e ativa.

Uma versão inativa também pode ser colocada em observação. Isso avalia uma versão já substituída sem devolvê-la ao comando das decisões. A versão ativa é a única que não pode ser observada, por já estar decidindo.

Uma versão em observação é imutável, como a ativa: editá-la cria um novo rascunho. A versão promovida é exatamente a que foi observada, sem reescrita das ações.

Saídas observadas

A observação é seletiva. Ao publicar, você marca quais saídas quer acompanhar. A plataforma grava cada saída marcada no mesmo evento, em um campo com o sufixo _shadow, ao lado do valor que a versão ativa gravou. O campo _shadow acompanha as configurações de armazenamento do campo de origem (limite de tamanho, truncamento, sensibilidade e casas decimais). Uma alteração no campo de origem que o par observado não comporta é recusada. As saídas não marcadas são descartadas junto com o restante da execução.

Como os dois valores ficam no mesmo evento, a comparação usa as telas existentes: filtros em Explorar, métricas e dashboards comparam o campo e o seu par observado sem configuração adicional.

Altere as saídas observadas a qualquer momento, sem republicar a versão. Uma versão que não preenche nenhum campo não tem saídas para observar e não pode ser publicada em observação.

Todo evento processado registra também a versão em observação que o processou, além do nome e da versão da regra ativa. Sem esse registro, um valor observado não poderia ser atribuído à versão que o escreveu, já que cada revisão é uma versão nova.

O que a observação não executa

Uma versão em observação não altera o estado compartilhado que outras execuções leem:

  • As ações que gravam em listas são suprimidas. As condições que consultam listas continuam lendo a lista real. Uma regra cujo comportamento é alimentar uma lista e depois consultá-la é observada de forma aproximada, não exata.
  • As análises registradas pela versão em observação ficam em janelas próprias, separadas das que a versão ativa alimenta e consulta.

As janelas da observação começam vazias e precisam de uma retenção inteira de tráfego para significar alguma coisa. Ao promover a versão para ativa, as janelas recomeçam do zero pelo mesmo motivo.

Em um tipo de evento com versão em observação, o evento fica visível nas consultas alguns instantes depois do recebimento, e não imediatamente. A gravação espera a execução observada para levar os dois valores no mesmo registro.

Versões de análise

Uma análise segue o mesmo ciclo da regra, com três particularidades.

Toda alteração em uma análise, seja uma célula, seja a ordem da cascata, é feita em um rascunho, e a publicação leva o conjunto inteiro ao ar de uma vez. Não há publicação de uma célula isolada: a cascata é publicada como um todo, e as células nunca estão em versões diferentes entre si.

Uma análise admite vários rascunhos ao mesmo tempo, cada um partindo da versão que o originou. A página da análise apresenta os rascunhos abertos e o caminho para cada um.

Alterar o que uma célula mede, ou a janela em que ela acumula, descarta o histórico já acumulado por essa célula. A célula recomeça vazia e precisa de uma retenção inteira de tráfego para voltar a significar alguma coisa. A comparação assinala essa consequência antes da publicação, e a confirmação é solicitada no momento da alteração. As demais células da análise mantêm as suas janelas.

Histórico

Cada regra e cada análise tem um histórico com as ações realizadas sobre as suas versões: criação, edição, publicação, publicação em observação, retirada de observação, substituição, despublicação, descarte e arquivamento. Cada entrada registra a versão, o autor e o momento.

O histórico exibe as ações mais recentes e mantém as demais recolhidas. A lista de versões é o registro completo.

Rastreabilidade nos eventos

Todo evento processado por uma regra registra o nome da regra e o número da versão que o processou, além da versão em observação, quando houver uma. Esse registro reconstrói depois qual lógica gerou cada valor, inclusive quando a versão já foi substituída ou arquivada.

A ação executar análise publica a versão da análise que decidiu um evento na chave version, que um preencher campo grava no evento.