Fermer

décembre 20, 2023

Salesforce Batch Apex pour supprimer les enregistrements créés au cours de la dernière année


Bonjour les pionniers,

Dans cet article de blog, nous allons écrire un lot dans Apex pour supprimer les enregistrements de l’objet ciblé.

Critères d’acceptation: écrivez une classe par lots dans Apex pour supprimer tous les enregistrements de compte créés au cours de la dernière année.

Batch Apex est un puissant outil Salesforce qui permet aux développeurs de créer et exécuter des lots d’enregistrements. Il vous aide à traiter jusqu’à un million d’enregistrements de manière asynchrone et augmente la productivité de votre organisation en réduisant le temps nécessaire pour effectuer des activités spécifiées.

Batch Apex est généralement votre meilleure option si vous avez un grand nombre d’enregistrements à traiter, comme le nettoyage ou l’archivage des données, etc.

Dans cet exemple, nous développerons également une classe de lots qui supprimera les enregistrements de compte dans les lots créés au cours de la dernière année.

Alors, commençons.

Lot Apex pour supprimer des enregistrements :

public class DeleteAccountsBatch implements Database.Batchable<sObject> {

    public Database.QueryLocator start(Database.BatchableContext context) {
        // Query all Account records created in the last 1 year
        Date oneYearAgo = System.today().addMonths(-12); 
                    // OR Date.today().addYears(-1); //Use anyone of them
        String query = 'SELECT Id FROM Account WHERE CreatedDate >= :oneYearAgo';
        return Database.getQueryLocator(query);
    }

    public void execute(Database.BatchableContext context, List<Account> scope) {
        // Delete the Account records in the current batch
        delete scope;
    }

    public void finish(Database.BatchableContext context) {
        // Execute any post-processing logic if needed
    }
}

Cette classe batch, nommée DeleteAccountsBatch, implémente l’interface Database.Batchable.

Décomposons cette classe batch et comprenons comment elle fonctionne.

1. Méthode de démarrage :

La méthode Start définit le début du travail par lots et renvoie un Database.QueryLocator pour spécifier les enregistrements à traiter.

Dans ce cas, il interroge tous les enregistrements de compte créés au cours de la dernière année.

2. Exécuter la méthode :

Il traite les enregistrements renvoyés par la méthode start par lots. Nous devons écrire la logique réelle que nous devons exécuter.

Dans l’exemple ci-dessus, la logique supprime simplement les enregistrements de compte dans le lot actuel.

3. Méthode de finition :

Il définit la logique de fin du travail par lots. Cette méthode est exécutée une fois que tous les lots ont été traités.

Vous pouvez ajouter n’importe quelle logique de post-traitement ici si nécessaire.

Après tout cela, il s’agit de l’exécution de la classe batch. Pour exécuter le lot ci-dessus, vous pouvez utiliser le script Apex suivant :

DeleteAccountsBatch batchJob = new DeleteAccountsBatch();
Database.executeBatch(batchJob);

Cela démarrera le travail par lots et supprimera tous les enregistrements de compte créés au cours de la dernière année par lots.

Notez que la méthode d’exécution est appelée pour chaque lot, la suppression est donc effectuée par morceaux pour éviter d’atteindre les limites du gouverneur.

Conclusion:

De cette façon, nous avons développé une classe batch qui supprime tous les enregistrements créés au cours de la dernière année.

Nous pouvons également le rendre planifiable, ce que nous verrons dans la prochaine partie de ce blog.

En attendant, restez à l’écoute !!

Les références:

  1. Lot Apex dans Salesforce
  2. Apex asynchrone dans Salesforce

Vous pouvez également lire :

1.Une introduction à Salesforce CPQ
2.Salesforce CPQ et ses fonctionnalités clés
3.Libérer la puissance de l’IA : Einstein pour les développeurs
4.Révolutionner l’engagement client : le chatbot Salesforce Einstein






Source link

décembre 20, 2023