Tutoriel APEX : classe de programmation Apex et exemples de codage

Qu’est-ce qu’Apex dans Salesforce ?

Apex est un langage de programmation orienté objet et fortement typé développé par Salesforce pour la création de logiciels en tant que service (SaaS) et de gestion de la relation client (CRM). Apex aide les développeurs à créer des applications SaaS tierces et à ajouter une logique métier aux événements système en fournissant une prise en charge des bases de données principales et des interfaces client-serveur.

Apex aide les développeurs à ajouter une logique métier aux événements système tels que les clics sur les boutons, les mises à jour des enregistrements associés et les pages Visualforce. Apex a une syntaxe similaire à Java. S'inscrire à Salesforce pour savoir comment fonctionne le CRM

Caractéristiques du langage de programmation Apex

Voici les fonctionnalités importantes de Salesforce Apex :

  • Apex est un langage insensible à la casse.
  • Vous pouvez effectuer des opérations DML telles que INSERT, UPDATE, UPSERT, DELETE sur les enregistrements sObject à l'aide d'apex.
  • Vous pouvez interroger des enregistrements sObject à l'aide de SOQL (langage de requête d'objet Salesforce) et SOSL (langage de recherche d'objet Salesforce) dans Apex.
  • Permet de créer un Test de l'unité et exécutez-les pour vérifier le couverture de code et l'efficacité du code au sommet.
  • Apex s'exécute dans un environnement multi-tenant et Salesforce a défini certaines limites de gouverneur qui empêchent un utilisateur de contrôler les ressources partagées. Tout code qui dépasse la limite du gouverneur Salesforce échoue et une erreur apparaît.
  • L'objet Salesforce peut être utilisé comme type de données au sommet. Par exemple -
    Account acc = new Account();

    ,ici Account est un objet Salesforce standard.

  • Apex est automatiquement mis à niveau avec chaque version de Salesforce.

Quand le développeur devrait-il choisir Apex

Le code Apex ne doit être écrit que si un scénario commercial est trop complexe et ne peut pas être implémenté à l'aide des fonctionnalités prédéfinies fournies par Salesforce.

Voici les quelques scénarios dans lesquels nous devons écrire du code apex :

  • Pour créer des services Web qui intègrent Salesforce à d'autres applications.
  • Pour implémenter une validation personnalisée sur les sobjects.
  • Pour exécuter une logique apex personnalisée lorsqu’une opération DML est effectuée.
  • Pour implémenter des fonctionnalités qui ne peuvent pas être implémentées à l'aide des flux de flux de travail existants et des fonctionnalités des générateurs de processus.
  • Installer services de messagerie, vous devez inclure le traitement du contenu, des en-têtes et des pièces jointes des e-mails à l'aide du code apex.

Structure de travail d'Apex

Maintenant, dans ce didacticiel Apex, nous allons découvrir la structure de travail d'Apex :

Voici le flux d’actions pour un code apex :

  • Action du développeur : tout le code Apex écrit par un développeur est compilé dans un ensemble d'instructions qui peuvent être comprises par l'interpréteur d'exécution Apex lorsque le développeur enregistre le code sur la plate-forme et ces instructions sont ensuite enregistrées sous forme de métadonnées sur la plate-forme.
  • Action de l'utilisateur final : lorsque l'événement utilisateur exécute un code apex, le serveur de plateforme récupère les instructions compilées à partir des métadonnées et les exécute via l'interpréteur apex avant de renvoyer le résultat.
Structure de travail d'Apex
Structure de travail d'Apex

Syntaxe Apex

Déclaration de variable

Comme apex est un langage fortement typé, il est obligatoire de déclarer une variable avec un type de données en apex.

Par exemple :

contact con = new contact(); 

ici, la variable con est déclarée avec contact comme type de données.

Requête SOQL

SOQL signifie langage de requête d'objet Salesforce. SOQL est utilisé pour récupérer les enregistrements sObject de la base de données Salesforce. Par exemple-

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

La requête ci-dessus récupère l'enregistrement de compte de la base de données Salesforce.

Instruction de boucle

L'instruction de boucle est utilisée pour parcourir les enregistrements d'une liste. Le nombre d'itérations est égal au nombre d'enregistrements dans la liste. Par exemple:

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

Dans l'extrait de code ci-dessus, listOfAccounts est une variable de type de données liste.

Déclaration de contrôle de flux

L'instruction de contrôle de flux est utile lorsque vous souhaitez exécuter certaines lignes du code en fonction de certaines conditions.

Par exemple :

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
}

L'extrait de code ci-dessus interroge les enregistrements de compte dans la base de données et vérifie la taille de la liste.

Déclaration DML

DML signifie langage de manipulation de données. Les instructions DML sont utilisées pour manipuler les données dans la base de données Salesforce. Par exemple -

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

Environnement de développement Apex

Maintenant, dans ce didacticiel de programmation Apex, nous allons en apprendre davantage sur l'environnement de développement Apex :

Le code Apex peut être développé dans l'édition sandbox et l'édition développeur de Salesforce.

Il est recommandé de développer le code dans l'environnement sandbox, puis de le déployer dans l'environnement de production.

Environnement de développement Apex

Outils de développement de code Apex : voici les trois outils disponibles pour développer du code Apex dans toutes les éditions de Salesforce.

  • Console de développement Force.com
  • IDE Force.com
  • Éditeur de code dans l'interface utilisateur de SalesforceVous

Type de données dans Apex

Voici les types de données pris en charge par apex :

Primitif

Entier, Double, Long, Date, Date Time, String, ID et Boolean sont considérés comme des types de données primitifs. Tous les types de données primitifs sont transmis par valeur et non par référence.

Collections

Trois types de collecte sont disponibles dans Apex

  • Liste : Il s'agit d'une collection ordonnée de primitives, de sObjects, de collections ou d'objets Apex basés sur des indices.
  • Ensemble : une collection désordonnée de primitives uniques.
  • Carte : il s'agit d'une collection de clés primitives uniques qui correspondent à des valeurs uniques qui peuvent être des primitives, des sObjects, des collections ou des objets Apex.

sObjet

Il s'agit d'un type de données spécial dans Salesforce. C'est semblable à un tableau dans SQL et contient des champs similaires aux colonnes de SQL.

Enums

Enum est un type de données abstrait qui stocke une valeur d'un ensemble fini d'identifiants spécifiés

Cours

Objets

Il fait référence à tout type de données pris en charge dans Apex.

Interfaces

Spécificateur d'accès Apex

Voici les spécificateurs d'accès pris en charge par apex :

Public

Ce spécificateur d'accès donne accès à une classe, une méthode, une variable à utiliser par un sommet dans un espace de noms.

Privé

Ce spécificateur d'accès donne accès à une classe, une méthode, une variable à utiliser localement ou dans la section de code qu'il est défini. Dans toute la technique, les variables pour lesquelles aucun spécificateur d'accès n'est défini ont le spécificateur d'accès par défaut privé.

Protégé

Ce spécificateur d'accès donne accès à une méthode, variable à utiliser par toutes les classes internes au sein de la classe Apex définissant.

Global

Ce spécificateur d'accès donne accès à une classe, une méthode, une variable à utiliser par un sommet dans un espace de noms ainsi qu'en dehors de l'espace de noms. Il est recommandé de ne pas utiliser de mot-clé global tant que cela n'est pas nécessaire.

Mots-clés dans Apex

Avec partage

Si une classe est définie avec ce mot-clé, alors toutes les règles de partage applicables à l'utilisateur actuel sont appliquées et si ce mot-clé est absent, alors le code s'exécute dans le contexte système.

Par exemple:

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

Sans partage

Si une classe est définie avec ce mot-clé, alors toutes les règles de partage applicables à l'utilisateur actuel ne sont pas appliquées.

Par exemple:

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

Statique

Une variable, Method est définie avec le mot-clé static est initialisée une fois et associée à la classe. Variables statiques, les méthodes peuvent être appelées directement par nom de classe sans créer l'instance d'une classe.

Final

Une méthode constante, définie avec le mot-clé final, ne peut pas être remplacée. Par exemple:

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

Si vous essayez de remplacer la valeur de cette variable INT_CONST, vous obtiendrez une exception – System.FinalException : la variable finale a déjà été initialisée.

Retour

Ce mot-clé renvoie une valeur d'une méthode. Par exemple:

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

Null

Il définit une constante nulle et peut être affecté à une variable. Par exemple

 Boolean b = null;

Salle de conférence virtuelle

Si une classe est définie avec un mot-clé virtuel, elle peut être étendue et remplacée.

Abstract

Si une classe est définie avec le mot-clé abstract, elle doit contenir au moins une méthode avec le mot-clé abstract, et cette méthode ne doit avoir qu'une signature.

Par exemple

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

Chaîne Apex

Une chaîne est un ensemble de caractères sans limite de caractères. Par exemple:

String name = 'Test';

Il existe plusieurs méthodes intégrées fournies par la classe String dans Salesforce. Voici les quelques fonctions fréquemment et principalement utilisées :

abréger (maxWidth)

Cette méthode tronque une chaîne à la longueur spécifiée et la renvoie si la longueur de la chaîne donnée est plus longue que la longueur spécifiée ; sinon, il renvoie la chaîne d'origine. Si la valeur de la variable maxWidth est inférieure à 4, cette méthode renvoie une exception d'exécution – System.StringException : la largeur minimale de l'abréviation est de 4.

Par exemple :

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

capitaliser()

Cette méthode convertit la première lettre d'une chaîne en casse du titre et la renvoie.

Par exemple :

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

contient (sous-chaîne)

Cette méthode renvoie true si la chaîne appelant la méthode contient la sous-chaîne spécifiée.

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

est égal à (chaîneOuId)

Cette méthode renvoie true si le paramètre passé n'est pas nul et indique la même séquence binaire de caractères que la chaîne qui appelle la méthode.

Lors de la comparaison des valeurs d'ID, la longueur des ID peut ne pas être égale. Par exemple : si une chaîne qui représente un identifiant de 15 caractères est comparée à un objet qui représente un identifiant de 18 caractères, cette méthode renvoie vrai. Par exemple:

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

Dans l'exemple ci-dessus, la méthode égale compare l'identifiant d'objet de 15 caractères à l'identifiant d'objet de 18 caractères et si ces deux identifiants représentent la même séquence binaire, il retournera vrai.

Utilisez cette méthode pour effectuer des comparaisons sensibles à la casse.

escapeSingleQuotes (stringVersEscape)

Cette méthode ajoute un caractère d'échappement (\) avant toute citation simple dans une chaîne et le renvoie. Cette méthode empêche l'injection SOQL lors de la création d'une requête SOQL dynamique. Cette méthode garantit que tous les guillemets simples sont considérés comme des chaînes englobantes, au lieu de commandes de base de données.

Par exemple :

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

supprimer (sous-chaîne)

Cette méthode supprime toutes les occurrences de la sous-chaîne mentionnée de la chaîne qui appelle la méthode et renvoie la chaîne résultante.

Par exemple

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

sous-chaîne (indexdébut)

Cette méthode renvoie une sous-chaîne qui commence à partir du caractère de startIndex et s'étend jusqu'au dernier de la chaîne.

Par exemple:

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

inverser ()

Cette méthode inverse tous les caractères d'une chaîne et la renvoie. Par exemple:

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

trim() : Cette méthode supprime tous les espaces blancs de début d’une chaîne et la renvoie.

valeurDe(versConvertir)

Cette méthode renvoie la représentation sous forme de chaîne de l'objet transmis.

Limites du gouverneur Apex

Les limites du gouverneur Apex sont les limites appliquées par le moteur d'exécution Apex pour garantir qu'aucun code et processus Apex de piste ne contrôlent les ressources partagées et ne violent le traitement des autres utilisateurs de l'environnement mutualisé. Ces limites sont vérifiées pour chaque transaction apex. Voici les limites du gouverneur définies par Salesforce pour chaque transaction Apex :

Description limite
Requêtes SOQL pouvant être effectuées dans une transaction synchrone 100
Requêtes SOQL pouvant être effectuées dans une transaction asynchrone 200
Enregistrements pouvant être récupérés par une requête SOQL 50000
Enregistrements pouvant être récupérés par Database.getQueryLocator 10000
Requêtes SOSL pouvant être effectuées dans une transaction apex 20
Enregistrements pouvant être récupérés par une requête SOSL 2000
Instructions DML pouvant être effectuées dans une transaction apex 150
Enregistrements pouvant être traités à la suite d'une instruction DML, Approval.process ou database.emptyRecycleBin 10000
Légendes pouvant être effectuées dans une transaction apex. 100
Limite de délai d'expiration cumulée pour tous les appels effectués dans une transaction apex en 120 secondes
Limite des tâches apex pouvant être ajoutées à la file d'attente avec System.enqueueJob 50
Délai d'exécution pour chaque transaction Apex 10 minutes
Limite des caractères pouvant être utilisés dans une classe Apex et un déclencheur 1 millions
Limite de temps CPU pour les transactions synchrones Millisecondes 10,000
Limite de temps CPU pour les transactions asynchrones Millisecondes 60,000

Apex Getter et Setter

La propriété Apex est similaire à la variable sommet. Getter et setter sont nécessaires à une propriété apex. Getter et setter peuvent être utilisés pour exécuter du code avant que la valeur de la propriété ne soit accédée ou modifiée. Le code de l'accesseur get s'exécute lorsqu'une valeur de propriété est lue. Le code dans l'accesseur set s'exécute lorsqu'une valeur de propriété est modifiée. Toute propriété ayant un accesseur get est considérée comme en lecture seule, toute propriété ayant un accesseur défini est considérée comme étant en écriture. Seule toute propriété ayant à la fois un accesseur get et set est considérée comme étant en lecture-écriture. Syntaxe d'une propriété sommet :

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

Ici, access_modifier est le modificateur d'accès de la propriété. return_type est le dataType de la propriété. property_name est le nom de la propriété.

Vous trouverez ci-dessous un exemple de propriété apex ayant à la fois un accesseur get et set.

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

Ici, le nom de la propriété est name, et c'est une propriété publique, et elle renvoie une chaîne dataType.

Il n'est pas obligatoire d'avoir du code dans le bloc get et set. Ces blocs peuvent être laissés vides pour définir une propriété automatique. Par exemple:

public double MyReadWriteProp{ get; set; } 

L'accesseur Get et set peut également être défini avec son modificateur d'accès. Si un accesseur est défini avec un modificateur, il remplace le modificateur d'accès de la propriété. Par exemple:

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

Classe Apex

Une classe apex est un plan ou un modèle à partir duquel les objets sont créés. Un objet est l'instance d'une classe.

Il existe trois façons de créer des classes apex dans Salesforce :

Console développeur

IDE Force.com

Page de détails de la classe Apex.

Dans Apex, vous pouvez définir une classe externe également appelée classe de niveau supérieur, ainsi que des classes au sein d'une classe externe appelée classes internes.

Il est obligatoire d'utiliser un modificateur d'accès comme global ou public dans la déclaration de la classe externe.

Il n'est pas nécessaire d'utiliser un modificateur d'accès dans la déclaration des classes internes.

Une classe apex est définie à l’aide du mot-clé class suivi du nom de la classe.

Le mot-clé Extends est utilisé pour étendre une classe existante par une classe apex, et le mot-clé Implements est utilisé pour implémenter une interface par une classe apex.

Salesforce Apex ne prend pas en charge plusieurs héritages, une classe apex ne peut étendre qu'une seule classe apex existante mais peut implémenter plusieurs interfaces.

Une classe apex peut contenir un constructeur défini par l'utilisateur, et si un constructeur défini par l'utilisateur n'est pas disponible, un constructeur par défaut est utilisé. Le code d'un constructeur s'exécute lorsqu'une instance d'une classe est créée.

Syntaxe de l'exemple de classe Apex :

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

Le nouveau mot-clé est utilisé pour créer une instance d'une classe apex. Vous trouverez ci-dessous la syntaxe pour créer une instance d'une classe apex.

myApexClass obj = new myApexClass();

Déclencheur d'apex

Les déclencheurs Apex vous permettent d'exécuter un apex personnalisé avant et après l'exécution d'une opération DML.

Prise en charge d'Apex suivant deux types de déclencheurs :

Avant les déclencheurs : ces déclencheurs sont utilisés pour valider et mettre à jour la valeur du champ avant l'enregistrement de l'enregistrement dans la base de données.

Après les déclencheurs : ces déclencheurs sont utilisés pour accéder aux champs (ID d'enregistrement, champ LastModifiedDate) définis par le système après un enregistrement validé dans la base de données. La valeur de ces champs peut être utilisée pour modifier d'autres enregistrements. Les enregistrements déclenchés après des déclencheurs sont en lecture seule.

Il est recommandé d'écrire des déclencheurs volumineux. Un déclencheur volumineux peut traiter un seul enregistrement ainsi que plusieurs enregistrements à la fois.

Syntaxe d'un déclencheur apex :

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

Ici, TriggerName est le nom du déclencheur, ObjectName est le nom de l'objet sur lequel le déclencheur doit être écrit, trigger_events est la liste d'événements séparés par des virgules.

Voici les événements pris en charge par les déclencheurs apex : avant l'insertion, avant la mise à jour, avant la suppression, après l'insertion, après une mise à jour, après la suppression, après la suppression.

Les mots-clés statiques ne peuvent pas être utilisés dans un déclencheur Apex. Tous les mots-clés applicables aux classes internes peuvent être utilisés dans un déclencheur Apex.

Il existe des variables implicites définies par chaque déclencheur qui renvoie le contexte d'exécution. Ces variables sont définies dans le système. Classe de déclenchement. Ces variables sont appelées variables de contexte. La capture d'écran ci-dessous montre la variable de contexte prise en charge par le déclencheur apex.

Déclencheur d'apex

Déclencheur d'apex

Voici la prise en compte de la variable de contexte dans le déclencheur apex :

  • N'utilisez pas trigger.new et trigger.old dans les opérations DML.
  • Trigger.new ne peut pas être supprimé.
  • Trigger.new est en lecture seule.
  • Trigger.new peut être utilisé pour modifier les valeurs des champs sur le même objet avant le déclenchement uniquement.

Les captures d'écran ci-dessous répertorient les considérations concernant des actions spécifiques dans différents événements déclencheurs.

Déclencheur d'apex

Déclencheur d'apex

Classe par lots dans Apex

La classe Batch dans Salesforce est utilisée pour traiter un grand nombre d’enregistrements qui dépasseraient les limites du gouverneur apex s’ils étaient traités normalement. La classe Batch exécute le code de manière asynchrone.

Voici les avantages de la classe batch :

  • La classe Batch traite les données en morceaux et si un morceau ne parvient pas à être traité avec succès, tous les morceaux traités avec succès ne sont pas restaurés.
  • Chaque bloc de données d'une classe de lots est traité avec un nouvel ensemble de limites du gouverneur qui garantissent que le code s'exécute dans les limites d'exécution du gouverneur.
  • Base de données. L’interface batchable doit être implémentée par une classe apex pour être utilisée comme classe batch. Il fournit trois méthodes qui doivent être implémentées par la classe batch.

Voici les trois méthodes fournies par Database. Interface batchable :

1. commencer()

Cette méthode génère la portée des enregistrements ou des objets à traiter par la méthode d'interface exécutée. Lors de l'exécution du batch, il n'est appelé qu'une seule fois. Cette méthode renvoie soit un objet Database.QueryLocator, soit un Iterable. Le nombre d'enregistrements récupérés par une requête SQL à l'aide de l'objet Database.QueryLocator est de 50 millions d'enregistrements, mais en utilisant un itérable, le nombre total d'enregistrements pouvant être récupérés par la requête SQL est de 50000 seulement. Iterable est utilisé pour générer une portée complexe pour la classe batch.

Syntaxe de la méthode start :

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

2.exécuter()

Cette méthode est utilisée pour le traitement de chaque bloc de données. Pour chaque bloc d'enregistrements, la méthode d'exécution est appelée. La taille de lot par défaut pour l'exécution est de 200 enregistrements. La méthode Execute prend deux arguments :

Une référence à l'objet Database.BatchableContext,

Une liste de sObjects, telle que List , ou une liste de types paramétrés. Syntaxe de la méthode d'exécution :

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

3.terminer()

La méthode finish est appelée une fois lors de l’exécution de la classe batch. Les opérations de post-traitement peuvent être effectuées dans la méthode de finition. Par exemple : envoi de l'email de confirmation. Cette méthode est appelée lorsque tous les lots sont traités. Syntaxe de la méthode Finish :

global void finish(Database.BatchableContext BC){}

Objet Database.BatchableContext

Chaque méthode de la base de données. L’interface batchable a une référence à l’objet Database.BatchableContext.

Cet objet est utilisé pour suivre la progression du travail par lots.

Voici les méthodes d'instance fournies par BatchableContext :

  • getChildJobId() : cette méthode renvoie l'ID d'un travail par lots en cours de traitement.
  • getJobId() : cette méthode renvoie l'ID du travail par lots.

Ci-dessous la syntaxe d'une classe batch :

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
}
}

Méthode Database.executeBatch

La méthode Database.executeBatch est utilisée pour exécuter une classe batch.

Cette méthode prend deux paramètres : Instance de la classe de lot à traiter, Paramètre Options pour spécifier la taille du lot si non spécifié, il prend la taille par défaut de 200.

Syntaxe de Database.executeBatch :

Database.executeBatch(myBatchObject,scope)

Exécution d'un nom de classe batch MyBatchClass :

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

Base de données.stateful

La classe Batch est sans état par défaut. Chaque fois que la méthode d'exécution est appelée, une nouvelle copie d'un objet est reçue, toutes les variables de la classe sont initialisées.

Database.stateful est implémenté pour rendre une classe batch avec état.

Si votre classe batch a implémenté le Base de données , interface avec état, toutes les variables d'instance conservent leurs valeurs, mais les variables statiques sont réinitialisées entre les transactions.

Résumé

  • Apex est un outil fortement typé et orienté objet langage de programmation qui compile et s'exécute sur la plateforme force.com
  • Le langage de programmation Apex est un langage insensible à la casse
  • Il existe deux types de flux d'actions dans Apex : 1) Action du développeur 2) Action de l'utilisateur final
  • Apex vous aide à créer des services Web qui intègrent Salesforce à d'autres applications.
  • Les types de données pris en charge par apex sont : 1).Primitive 2) Collections 3) sObject, Enums, 4) Classes, 5) Objets et interfaces
  • Public, Privé, Protégé et Global sont spécifiés par Apex.
  • Les mots clés utilisés dans Apex sont : 1) Avec partage, 2) Sans partage, 3) Statique, 4) Final 5) Retour, 6) Null, 7) Virtuel, 8) Abstrait
  • Une chaîne est un ensemble de caractères sans limite de caractères
  • Les limites du gouverneur Apex sont les limites appliquées par le moteur d'exécution Apex pour garantir que tout code et processus Apex de piste
  • Getter et setter peuvent être utilisés pour exécuter du code avant que la valeur de la propriété ne soit accédée ou modifiée
  • Il existe trois manières de créer des classes Apex dans Salesforce : 1) Console du développeur 2) IDE Force.com et 3) Page de détails de la classe Apex.
  • Les déclencheurs Apex vous permettent d'exécuter un apex personnalisé avant et après l'exécution d'une opération DML.
  • La classe Batch dans Salesforce est utilisée pour traiter un grand nombre d’enregistrements qui dépasseraient les limites du gouverneur apex s’ils étaient traités normalement.