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:
- Identifique quais versões têm solicitações em aberto.
- Decida se a nova regra deve valer para elas. Às vezes, a solicitação antiga deve mesmo seguir a regra antiga.
- Aplique o evento corrigido em cada versão afetada.
- Confira pelo hash, não pela tela.
- 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 MyQubeOu conheça nosso serviço de Consultoria Fluig