Saltar al contenido

Manejo de Errores de Acción

Manejo de Errores

La mayoría de los tipos de acciones finalizan inmediatamente en respuesta a una excepción no controlada. La excepción se registra en el historial de eventos. Es responsabilidad del desarrollador validar los datos antes de realizar la acción.

Las acciones CRUD empresariales realizan operaciones multiplataforma. En algunos casos, la operación incluye una o más solicitudes de API a servicios de externo, como extremos REST. A menudo, es difícil validar los datos antes de realizar la acción. En cambio, los desarrolladores deben capturar y manejar la excepción.

Para ello, las acciones CRUD empresariales admiten las siguientes características:

Continuar en Error

Una acción CRUD empresarial recupera las filas de origen de la regla en lotes y ejecuta el evento (Insertar, Actualizar o Eliminar) para cada fila del lote. De manera predeterminada, una excepción no controlada finaliza la operación: no se procesan filas adicionales.

Sin embargo, cuando la opción Continuar en caso de error está habilitada, se captura la excepción. La acción continúa procesando las filas restantes y el evento se completa correctamente. Es responsabilidad del desarrollador manejar cualquier falla mediante un controlador de acciones.

Controladores de Acciones

Un controlador de acciones es fundamentalmente una acción. Sin embargo, los controladores de acciones se diferencian de las acciones en los siguientes aspectos:

  • Mientras que las acciones se registran para ejecutarse antes o después de un evento, los controladores de acciones se ejecutan después de que una acción tiene éxito o falla.

  • Mientras que las acciones están vinculadas a la fila del objeto de datos, los controladores de acciones están vinculados a la fuente de la acción.

Los controladores de acciones se pueden utilizar para los siguientes propósitos:

  • Registro del estado de filas individuales.

  • Seguimiento del progreso de una operación CRUD empresarial de larga duración.

  • Correlacionar fallas de filas con entradas en [EventHistory][ab eventhistory] objeto de datos públicos.

  • Revertir el efecto de acciones fallidas que no se pueden revertir mediante transacciones de base de datos.ab transactions].

Los desarrolladores pueden utilizar el [event()][ab fn event] Función de tiempo de ejecución mvSQL desde dentro de los controladores de acciones para acceder a información de eventos y de nivel de fila, incluyendo lo siguiente:

  • contextid: Un identificador único que se puede utilizar para correlacionar eventos que ocurren dentro de una sola operación, por ejemplo, los eventos ejecutados por una acción CRUD empresarial.

  • rowid: Un identificador único para la fila en la que se invocó el evento. En el caso de una regla CRUD empresarial, esto hace referencia a la fila de destino. En el caso de un controlador de acción, esto hace referencia a la fila de origen de la acción.

  • source.rowid: Un identificador único para la fila de origen de la regla CRUD empresarial. Esto se aplica a las reglas de inserción y actualización.

  • exception: Un mensaje de excepción. Este valor es accesible para los controladores de errores de acción si el evento falló como resultado de una excepción.

rowid y source.rowid las propiedades permiten a los desarrolladores correlacionar una falla a nivel de fila con una entrada en la EventHistory objeto de datos públicos. Una configuración típica podría incluir:

  • Acción: Una regla de inserción de CRUD empresarial que apunta a un extremo REST. La opción Continuar en caso de error está habilitada.

  • Manejador de éxito: Una regla CRUD de base de datos que actualiza la fila de origen de la acción para indicar que la fila se ha procesado. Esto se puede utilizar para informar el estado de una operación en curso o para excluir la fila de ejecuciones futuras.

  • Manejador de errores: Una regla CRUD de base de datos que actualiza la fila de origen de la acción para indicar que la fila ha fallado. La regla CRUD de base de datos utilizaría el event('rowid') Función para registrar el identificador de fila.

  • Controlador de reversión: Acciones que revierten el efecto de todas las acciones exitosas que se produjeron antes de una acción fallida. Este controlador no controla la acción fallida en sí.

Los desarrolladores deben exponer los errores en la interfaz de usuario. Por ejemplo, el desarrollador podría crear una página con dos paneles. El primer panel enumera las filas con errores. El segundo panel está vinculado a las filas con errores. EventHistory objeto de datos públicos. El último panel está vinculado al anterior, coincidiendo RowId a SourceRowId.