Tratamento de erros de ação no Jitterbit App Builder
Tratamento de erros
A maioria dos tipos de ação termina imediatamente em resposta a uma exceção não tratada. A exceção é registrada no histórico de eventos. É responsabilidade do desenvolvedor validar os dados antes de executar a ação.
As ações de Business CRUD realizam operações entre plataformas. Em alguns casos, a operação inclui uma ou mais solicitações de API para serviços de terceiros, como endpoints REST. Muitas vezes, é difícil validar os dados antes de executar a ação. Em vez disso, os desenvolvedores precisam capturar e tratar a exceção.
Para isso, as ações de Business CRUD suportam os seguintes recursos:
Continuar em caso de erro
Uma ação de Business CRUD recupera as linhas de origem da regra em lotes e executa o evento (Inserir, Atualizar ou Excluir) para cada linha no lote. Por padrão, uma exceção não tratada termina a operação: nenhuma linha adicional é processada.
Quando a opção Continuar em caso de erro está habilitada, no entanto, a exceção é capturada. A ação continua processando as linhas restantes, e o evento é concluído com sucesso. Torna-se responsabilidade do desenvolvedor tratar quaisquer falhas usando um manipulador de ação.
Manipuladores de ação
Um manipulador de ação é fundamentalmente uma ação. No entanto, os manipuladores de ação diferem das ações das seguintes maneiras:
-
Enquanto as ações são registradas para serem executadas antes ou depois de um evento, os manipuladores de ação são executados após uma ação ser bem-sucedida ou falhar.
-
Enquanto as ações estão vinculadas à linha do objeto de dados, os manipuladores de ação estão vinculados à fonte da ação.
Os manipuladores de ação podem ser usados para os seguintes propósitos:
-
Registrar o status de linhas individuais.
-
Rastrear o progresso de uma operação de Business CRUD de longa duração.
-
Correlacionar falhas de linha com entradas no objeto de dados público EventHistory.
-
Revertendo o efeito de ações falhadas que não podem ser revertidas por transações de banco de dados.
Os desenvolvedores podem usar a função de tempo de execução event() do mvSQL a partir de manipuladores de ação para acessar informações de evento e nível de linha, incluindo o seguinte:
-
contextid: Um identificador único que pode ser usado para correlacionar eventos que ocorrem dentro de uma única operação, por exemplo, os eventos executados por uma ação CRUD de negócios. -
rowid: Um identificador único para a linha na qual o evento foi invocado. No caso de uma regra CRUD de negócios, isso se refere à linha alvo. No caso de um manipulador de ação, isso se refere à linha de origem da ação. -
source.rowid: Um identificador único para a linha de origem da regra CRUD de negócios. Isso se aplica a regras de inserção e atualização. -
exception: Uma mensagem de exceção. Este valor é acessível aos manipuladores de falha de ação se o evento falhou como resultado de uma exceção.
As propriedades rowid e source.rowid permitem que os desenvolvedores correlacionem uma falha em nível de linha com uma entrada no objeto de dados público EventHistory. Uma configuração típica pode incluir:
-
Ação: Uma regra de inserção CRUD de negócios que visa um endpoint REST. A opção Continuar em Caso de Erro está habilitada.
-
Manipulador de Sucesso: Uma regra CRUD de banco de dados que atualiza a linha de origem da ação para indicar que a linha foi processada. Isso pode ser usado para relatar o status de uma operação em andamento ou para excluir a linha de execuções futuras. (Para que este manipulador seja visível, a regra associada deve visar a camada de lógica.)
-
Manipulador de Falha: Uma regra CRUD de banco de dados que atualiza a linha de origem da ação para indicar que a linha falhou. A regra CRUD de banco de dados usaria a função
event('rowid')para registrar o identificador da linha. (Para que este manipulador seja visível, a regra associada deve visar a camada de lógica.) -
Manipulador de Reversão: Ações que revertam o efeito de todas as ações bem-sucedidas ocorridas antes de uma ação falhada. A ação falhada em si não é tratada por este manipulador.
Os desenvolvedores devem expor as falhas na interface do usuário. Por exemplo, o desenvolvedor poderia construir uma página com dois painéis. O primeiro painel enumera as linhas com falha. O segundo painel está vinculado ao objeto de dados público EventHistory. Este último painel está vinculado ao primeiro, correspondendo RowId a SourceRowId.