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 realizar 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 realizar 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 runtime mvSQL event() de dentro dos 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 mira 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 mirar 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 mirar 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.
Manipuladores de ação requerem uma linha em contexto
Manipuladores de ação são executados por linha e estão vinculados à linha de origem da ação, portanto, um manipulador de falha é executado apenas quando uma linha está em contexto no momento da falha. Se um evento falhar antes que qualquer linha seja estabelecida (por exemplo, quando uma consulta expira ou apresenta erro ao selecionar ou iterar as linhas de origem, em vez de durante o processamento de uma linha individual), não há linha para vincular o manipulador, e o manipulador de falha não é executado.
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 que falharam. O segundo painel está vinculado ao objeto de dados público EventHistory. Este último painel está vinculado ao primeiro, correspondendo RowId a SourceRowId.