Não salva valor no campo caso ocorra throw no script

Tenho um script que cria solicitações de um outro processo e, na sequência, salva informações em um banco externo. Mas acontece com frequência de criar a solicitação com sucesso, porém, dar erro ao tentar salvar no banco.

O problema é o seguinte: quando eu crio a solicitação, preencho um campo com o número da solicitação criada. Mas como deu erro posteriormente, acredito que o Fluig não salva o form, e aí o campo fica vazio. Então quando eu mando executar novamente, ele cria outra solicitação, gerando duplicidade. Se o campo com o número da solicitação estivesse preenchido não teria criado outra.

Uma solução paliativa que eu fiz foi, caso gere erro, cancelar a solicitação iniciada. Mas não é o melhor dos mundos.

Existe alguma maneira de “forçar” que o campo seja preenchido de alguma forma?

Já tive esse problema em uma Atividade Serviço. O Fluig realmente não salva nada no formulário se teve uma exceção não tratada, afinal ocorreu um erro.

A solução que me deram foi a de não dar o throw, mas salvar a informação (cria um campo de erros) informando que deu erro e então usa um Gateway pra decidir o que fazer se o campo de erro estiver preenchido.

No meu caso eu passei a utilizar a mensagem do throw (a atividade serviço recebe a mensagem na nova tentativa automática) pra saber o que aconteceu e então decidir o que faria.

Mas cada caso é uma solução diferente.

1 curtida

Não tinha pensado nessa possibilidade. Vou ver se para alguns casos fazer isso é melhor do que o que eu faço hoje.

Outra solução é separar em duas integrações uma para o start process e a outra para gravar no banco.