Adjuntar acciones a trabajos de Apex asíncronos utilizando Finalizadores de transacciones (Beta)

Con Spring ’21, la función Finalizadores de transacciones está en versión beta. Un nuevo límite establece que un trabajo Colocable en cola que falló debido a una excepción no procesada solo se puede recolocar en cola sucesivamente cinco veces por un Finalizador de transacción. Este límite se aplica a una serie de fallos de trabajo Colocable en cola consecutivos. El contador se restablece cuando se completa el trabajo Colocable en cola sin una excepción no procesada. Los finalizadores se pueden implementar como una clase interna. Además, puede implementar interfaces Colocable en cola y Finalizador con la misma clase.

Dónde: Este cambio se aplica a Lightning Experience y Salesforce Classic. Para utilizar esta función beta, no es necesario activar la función 'Finalizadores de transacciones' en organizaciones borrador. La función Finalizadores de transacciones no está restringida a organizaciones borrador, se puede utilizar en organizaciones de producción y entornos sandbox, y se puede incluir en paquetes gestionados.

Nota

Nota

Como una función beta, Finalizadores de transacciones es una vista previa y no forma parte de los “Servicios” bajo su acuerdo general de suscripción con Salesforce. Utilice esta función a su única discreción y tome sus decisiones de compra solo en base a funciones y productos disponibles de forma general. Salesforce no garantiza la disponibilidad general de esta función dentro de ningún plazo de tiempo y podemos interrumpirla en cualquier momento. Esta función es únicamente para fines de evaluación, no para uso de producción. Se ofrece tal cual y no es compatible, y Salesforce no tiene responsabilidad por cualquier daño emergente o en conexión con ella. Todas las restricciones, la reserva de derechos de Salesforce, las obligaciones en lo referente a los Servicios y condiciones para aplicaciones que no son de Salesforce relacionadas y Contenido se aplican por igual a su uso de esta función. Puede proporcionar comentarios y sugerencias para esta función en el grupo TransactionFinalizers en la Trailblazer Community.

Cómo: La interfaz System.FinalizerContext contiene cuatro métodos.
  • Método getAsyncApexJobId: Devuelve el Id. del trabajo Colocable en cola para el que está definido este finalizador.
  • Método getRequestId: Devuelve el Id. de solicitud compartido por la ejecución del finalizador así como el trabajo colocable en cola al que está adjunto el finalizador. Este Id. compartido ayuda a filtrar registros de un trabajo colocable en cola y su finalizador adjunto.
  • Método getResult: Devuelve la enumeración System.ParentJobResult, que representa el resultado del trabajo Colocable en cola de Apex asíncrono principal al que está adjunto el finalizador. Los valores válidos para la enumeración son SUCCESS y UNHANDLED_EXCEPTION.
  • Método getException: Devuelve la excepción con la que falló el trabajo Colocable en cola cuando getResult es UNHANDLED_EXCEPTION, nulo en caso contrario.

Para adjuntar acciones a sus trabajos Colocables en cola, debe implementar la interfaz FinalizerContext. Solo se puede adjuntar una instancia de finalizador a cualquier trabajo Colocable en cola. Puede colocar en cola un solo trabajo de Apex asíncrono (Colocable en cola, futuro o en lote) en la implementación del método execute del finalizador. Las llamadas están permitidas en implementaciones de finalizador.

Para obtener más información acerca de la implementación de Finalizadores de transacciones, incluyendo ejemplo, consulte Finalizadores de transacciones (Beta) en Guía del desarrollador de Apex.