Szenario:
Sravan leitet ein Unternehmen und nutzt Salesforce Org, um die Gehälter seiner Mitarbeiter zu verfolgen. Es gibt nur 200 Mitarbeiter. Er hat alle Daten in einem „Konto“ -Objekt in der Salesforce -Datenbank gespeichert und ein benutzerdefiniertes Feld erstellt, das in einem Kontrollkästchen -Typ „gutgeschrieben“ wird und es auf True aktualisiert wird, wenn das Gehalt ihnen gutgeschrieben wird. Nach 2 Jahren stieg seine Angestellte auf 2 lakh an. Es ist nicht in der Lage, dieses Feld bei einer Transaktion zu aktualisieren. Also bat er den Salesforce -Entwickler, ihm dabei zu helfen. Dann schlug der Entwickler vor, dass der Batch Apex 2 Lakh -Datensätze gleichzeitig aktualisiert (Batch by Batch).
Batch -Apex:
Wie wir bereits diskutiert haben, ist Batch Apex ein asynchroner Prozess, in dem jeder Prozess auf einem anderen Thread ausgeführt wird. Es verarbeitet die Data -Stapel nach Stapel und hat bei diesem Betrieb 3 Schritte. Standardmäßig beträgt die Chargengröße 200, aber wir können bis zu 2000 ausdehnen. Die Mindestgröße beträgt 1.
Phase I:
Dies ist die „Start“ -Phase, in der die Datensätze aus der zu verarbeitenden Salesforce erfasst werden. Wir können die SOQL -Abfrage verwenden, um die Datensätze in dieser Phase zurückzugeben. Grundsätzlich implementiert die "Batch" -Klasse die "Datenbank".Batchierbar “.
Wir können die Start () -Methode anhand des QueryLocators (es zur Abfrage zurückkehren) aus der "Datenbank" -Klasse definieren. Es ist sehr wichtig, den Parameter batchableContext aus der Klasse „Datenbank“ zu übergeben. Innerhalb dieser Methode können wir die SOQL in der Datenbank angeben.GetQueryRocator () -Methode und geben Sie sie zurück.
Siehe die folgende Methodenstruktur:
Phase II:
Dies ist die Phase „Execute“, in der die Aufzeichnungsstapel aus der Startphase erfasst wird, die von der SOQL -Abfrage zurückgegeben wird. Es verarbeitet diese Datensätze und erhält die Datensätze erneut aus der Abfrage, bis alle Datensätze abgeschlossen sind.
Wir können die methode execute () definieren, indem wir als void (leer) zurückkehren. Es ist sehr wichtig, den BatchableContext als erster Parameter aus der "Datenbank" -Klasse zu übergeben, die der Start () -Methode ähnelt. Der zweite Parameter ist das Sobject (Salesforce Standard/Custom Object) in einer „Liste“.
Siehe die folgende Methodenstruktur:
Phase III:
Dies ist die Phase „Finish“, in der die Post -Operationen wie das Senden von E -Mails, das Anzeigen von Nachrichten usw., werden in dieser Phase genommen.
Wir können die Methode finde () definieren, indem wir als leer zurückkehren (leer). Es ist sehr wichtig, den BatchableContext als erster Parameter aus der "Datenbank" -Klasse zu übergeben, die der Start () -Methode ähnelt.
Siehe die folgende Methodenstruktur:
Gesamtstruktur:
Umgebungsaufbau
1. Gehen Sie zur "Developer Console" und gehen Sie zur Datei "Neue" aus. Wählen Sie dann "Apex -Klasse" (Apex -Klasse wird mit gespeichert .APXC -Erweiterung).
2. Sie können den Klassennamen nach dem Klicken auf "Apex -Klasse" angeben. Klicken Sie dann auf "OK".
3. Nach dem Schreiben der Klasse können Sie sie ausführen, indem Sie eine Instanz davon erstellen. Wir können es in das "anonyme Fenster" schreiben.
Anwendung 1: Aktualisierung
Schreiben wir eine "Batch -Klasse" in die Salesforce Standard -Objektkampagne, um den "Kampagnennamen" auf "LinuxHint Camp1" zu aktualisieren, wenn der Status "geplant" ist.
Globale Klasse batchExample1 implementiert die Datenbank.BatchierbarFühren Sie die Klasse durch, indem Sie eine Instanz erstellen.
BatchExample1 firstExample_1 = new batchExample1 ();Erläuterung:
Überprüfen:
Wir können überprüfen, ob die Charge ohne Fehler unter den „Apex -Jobs“ verarbeitet wird. Suchen Sie danach in "Schnellfind".
2. Um nach Ihrer "Batch" -Kasse zu überprüfen, können wir sehen, dass die „verarbeiteten Stapel“ 1 und „Fehler“ 0 sind.
3. Gehen Sie zur Registerkarte "Kampagne" und überprüfen Sie, ob der "Kampagnenname" aktualisiert wird oder nicht.
Es gibt nur einen Datensatz mit einem „geplanten“ Status. Der „Kampagnenname“ wird auf "LinuxHint Camp1" aktualisiert.
Anwendung 2: Löschen
Schreiben wir eine "Stapelklasse" über das Salesforce -Standardobjekt, das "Kampagne" zum Löschen eines Datensatzes ist.
Globale Klasse batchePample2 implementiert die Datenbank.batchierbarFühren Sie die Klasse durch, indem Sie eine Instanz erstellen.
BatchExample2 example_2 = new batchExample2 ();Erläuterung:
Überprüfen:
Wir können die gelöschten Datensätze unter dem "Recycle Bin" überprüfen. Gehen Sie zum "App Launcher" und überprüfen Sie danach.
Sie können eine sehen, die die Aufzeichnung aus dem Objekt "Kampagne" gelöscht wird.
Anwendung 3: Einfügung
Schreiben wir eine "Stapelklasse" in das Salesforce -Standardobjekt, das "Konto" zum Einfügen eines Datensatzes ist.
Global Class BatchePample3 implementiert die Datenbank.BatchierbarFühren Sie die Klasse durch, indem Sie eine Instanz erstellen.
BatchExample3 example_3 = new batchExample3 ();Erläuterung:
Überprüfen:
Gehen Sie zu "Konto" und suchen Sie nach dem Datensatz. Sie können es dort finden.
Klicken Sie auf "Kontoname", um den Datensatz mit Details zu öffnen.
Abschluss
Wir haben jetzt gelernt, wie man die Massen -DML -Operationen wie Einfügen, Aktualisieren und Löschen mit Batch Apex in Salesforce durchführt. Batch Apex ist ein asynchroner Prozess, bei dem jeder Prozess auf einem anderen Faden ausgeführt wird. Es verarbeitet die Data -Stapel nach Stapel und hat bei diesem Betrieb 3 Schritte. Standardmäßig beträgt die Chargengröße 200, aber wir können sie auf 2000 erweitern, in denen die Mindestgröße 1 beträgt. Wir haben die Standardobjekte „Kampagne“ und „Konto“ verwendet, um die DML -Operationen durchzuführen.