APEX-zelfstudie: Apex-programmeerklasse en coderingsvoorbeelden

Wat is Apex in Salesforce?

Top is een objectgeoriënteerde en sterk getypeerde programmeertaal ontwikkeld door Salesforce voor het bouwen van Software as a Service (SaaS) en Customer Relationship Management (CRM). Apex helpt ontwikkelaars SaaS-applicaties van derden te maken en bedrijfslogica toe te voegen aan systeemgebeurtenissen door back-enddatabaseondersteuning en client-serverinterfaces te bieden.

Apex helpt ontwikkelaars bedrijfslogica toe te voegen aan de systeemgebeurtenissen, zoals klikken op knoppen, gerelateerde recordupdates en Visualforce-pagina's. Apex heeft een soortgelijke syntaxis als Java. Registreer voor Salesforce om te leren hoe het CRM werkt

Kenmerken van Apex-programmeertaal

Dit zijn de belangrijke kenmerken van Salesforce Apex:

  • Apex is een hoofdletterongevoelige taal.
  • U kunt DML-bewerkingen zoals INSERT, UPDATE, UPSERT, DELETE uitvoeren op sObject-records met behulp van apex.
  • U kunt sObject-records opvragen met behulp van SOQL (Salesforce Object Query Language) en SOSL (Salesforce Object Search Language) in Apex.
  • Hiermee kunt u een hoofdstuk toets en voer ze uit om de code dekking en efficiëntie van de code in apex.
  • Apex wordt uitgevoerd in een omgeving met meerdere tenants, en Salesforce heeft een aantal gouverneurslimieten gedefinieerd die voorkomen dat een gebruiker de gedeelde bronnen beheert. Elke code die de limiet van de Salesforce-gouverneur overschrijdt, mislukt en er verschijnt een fout.
  • Salesforce-object kan worden gebruikt als gegevenstype in apex. Bijvoorbeeld -
    Account acc = new Account();

    Hier is Account een standaard Salesforce-object.

  • Apex upgradet automatisch bij elke Salesforce-release.

Wanneer moet een ontwikkelaar voor Apex kiezen?

Apex-code mag alleen worden geschreven als een bedrijfsscenario te comform isplex en kan niet worden geïmplementeerd met behulp van de vooraf gebouwde functionaliteit van Salesforce.

Following zijn de weinige scenario's waarin we apex-code moeten schrijven:

  • Om webservices te creëren die Salesforce integreren met andere applicaties.
  • Om aangepaste validatie op sobjects te implementeren.
  • Om aangepaste Apex-logica uit te voeren wanneer een DML-bewerking wordt uitgevoerd.
  • Om functionaliteit te implementeren die niet kan worden geïmplementeerd met behulp van bestaande workflowstromen en functionaliteit van procesbouwers.
  • Opzetten email diensten, moet u de verwerking van de inhoud, kopteksten en bijlagen van email met behulp van apex-code.

Werkstructuur van Apex

In deze Apex-tutorial leren we nu over de werkstructuur van Apex:

Following zijn de stroom van acties voor een apex-code:

  • Actie van ontwikkelaar: Alle door een ontwikkelaar geschreven Apex-code wordt gecompileerd in een reeks instructies die kunnen worden begrepen door de Apex Runtime-interpreter wanneer de ontwikkelaar de code op het platform opslaat en deze instructies vervolgens als metagegevens op het platform opslaan.
  • Actie van de eindgebruiker: Wanneer de gebruikersgebeurtenis een apex-code uitvoert, haalt de platformserver de gecompileerde instructies uit metagegevens en voert deze door de apex-interpreter voordat het resultaat wordt geretourneerd.
Werkstructuur van Apex
Werkstructuur van Apex

Apex-syntaxis

Variabele declaratie

Omdat apex een sterk getypeerde taal is, is het verplicht om een ​​variabele met datatype in apex te declareren.

Bijvoorbeeld:

contact con = new contact(); 

hier wordt de variabele con gedeclareerd met contact als datatype.

SOQL-query

SOQL staat voor Salesforce Object Query Language. SOQL wordt gebruikt om sObject-records op te halen uit de Salesforce-database. Bijvoorbeeld-

Account acc = [select id, name from Account Limit 1]; 

Met de bovenstaande query wordt de accountrecord opgehaald uit de Salesforce-database.

Loop-verklaring

Loop-instructie wordt gebruikt om de records in een lijst te doorlopen. Het aantal iteraties is gelijk aan het aantal records in de lijst. Bijvoorbeeld:

list<Account>listOfAccounts = [select id, name from account limit 100];
// iteration over the list of accounts
for(Account acc : listOfAccounts){
	//your logic
}

In het bovenstaande codefragment is listOfAccounts een variabele van het datatype list.

Verklaring inzake stroombeheersing

De stroomcontrole-instructie is handig als u bepaalde regels van de code wilt uitvoeren op basis van bepaalde voorwaarden.

Bijvoorbeeld:

list<Account>listOfAccounts = [select id, name from account limit 100];
// execute the logic if the size of the account list is greater than zero
if(listOfAccounts.size() >0){
	//your logic
}

Met het bovenstaande codefragment worden accountrecords uit de database opgevraagd en de lijstgrootte gecontroleerd.

DML-verklaring

DML staat voor datamanipulatietaal. DML-instructies worden gebruikt om gegevens in de Salesforce-database te manipuleren. Bijvoorbeeld -

Account acc = new Account(Name = ‘ Test Account’);
Insert acc; //DML statement to create account record.

Apex-ontwikkelomgeving

In deze Apex-programmeertutorial leren we over de Apex-ontwikkelomgeving:

Apex-code kan in zand worden ontwikkeldbox en ontwikkelaarseditie van Salesforce.

It is a best practice to develop the code in the sandbox omgeving en implementeert deze vervolgens in de productieomgeving.

Apex-ontwikkelomgeving

Hulpprogramma's voor het ontwikkelen van Apex-code: Following zijn de drie tools die beschikbaar zijn om apex-code te ontwikkelen in alle edities van Salesforce.

  • Force.com-ontwikkelaarsconsole
  • Force.com IDE
  • Code-editor in de Salesforce-gebruikersinterfaceYou

Gegevenstype in Apex

Following zijn de datatypen die door apex worden ondersteund:

Primitief

Geheel getal, Double, Long, Date, Date Time, String, ID, and Boolean are considered as primitive data types.All primitive data types are passed by value, not by reference.

Collecties

Er zijn drie soorten collecties beschikbaar in Apex

  • Lijst: het is een geordende verzameling primitieven, sObjects, verzamelingen of Apex-objecten op basis van indices.
  • Set: een ongeordende verzameling unieke primitieven.
  • Kaart: Het is een verzameling unieke, primitieve sleutels die worden toegewezen aan afzonderlijke waarden die primitieven, sObjects, verzamelingen of Apex-objecten kunnen zijn.

sObject

Dit is een speciaal gegevenstype in Salesforce. Het is vergelijkbaar met een tabel in SQL en bevat velden die vergelijkbaar zijn met kolommen in SQL.

enums

Enum is een abstract gegevenstype dat één waarde van een eindige reeks gespecificeerde identificatiegegevens opslaat

Klassen

Objecten

Het verwijst naar elk gegevenstype dat in Apex wordt ondersteund.

interfaces

Apex-toegangsspecificatie

Following zijn de toegangsspecificaties die door Apex worden ondersteund:

Publieke

Deze toegangsspecificatie geeft toegang tot een klasse, methode en variabele die door een apex binnen een naamruimte moet worden gebruikt.

Privé

Deze toegangsspecificatie geeft toegang tot een klasse, methode of variabele die lokaal moet worden gebruikt of binnen de codesectie die is gedefinieerd. Bij alle technieken hebben variabelen waarvoor geen enkele toegangsspecificatie is gedefinieerd, de standaardtoegangsspecificatie privé.

Beschermd

Deze toegangsspecificatie geeft toegang tot een variabele methode die kan worden gebruikt door alle interne klassen binnen de definiërende Apex-klasse.

Globaal

Deze toegangsspecificatie geeft toegang tot een klasse, methode en variabele die door een apex zowel binnen een naamruimte als buiten de naamruimte moet worden gebruikt. Het is een goede gewoonte om geen globaal zoekwoord te gebruiken totdat het nodig is.

Trefwoorden in Apex

Met delen

Als een klasse met dit sleutelwoord is gedefinieerd, worden alle regels voor delen van toepassing op de huidige gebruiker. Als dit sleutelwoord ontbreekt, wordt de code uitgevoerd onder de systeemcontext.

Bijvoorbeeld:

public with sharing class MyApexClass{
// sharing rules enforced when code in this class execute
}

Zonder te delen

Als een klasse met dit trefwoord wordt gedefinieerd, zijn niet alle regels voor delen van toepassing op de huidige gebruiker.

Bijvoorbeeld:

public without sharing class MyApexClass{
// sharing rules is not enforced when code in this class execute
}

Statisch

Een variabele, Method, wordt gedefinieerd met het statische trefwoord, wordt één keer geïnitialiseerd en aan de klasse gekoppeld. Statische variabelen, methoden kunnen rechtstreeks op klassenaam worden aangeroepen zonder de instantie van een klasse te creëren.

uiteinde

Een constante, Methode is gedefinieerd met het laatste trefwoord en kan niet worden overschreven. Bijvoorbeeld:

public class myCls {
static final Integer INT_CONST = 10;
}

Als u de waarde voor deze INT_CONST variabele probeert te overschrijven, krijgt u een uitzondering – System.FinalException: De laatste variabele is al geïnitialiseerd.

Retourneren

Dit trefwoord retourneert een waarde uit een methode. Bijvoorbeeld:

public String getName() {
return  'Test' ;
}

Null

Het definieert een nulconstante en kan aan een variabele worden toegewezen. Bijvoorbeeld

 Boolean b = null;

Virtueel

Als een klasse is gedefinieerd met een virtueel trefwoord, kan deze worden uitgebreid en overschreven.

Abstract

Als een klasse is gedefinieerd met abstract trefwoord, moet deze ten minste één methode met trefwoord abstract bevatten, en die methode mag alleen een handtekening hebben.

Bij voorbeeld

public abstract class MyAbstrtactClass {
abstract Integer myAbstractMethod1();
}

Apex-reeks

Een string is een reeks tekens zonder tekenlimieten. Bijvoorbeeld:

String name = 'Test';

Er zijn verschillende ingebouwde methoden die door de String-klasse in Salesforce worden geboden. Volgwing zijn de weinige veelgebruikte en meest gebruikte functies:

afkorten(max.breedte)

This method truncates a string to the specified length and returns it if the length of the given string is longer then specified length; otherwise, it returns the original string. If the value for maxWidth variable is less than 4, this method returns a runtime exception – System.StringException: Minimum abbreviation width is 4

Bijvoorbeeld:

String s = 'Hello World';
String s2 = s.abbreviate(8);
System.debug('s2'+s2); //Hello...

hoofdletter ()

Deze methode converteert de eerste letter van een string naar hoofdletters en retourneert deze.

Bijvoorbeeld:

String s = 'hello;
String s2 = s.capitalize();
System.assertEquals('Hello', s2);

bevat(subtekenreeks)

Deze methode retourneert true als de String die de methode aanroept de opgegeven subtekenreeks bevat.

String name1 = 'test1';
String name2 = 'test2';
Boolean flag = name.contains(name2);
System.debug('flag::',+flag); //true

is gelijk aan(stringOrId)

Deze methode retourneert true als de doorgegeven parameter niet nul is en dezelfde binaire reeks tekens aangeeft als de tekenreeks die de methode aanroept.

Bij het vergelijken van ID-waarden is het mogelijk dat de lengte van de ID's niet gelijk is. Bijvoorbeeld: als een string die 15 karakters id vertegenwoordigt wordt vergeleken met een object dat 18 karakters ID vertegenwoordigt, retourneert deze methode true. Bijvoorbeeld:

Id idValue15 = '001D000000Ju1zH';
Id idValue18 = '001D000000Ju1zHIAR';
Boolean result4 = stringValue15.equals(IdValue18);
System.debug('result4', +result4); //true

In het bovenstaande voorbeeld is de gelijkheidsmethode het vergelijken van object-ID van 15 tekens met object-ID van 18 tekens. Als beide ID's dezelfde binaire reeks vertegenwoordigen, wordt 'true' geretourneerd.

Gebruik deze methode om hoofdlettergevoelige vergelijkingen te maken.

escapeSingleQuotes(stringToEscape)

Deze methode voegt een escape-teken (\) toe vóór een enkel aanhalingsteken in een tekenreeks en retourneert dit teken. Deze methode voorkomt SOQL-injectie tijdens het maken van een dynamische SOQL-query. Deze methode zorgt ervoor dat alle enkele aanhalingstekens worden beschouwd als omsluitende tekenreeksen, in plaats van als databaseopdrachten.

Bijvoorbeeld:

String s = 'Hello Tom';
system.debug(s); // Outputs 'Hello Tom'
String escapedStr = String.escapeSingleQuotes(s);
// Outputs \'Hello Tom\'

verwijder(subtekenreeks)

Deze methode verwijdert al het voorkomen van de genoemde subtekenreeks uit de String die de methode aanroept en retourneert de resulterende tekenreeks.

Bij voorbeeld

String s1 = 'Salesforce and force.com';
String s2 = s1.remove('force');
System.debug( 's2'+ s2);// 'Sales and .com'

subtekenreeks(startIndex)

Deze methode retourneert een subtekenreeks die begint bij het teken bij startIndex en zich uitstrekt tot de laatste van de tekenreeks.

Bijvoorbeeld:

String s1 = 'hamburger';
String s2 = s1.substring(3);
System.debug('s2'+s2); //burger

omgekeerde()

Deze methode keert alle tekens van een string om en retourneert deze. Bijvoorbeeld:

String s = 'Hello';
String s2 = s.reverse();
System.debug('s2::::'+s2);// olleH  // Hello

trim(): Deze methode verwijdert alle voorafgaande witruimten uit een string en retourneert deze.

waardeVan(naarConverteren)

Deze methode retourneert de tekenreeksrepresentatie van het doorgegeven object.

Limieten voor Apex-gouverneur

Apex-gouverneurslimieten zijn de limieten die worden afgedwongen door de Apex-runtime-engine om ervoor te zorgen dat eventuele Apex-code en -processen van de startbaan de gedeelde bronnen niet controleren en de verwerking voor andere gebruikers in de multitenant-omgeving niet schenden. Deze limieten worden bij elke toptransactie geverifieerd. Volgwing zijn de gouverneurslimieten die door Salesforce zijn gedefinieerd voor elke toptransactie:

Omschrijving Begrenzing
SOQL queries that can be done in a synchronous transaction 100
SOQL queries that can be done in an Asynchronous transaction 200
Records die kunnen worden opgehaald door een SOQL-query 50000
Records die kunnen worden opgehaald door Database.getQueryLocator 10000
SOSL-query's die kunnen worden uitgevoerd in een Apex-transactie 20
Records die kunnen worden opgehaald met een SOSL-query 2000
DML-instructies die kunnen worden uitgevoerd in een Apex-transactie 150
Records die kunnen worden verwerkt als resultaat van een DML-instructie, Approval.process of database.emptyRecycleBin 10000
Callouts die kunnen worden uitgevoerd in een toptransactie. 100
Cumulatieve time-outlimiet voor alle oproepen die worden uitgevoerd in een Apex-transactie 120 seconden
Beperk het aantal Apex-taken dat met System.enqueueJob aan de wachtrij kan worden toegevoegd 50
Uitvoeringstermijn voor elke Apex-transactie 10 minuten
Beperking van het aantal tekens dat in een Apex-klasse en trigger kan worden gebruikt 1 miljoen
CPU time limit for synchronous transaction 10,000 milliseconden
CPU time limit for asynchronous transaction 60,000 milliseconden

Apex-getter en setter

De Apex-eigenschap is vergelijkbaar met de Apex-variabele. Getter en setter zijn nodig voor een topeigenschap. Getter en setter kunnen worden gebruikt om code uit te voeren voordat de eigenschapswaarde wordt geopend of gewijzigd. De code in de get-accessor wordt uitgevoerd wanneer een eigenschapswaarde wordt gelezen. De code in de set-accessor wordt uitgevoerd wanneer een eigenschapswaarde wordt gewijzigd. Elke eigenschap met get accessor wordt beschouwd als alleen-lezen, elke eigenschap met set accessor wordt geacht alleen te schrijven, elke eigenschap met zowel get als set accessor wordt beschouwd als lezen-schrijven. Syntaxis van een apex-eigenschap:

public class myApexClass {
// Property declaration
	access_modifierreturn_typeproperty_name {
	get {
			//code  
		}
		set{
			//code
		}
	}

Hier is access_modifier de toegangsmodifier van de eigenschap. return_type is het dataType van de eigenschap. property_name is de naam van de eigenschap.

Hieronder ziet u een voorbeeld van een Apex-eigenschap met zowel get- als set-accessor.

public class myApex{
	public String name{
		get{ return name;}
		set{ name = 'Test';}
	}
}

Hier is de eigenschapsnaam naam, en het is een openbare eigenschap, en het retourneert een tekenreeks dataType.

Het is niet verplicht om code in het get- en set-blok te hebben. Deze blokken kunnen leeg worden gelaten om een ​​automatische eigenschap te definiëren. Bijvoorbeeld:

public double MyReadWriteProp{ get; set; } 

Accessor ophalen en instellen kan ook worden gedefinieerd met hun toegangsmodifier. Als een accessor is gedefinieerd met een modifier, overschrijft deze de toegangsmodifier voor de eigenschap. Bijvoorbeeld:

public String name{private get; set;}// name is private for read and public to write.

Apex-klasse

Een Apex-klasse is een blauwdruk of sjabloon waaruit objecten worden gemaakt. Een object is de instantie van een klasse.

Er zijn drie manieren om apex-klassen te maken in Salesforce:

Developer Console

Force.com IDE

Detailpagina van Apex-klasse.

In apex kun je een buitenste klasse definiëren, ook wel topniveauklasse genoemd, en je kunt ook klassen definiëren binnen een buitenste klasse, genaamd binnenste klassen.

Het is verplicht om toegangsmodifiers zoals global of public te gebruiken in de declaratie van de buitenste klasse.

Het is niet nodig om de toegangsmodifier te gebruiken bij de declaratie van innerlijke klassen.

Een topklasse wordt gedefinieerd met behulp van het class-trefwoord gevolgd door de klassenaam.

Het trefwoord Extends wordt gebruikt om een ​​bestaande klasse uit te breiden met een Apex-klasse, en het trefwoord Implements wordt gebruikt om een ​​interface te implementeren met een Apex-klasse.

Salesforce Apex ondersteunt geen meerdere overnames; een apex-klasse kan slechts één bestaande apex-klasse uitbreiden, maar kan wel meerdere interfaces implementeren.

Een apex-klasse kan een door de gebruiker gedefinieerde constructor bevatten, en als een door de gebruiker gedefinieerde constructor niet beschikbaar is, wordt een standaardconstructor gebruikt. De code in een constructor wordt uitgevoerd wanneer een instantie van een klasse wordt gemaakt.

Syntaxis van het voorbeeld van de Apex-klasse:

public class myApexClass{
// variable declaration
//constructor
	public myApexClass{
	}
//methods declaration
}

Het nieuwe sleutelwoord wordt gebruikt om een ​​exemplaar van een apex-klasse te maken. Hieronder vindt u de syntaxis voor het maken van een exemplaar van een Apex-klasse.

myApexClass obj = new myApexClass();

Apex-trigger

Met Apex-triggers kunt u aangepaste Apex uitvoeren voor en nadat een DML-bewerking is uitgevoerd.

Apex-ondersteuning volgtwing twee soorten triggers:

Vóór triggers: deze triggers worden gebruikt om de veldwaarde te valideren en bij te werken voordat de record in de database wordt opgeslagen.

Na triggers: deze triggers worden gebruikt om toegang te krijgen tot de velden (record-ID, LastModifiedDate-veld) die door het systeem zijn ingesteld na een record dat is vastgelegd in de database. Deze veldwaarde kan worden gebruikt om andere records te wijzigen. Records die na triggers worden geactiveerd, zijn alleen-lezen.

Het is een best practice om omvangrijke triggers te schrijven. Een omvangrijke trigger kan zowel één record als meerdere records tegelijk verwerken.

Syntaxis van een apex-trigger:

trigger TriggerName on ObjectName (trigger_events) {
	//Code_block
 }

Hier is TriggerName de naam van de trigger, ObjectName is de naam van het object waarop de trigger moet worden geschreven, trigger_events is de door komma's gescheiden lijst met gebeurtenissen.

Following zijn de gebeurtenissen die worden ondersteund door de apex-triggers: vóór het invoegen, vóór de update, vóór het verwijderen, na het invoegen, na een update, na het verwijderen, na het ongedaan maken van de verwijdering.

Statische trefwoorden kunnen niet worden gebruikt in een Apex-trigger. Alle trefwoorden die van toepassing zijn op binnenklassen kunnen in een Apex-trigger worden gebruikt.

Er zijn impliciete variabelen gedefinieerd door elke trigger die de runtimecontext retourneert. Deze variabelen worden in het systeem gedefinieerd. Trigger-klasse. Deze variabelen worden contextvariabelen genoemd. Onderstaande schermafbeelding toont de contextvariabele die wordt ondersteund door de Apex-trigger.

Apex-trigger

Apex-trigger

Following zijn de overweging van de contextvariabele in de apex-trigger:

  • Gebruik de trigger.new en trigger.old niet in DML-bewerkingen.
  • Trigger.new kan niet worden verwijderd.
  • Trigger.new is alleen-lezen.
  • Trigger.new kan alleen worden gebruikt om de waarden van de velden op hetzelfde object vóór de trigger te wijzigen.

Onderstaande schermafbeeldingen geven een overzicht van de overwegingen over specifieke acties bij verschillende triggergebeurtenissen.

Apex-trigger

Apex-trigger

Batchklasse in Apex

Batch class in salesforce is used to process a large number of records that would exceed the apex governor limits if processed normally. Batch class executes the code asyncronisch.

Following zijn de voordelen van batchklasse:

  • Batchklasse verwerkt de gegevens in blokken en als een blok niet succesvol kan worden verwerkt, worden alle succesvol verwerkte blokken niet teruggedraaid.
  • Elk stuk gegevens in een batchklasse wordt verwerkt met een nieuwe set gouverneurslimieten die ervoor zorgen dat de code binnen de uitvoeringslimieten van de gouverneur wordt uitgevoerd.
  • Database. Een batch-interface moet worden geïmplementeerd door een Apex-klasse om als batch-klasse te kunnen worden gebruikt. Het biedt drie methoden die door de batchklasse moeten worden geïmplementeerd.

Following zijn de drie methoden die door Database worden geboden. Batchbare interface:

1.start()

Deze methode genereert de omvang van de records of objecten die moeten worden verwerkt door de interfacemethode execute. Tijdens de uitvoering van de batch wordt deze slechts één keer aangeroepen. Deze methode retourneert een Database.QueryLocator-object of een Iterable. Het aantal records dat door een SQL-query wordt opgehaald met behulp van het Database.QueryLocator-object is 50 miljoen records, maar bij gebruik van een iterabele is het totale aantal records dat kan worden opgehaald door de SQL-query slechts 50000. Iterable wordt gebruikt om com te genererenplex reikwijdte voor batchklasse.

Syntaxis van startmethode:

global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}

2. uitvoeren()

Deze methode wordt gebruikt voor de verwerking van elk gegevensfragment. Voor elk deel van de records wordt de execute-methode aangeroepen. De standaard batchgrootte voor uitvoering is 200 records. De methode Execute heeft twee argumenten nodig:

Een verwijzing naar het Database.BatchableContext-object,

Een lijst met sObjecten, zoals Lijst of een lijst met geparametriseerde typen. Syntaxis van de uitvoeringsmethode:

global void execute(Database.BatchableContext BC, list<P>){}

3.finish()

De finishmethode wordt één keer aangeroepen tijdens de uitvoering van de batchklasse. Nabewerkingen kunnen worden uitgevoerd in de afwerkingsmethode. Bijvoorbeeld: het versturen van de bevestiging email. Deze methode wordt aangeroepen wanneer de hele batch wordt verwerkt. Syntaxis van Finish-methode:

global void finish(Database.BatchableContext BC){}

Database.BatchableContext-object

Elke methode van de database. Batchbare interface heeft een verwijzing naar het Database.BatchableContext-object.

Dit object wordt gebruikt om de voortgang van de batchtaak bij te houden.

Following zijn instantiemethoden geleverd door BatchableContext:

  • getChildJobId(): Deze methode retourneert de ID van een batchtaak die momenteel wordt verwerkt.
  • getJobId(): Deze methode retourneert de ID van de batchtaak.

Hieronder vindt u de syntaxis van een batchklasse:

global class MyBatchClass implements Database.Batchable<sObject> {
	global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {
// collect the batches of records or objects to be passed to execute
}
global void execute(Database.BatchableContextbc, List<P> records){
// process each batch of records
}
global void finish(Database.BatchableContextbc){
// execute any post-processing operations
}
}

Database.executeBatch-methode

De Database.executeBatch-methode wordt gebruikt voor het uitvoeren van een batchklasse.

Deze methode heeft twee parameters nodig: instantie van de batchklasse die moet worden verwerkt, optieparameter om de batchgrootte op te geven, als deze niet is opgegeven, wordt de standaardgrootte van 200 gebruikt.

Syntaxis van Database.executeBatch:

Database.executeBatch(myBatchObject,scope)

Een batchklassenaam MyBatchClass uitvoeren:

MyBatchClassmyBatchObject = new MyBatchClass(); 
Id batchId = Database.executeBatch(myBatchObject,100);

Database.stateful

Batchklasse is standaard staatloos. Elke keer dat de execute-methode wordt aangeroepen, wordt er een nieuwe kopie van een object ontvangen en worden alle variabelen van de klasse geïnitialiseerd.

Database.stateful is geïmplementeerd om een ​​batchklasse stateful te maken.

Als uw batchklasse de Database , stateful interface behouden alle instantievariabelen hun waarden, maar de statische variabelen worden tussen de transacties opnieuw ingesteld.

Samengevat

  • Apex is een sterk getypeerde, objectgeoriënteerde programmeertaal dat compileert en draait op het force.com-platform
  • Apex-programmeertaal is een hoofdletterongevoelige taal
  • Er zijn twee soorten acties in Apex: 1) Actie van de ontwikkelaar en 2) Actie van de eindgebruiker
  • Apex helpt u bij het creëren van webservices die Salesforce integreren met andere applicaties.
  • Gegevenstypen die door apex worden ondersteund zijn: 1).Primitief 2) Verzamelingen 3) sObject, Enums, 4) Klassen, 5) Objecten en interfaces
  • Publiek, Privé, Beschermd en Globaal worden door Apex gespecificeerd
  • Trefwoorden die in Apex worden gebruikt zijn: 1) Met delen, 2) Zonder delen, 3) Statisch, 4) Final 5)Return, 6)Null, 7) Virtueel, 8) Abstract
  • Een string is een reeks tekens zonder tekenlimieten
  • Apex-gouverneurslimieten zijn de limieten die door de Apex-runtime-engine worden afgedwongen om ervoor te zorgen dat alle Apex-code en -processen van de startbaan
  • Getter en setter kunnen worden gebruikt om code uit te voeren voordat de eigenschapswaarde wordt geopend of gewijzigd
  • Er zijn drie manieren om apex-klassen te maken in Salesforce: 1) Developer Console 2) Force.com IDE en 3) Apex-klassedetailpagina.
  • Met Apex-triggers kunt u aangepaste Apex uitvoeren voor en nadat een DML-bewerking is uitgevoerd.
  • Batchklasse in Salesforce wordt gebruikt voor het verwerken van een groot aantal records die bij normale verwerking de Apex Governor-limieten zouden overschrijden.