Actions jointes à des tâches Apex asynchrones à l'aide de finaliseurs de transaction (bêta)

Dans Spring ’21, la fonctionnalité Finaliseurs de transaction est en version bêta. Une nouvelle limite détermine qu'une tâche Queueable échouée en raison d'une exception non gérée peut être remise en file d'attente seulement cinq fois de suite par un Finaliseur de transaction. Cette limite s'applique à une série de tâches Queueable échouées consécutives. Le décompte est réinitialisé lorsque la tâche Queueable est exécutée sans exception non gérée. Les Finaliseurs peuvent être implémentés en tant que classe interne. Vous pouvez également implémenter des interfaces Queueable et Finalizer avec la même classe.

Où : cette modification s’applique à Lightning Experience et à Salesforce Classic. Pour utiliser cette fonctionnalité bêta, il n'est pas nécessaire d'activer la fonctionnalité « Finaliseurs de transaction » dans des organisations tests. La fonctionnalité Finaliseurs de transaction n'est pas limitée aux organisations tests, peut être utilisée dans des organisations de production et sandbox, et peut être incluse dans des packages gérés.

Remarque

Remarque

En tant que fonctionnalité bêta, Finaliseurs de transaction correspond à un aperçu et n'est pas considérée comme un « Service » dans le cadre de votre contrat principal d'abonnement avec Salesforce. Utilisez cette fonctionnalité à votre seule discrétion et motivez vos décisions d'achat uniquement en fonction des produits et des fonctionnalités globalement disponibles. Salesforce ne garantit pas la disponibilité de cette fonctionnalité sur une période spécifique ou à terme, et nous pouvons l'arrêter à tout moment. Cette fonctionnalité sert exclusivement à des fins d'évaluation et ne doit pas être utilisée en production. Elle est offerte en l'état, n'est pas prise en charge et Salesforce ne sera en aucun cas tenue responsable de tout préjudice ou dommage résultant de cette fonctionnalité ou en relation avec cette fonctionnalité. L'ensemble des restrictions, droits réservés de Salesforce et obligations à l'égard des Services, ainsi que les conditions des applications et des contenus non-Salesforce associés, s'appliquent à votre utilisation de cette fonctionnalité. Vous pouvez formuler des commentaires et des suggestions sur cette fonctionnalité dans le groupe TransactionFinalizers de la Trailblazer Community.

Comment : l'interface System.FinalizerContext contient quatre méthodes.
  • Méthode getAsyncApexJobId : Renvoie l'ID de la tâche Queueable pour laquelle ce finaliseur est défini.
  • Méthode getRequestId : renvoie l'ID de requête partagé par l'exécution du finaliseur et la tâche Queueable à laquelle le finaliseur est joint. Cet ID partagé aide à filtrer les journaux d'une tâche Queueable et de son finaliseur joint.
  • Méthode getResult : Renvoie l'énumération System.ParentJobResult, qui représente le résultat de la tâche Queueable asynchrone Apex parente à laquelle le finaliseur est joint. Les valeurs correctes pour l'énumération sont SUCCESS et UNHANDLED_EXCEPTION.
  • Méthode getException : Renvoie l'exception avec laquelle la tâche Queueable a échoué lorsque getResult est UNHANDLED_EXCEPTION, sinon null.

Pour rejoindre des actions à vos tâches Queueable, vous devez implémenter l'interface FinalizerContext. Une seule instance finaliseur peut être jointe à une tâche Queueable. Vous pouvez mettre en file d'attente une seule tâche Apex asynchrone (Queueable, future ou batch) dans l'implémentation de la méthode execute du finaliseur. Les appels externes sont autorisés dans les implantations de finaliseur.

Pour plus d'informations sur l'implémentation de Finaliseurs de transaction, avec des exemples, consultez Transaction Finalizers (Beta) dans le Apex Developer Guide.