Base de Conhecimento

Padrão de exceção em Mendix

“Ocorreu um erro, favor contatar o administrador de seu sistema”.

Quando um usuário vê esta mensagem de erro padrão do Mendix, nossa experiência é que a notificação é ignorada, ou contatamos que algo estava errado. O usuário simplesmente não tem mais idéia de quando exatamente ou por quê. A ajuda torna-se difícil.

Para melhorar o feedback que o sistema dá ao usuário e conseguir um registro mais informativo para o desenvolvedor, usamos um padrão fixo para cada ação a partir de uma página. Isto parece ser o seguinte: Ele começa com um nanofluxo de ação para lidar com todas as ações do cliente. Pense em abrir uma nova página, refrescar um objeto ou mostrar uma mensagem ao usuário. A seguir, chamamos um microfluxo de ação que executa o subfluxo lógico e trata o resultado incluindo o tratamento de erros e o registro. O resultado é retornado em uma entidade específica FlowResult para o nanofluxo (ver Figura 1).

 

Figure 1

 

O padrão para cada etapa é o seguinte:

Chamada de ação nanofluxo de uma página

A ação nanofluxo é chamada a partir de uma página e recebe o prefixo “Nanoflow Action Call” (NAC). Se a validação dos campos for necessária, este nanofluxo primeiro chama um microfluxo para validação. Usamos um microfluxo para isto, para que possamos testar a validação por unidade. Se você não trabalhar com testes unitários, então um sub-nanofluxo também o fará, é claro. Um fluxo de validação retorna um resultado que lhe permite saber se você pode ou não realizar a ação de acompanhamento.

Chamando microfluxo de ação de nanofluxo

A ação microfluxo (com o prefixo ACT) recebe os mesmos direitos que a ação nanofluxo. Este microfluxo cria um objeto FlowResult e chama o sub-microfluxo com a lógica nele (ver Figura 2). Neste subfluxo o tratamento do erro é capturado, de modo que em caso de erros podemos registrar e definir o FlowResultado como falhado. A mensagem de erro também é colocada no FlowResultado. Dependendo do resultado, pode-se então realizar a ação de acompanhamento desejada no próprio microfluxo ou na ação nanofluxo.

Sub microfluxo de ação microfluxo

O subfluxo trata de toda a lógica. Os objetos são modificados aqui, criados e excluídos, cálculos efetuados, etc. Se surgir uma situação inesperada, nós mesmos nos encarregamos de levantar uma exceção. Isto porque não é o comportamento desejado e esperado da lógica e, portanto, uma execução. Desta forma, o microfluxo de ação pode capturar o que deu errado e realizar o manejo apropriado (incluindo o registro).

Figure 2

Considerações sobre o padrão

  • Escolhemos prefixos diferentes (NAC, ACT, SUB) para que você possa usar os mesmos nomes para o que muitas vezes é a mesma funcionalidade. Você pode, portanto, usar o mesmo nome descritivo, sem ter que inventar um nome diferente para cada fluxo.
  • Resta considerar se é ou não necessário aplicar este padrão. Um simples nanofluxo que muda um atributo booleano para ajustar o display não precisa deste padrão.
  • Diferenciar entre o idioma no qual o usuário vê a notificação (obviamente seu próprio idioma) e o idioma da notificação no registro de dados. No registro de dados, é mais conveniente armazenar a notificação em um idioma que os desenvolvedores estejam familiarizados.

 

Written by Reinier Stam
Desenvolvedor Mendix

Contato

Deixe-nos ajudá-lo a realizar seus sonhos.