Erros silenciosos no Fluig: 12 armadilhas reais
Dataset que devolve vazio, campo que some ao salvar, filtro que não filtra: 12 erros do Fluig que não mostram mensagem e como identificar cada um.
Erro com mensagem é fácil. O que custa caro no Fluig é o erro silencioso: o script termina, a tela não reclama e o dado sai errado ou simplesmente desaparece. Você só descobre semanas depois, quando alguém pergunta por que o relatório não bate.
Esta lista reúne armadilhas que encontramos desenvolvendo e mantendo processos reais. Algumas variam conforme a versão da plataforma, então valide no seu ambiente.
Em datasets
1. Dataset que não existe não dá erro. Uma chamada para um nome errado pode responder com sucesso e sem columns nem values. O código segue e a tela mostra "nenhum registro encontrado". Antes de tratar como lista vazia, confira se a resposta tem estrutura.
2. Exceção fora do try some. Se o erro acontece antes do try, como na leitura das constraints, o dataset volta com zero linhas e sem mensagem. Coloque todo o corpo do createDataset dentro do try.
3. Constraint que não filtra. Em dataset customizado, o filtro não é automático, e o formato pode mudar conforme quem chama. Explicamos em dataset no Fluig.
4. Multi-seleção que traz dados demais. Mandar vários valores em uma string e dividir por vírgula ou | quebra quando o próprio valor contém o separador. Um nome como 08.001 | EXECUÇÃO DE OBRA vira dois termos, e a consulta traz o que não devia. Envie uma constraint por valor selecionado.
5. Caractere acentuado que derruba o script inteiro. Em nossos ambientes, uma faixa acentuada literal numa regex impediu a compilação do dataset no servidor. O sintoma é um zoom sempre vazio, sem exceção no navegador. Mantenha os scripts de servidor em ASCII e use java.text.Normalizer para tratar acentos.
6. O zoom manda sqlLimit sem você pedir. Um dataset que usa "a primeira constraint desconhecida" como texto de busca passa a filtrar por 300, e o zoom fica vazio. Veja o guia de campo zoom no Fluig.
Em formulários
7. Campo novo que some ao reabrir. Se o campo não existe na definição publicada do formulário, o valor é descartado sem erro. Campo novo exige publicar uma nova versão.
8. disabled não é enviado. Um campo desabilitado não vai no envio, e o valor se perde. Para exibir sem permitir edição, use readonly. Em select e radio, desabilite só as opções não escolhidas.
9. Regra corrigida que continua valendo. O Fluig executa os eventos da versão a que a ficha pertence, e não necessariamente da versão ativa. Por isso, solicitações antigas podem seguir a regra velha. Detalhamos em versão do formulário no Fluig.
Em processos
10. Salvar já cria a solicitação. O afterProcessCreate roda em "somente salvar". Quem abre um subprocesso nesse evento abre em rascunho, e quem envia depois não passa por ele de novo. Use getValue("WKCompletTask") para separar os dois casos. A ordem completa está em eventos de processo no Fluig.
11. Solicitação excluída que continua no relatório. Excluir a solicitação não apaga a ficha do formulário. Todo painel que lê o dataset do formulário segue contando a solicitação. Veja como tratar isso.
12. API que diz sucesso e não grava. Em nossos testes, addUsers do serviço de grupos com matrícula, em vez de login, não lançou exceção e não gravou nada. Quando uma API altera dados, confira o resultado depois da chamada.
Dois hábitos que também evitam problemas
Não use nome reservado do Java. Variáveis como final, int ou class podem passar no seu editor e serem recusadas no servidor com "missing variable name".
Não guarde estado global. O motor de scripts pode ser reaproveitado entre execuções, e um valor pode vazar de uma para outra. Declare helpers dentro da função e passe o contexto por parâmetro.
Como encontrar esses erros mais cedo
- Registre o que chegou. Use
log.infocom um prefixo do projeto, como[COMPRAS][DATASET], e logue as constraints recebidas. - Teste os casos sem dado. Filtro sem resultado, valor com acento, valor com o separador e ficha antiga.
- Compile fora do servidor. O Rhino que vem com o Fluig Studio permite validar o script antes de publicar. O
node --checknão pega as diferenças do Rhino. - Confira o resultado, não a chamada. Depois de gravar, leia de novo. Depois de anexar, liste os anexos.
Perguntas frequentes
Como descobrir por que um dataset volta vazio?
Veja o server.log no momento da chamada e procure pelo nome do dataset. Depois confira se o nome está certo, se o script compila no servidor e se as constraints chegam como você espera.
O JavaScript do servidor é o mesmo do navegador?
Não. Os scripts de servidor rodam em Rhino, e a orientação segura é tratá-los como ES5, mesmo que o shell local aceite recursos mais novos.
Vale revisar processos que já funcionam?
Vale começar pelos que movimentam dinheiro ou alimentam relatórios. Um erro silencioso nesses processos pode já estar custando caro sem aparecer em nenhum chamado.
Se o seu Fluig tem erros que ninguém consegue explicar, 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