Voltar para o blog
Desenvolvimento Fluig4 min de leitura

Versão do formulário no Fluig: a regra que não muda

Corrigiu o evento do formulário e a solicitação continua com a regra antiga? O Fluig executa a versão de cada ficha. Veja como confirmar e como corrigir.

Você corrige uma regra no validateForm, publica, testa em uma solicitação nova e funciona. Aí alguém avisa que uma solicitação aberta continua barrada pela regra velha. Você confere o código exportado, e a regra não existe mais.

Não é cache nem engano. É como o Fluig trata as versões do formulário.

Cada ficha pertence a uma versão

Cada solicitação tem uma ficha, e a ficha guarda a versão do formulário a que pertence. Os eventos de formulário rodam dessa versão, não necessariamente da versão ativa.

Salvar a ficha gera uma nova versão dela, mas não a move para a versão mais recente do formulário. Assim, uma solicitação aberta há semanas pode continuar executando código que você nem tem mais no projeto.

O Fluig Studio também não ajuda aqui, porque o export traz a versão ativa. Se o erro em produção não bate com o código que você está olhando, desconfie disso primeiro.

Um caso real

Em um processo financeiro, uma regra de bloqueio foi alterada e o formulário ganhou várias versões em poucos dias. Mesmo assim, algumas solicitações seguiam barradas pela regra antiga.

O log mostrou o caminho: a mensagem citava a versão do fichário em que o evento rodava, bem anterior à ativa. Depois, a correção foi aplicada nas versões passadas, mas uma delas ficou de fora. A tela parecia certa, e só a comparação no banco mostrou a diferença.

Como confirmar

Pelo log. O server.log indica o fichário e a versão em que o evento foi executado. Compare com a versão ativa.

Pelo banco, em leitura. No ambiente que analisamos, a versão da ficha estava na coluna NUM_VERS_PROPRIED da tabela DOCUMENTO, e a solicitação aponta para a ficha em PROCES_WORKFLOW.NR_DOCUMENTO_CARD:

SELECT pw.NUM_PROCES, d.NR_DOCUMENTO, d.NUM_VERS_PROPRIED
FROM PROCES_WORKFLOW pw WITH (NOLOCK)
JOIN DOCUMENTO d WITH (NOLOCK)
  ON d.NR_DOCUMENTO = pw.NR_DOCUMENTO_CARD
 AND d.VERSAO_ATIVA = 1
WHERE pw.NUM_PROCES = 12345;

Compare os eventos de verdade. Os eventos de formulário ficam na tabela EVENT_FICHA, por documento e versão. Comparar um hash do código por versão é mais confiável do que abrir cada tela:

SELECT NR_VERSAO, COD_EVENT,
       HASHBYTES('SHA2_256', CAST(DSL_EVENT AS NVARCHAR(MAX))) AS HASH_EVENTO
FROM EVENT_FICHA WITH (NOLOCK)
WHERE NR_DOCUMENTO = 67890
  AND COD_EVENT = 'validateForm'
ORDER BY NR_VERSAO;

Esses são exemplos para SQL Server. Confira a estrutura na sua versão e use apenas leitura.

Um detalhe: um CRC igual entre versões indica que o HTML principal não mudou, mas os eventos podem ter mudado.

Como corrigir

Não precisa alterar o banco. Em nosso caso, o Fluig permitiu editar os eventos das versões anteriores e replicar o código corrigido.

O roteiro:

  1. Identifique quais versões têm solicitações em aberto.
  2. Decida se a nova regra deve valer para elas. Às vezes, a solicitação antiga deve mesmo seguir a regra antiga.
  3. Aplique o evento corrigido em cada versão afetada.
  4. Confira pelo hash, não pela tela.
  5. Teste em uma solicitação real de cada versão.

Evite publicar várias versões em sequência para "ver se resolve". Cada publicação aumenta o número de versões a corrigir.

Como evitar o problema

  • Mantenha os eventos simples, com poucas regras que dependam de versão.
  • Antes de publicar, liste as solicitações abertas e avalie o impacto nelas.
  • Registre no log a versão e a etapa quando uma validação barrar algo.
  • Campo novo exige versão nova do formulário. Solicitações antigas não terão esse campo, então o código precisa lidar com isso.
  • Depois de mudar um diagrama, lembre que o processo tem a mesma lógica: solicitações em andamento podem seguir outra versão. Quando precisar identificar etapas em relatórios, considere a versão ou use o nome da atividade.

Este tema faz parte da nossa lista de erros silenciosos no Fluig.

Perguntas frequentes

Por que a correção no validateForm não valeu para solicitações abertas?

Porque a ficha pode estar ligada a uma versão anterior do formulário, e os eventos rodam da versão dela.

Publicar de novo resolve?

Não para fichas já existentes. Elas continuam na versão original.

Dá para migrar a ficha para a versão ativa?

Alterar o banco diretamente é arriscado e não é o caminho recomendado. Prefira ajustar os eventos nas versões afetadas.

Se o seu Fluig se comporta de um jeito que o código não explica, a sustentação da MyQube investiga a causa com evidência. Vamos conversar.

Sua operação ainda depende de planilhas e retrabalho?

Agende uma conversa gratuita e receba um diagnóstico inicial dos seus gargalos operacionais.

Falar com a MyQube

Ou conheça nosso serviço de Consultoria Fluig