Fermer

mars 18, 2024

Naviguer dans Dynamic Apex dans Salesforce / Blogs / Perficient

Naviguer dans Dynamic Apex dans Salesforce / Blogs / Perficient


Aloha les pionniers !

Aujourd’hui, nous allons comprendre et en apprendre davantage sur le sommet dynamique. Selon Documentation Salesforce, Dynamic Apex permet aux développeurs de créer des applications plus flexibles. En termes plus simples, l’apex dynamique vous permet de créer du code générique qui pourrait être réutilisé avec plusieurs sObjects. Réduisant ainsi la surcharge liée à la création du bloc de code plusieurs fois pour plusieurs objets. Le terme « dynamique » signifie généralement une saisie dans laquelle votre variable n’a pas de type fixe.

Une caractéristique importante d’un langage dynamique est la « liaison tardive ». En cela, la liaison des méthodes et des fonctions à leurs définitions se fait au moment de l’exécution plutôt qu’au moment de la compilation. Cela vous permet de définir les méthodes, de modifier la structure des classes et même d’ajouter ou de supprimer des méthodes au moment de l’exécution.

Les langages dynamiques prennent également en charge une autre fonctionnalité importante appelée « réflexion ». Dans lequel un programme peut se modifier en inspectant sa propre structure et son comportement.

Apex est-il un langage dynamique ?

Apex est un langage orienté objet typé statiquement, mais il possède également des fonctionnalités de langage de programmation dynamique. Dans Apex, vous pouvez créer des classes et des méthodes pour travailler avec n’importe quel objet (personnalisé ou standard) sans réellement coder en dur ses noms.

L’adaptabilité de cet aspect de réutilisabilité est excellente, adaptée à la création d’une couche d’accès aux données polyvalente capable d’interroger, d’insérer et de mettre à jour n’importe quel objet. Il est particulièrement utile pour l’intégration avec des systèmes externes où la logique d’intégration peut subir des modifications.

De nombreux frameworks Apex, y compris les produits Salesforce ISV, s’appuient fortement sur les fonctionnalités dynamiques du langage. Les éditeurs de logiciels indépendants utilisent largement ces fonctionnalités pour garantir que leurs produits peuvent être facilement utilisés dans différentes organisations Salesforce, indépendamment de la personnalisation et des métadonnées. Par exemple, ils y parviennent en créant des méthodes et des déclencheurs Apex dynamiques à l’aide de l’API Tooling.

SOQL dynamique

SOQL dynamique fait référence à la création d’une chaîne SOQL au moment de l’exécution avec du code apex. Par exemple, vous pouvez créer une recherche basée sur les entrées de l’utilisateur.

Pour créer une requête SOQL dynamique au moment de l’exécution, vous devez utiliser les méthodes Database.query ou Database.querywithbinds.

L’extrait de code suivant renvoie plusieurs enregistrements :

List<sObject> sobjList = Database.query(string);

L’extrait de code ci-dessous renvoie une liste de sObjects à l’aide d’une carte de variable de liaison :

List<sObject> sobjList = Database.queryWithBinds(string, bindVariablesMap, accessLevel);

Gestion des types d’enregistrement via Dynamic Apex

L’une des meilleures pratiques de Salesforce consiste à ne pas coder en dur les ID de vos métadonnées, ce qui peut réduire considérablement les risques d’erreur.

Dynamic Apex vous permet de gérer différents types d’enregistrements et d’accéder dynamiquement à leur ID et à leurs étiquettes.

Gestion des types d'enregistrement

Gestion des autorisations via Dynamic Apex

Vous pouvez utiliser l’apex dynamique pour vérifier l’accès d’un utilisateur à un objet spécifique ou à ses champs.

L’extrait de code ci-dessous démontre l’utilisation des méthodes de description de schéma pour vérifier l’accessibilité d’un utilisateur au champ Nom de l’objet Contact. Vous pouvez ainsi déterminer par programme les niveaux d’accès de l’utilisateur. Cela peut être encore plus utile pour appliquer une sécurité appropriée au niveau du terrain.

Gestion des autorisations via Dynamic Apex

Connexion à déclencheur dynamique

La logique de déclenchement dynamique fait référence à la possibilité de créer des déclencheurs dans le code Salesforce Apex qui peuvent s’adapter à différentes conditions ou événements au moment de l’exécution. Cela signifie que vous pouvez écrire du code Apex qui peut modifier son comportement en fonction de divers facteurs, tels que les valeurs des champs, les autorisations des utilisateurs ou même les paramètres de métadonnées.

Voici un exemple simplifié pour illustrer la logique de déclenchement dynamique :

Supposons que vous souhaitiez créer un déclencheur qui attribue automatiquement une tâche à un utilisateur chaque fois qu’un nouveau prospect est créé. Cependant, vous souhaitez également personnaliser ce comportement en fonction de critères spécifiques, tels que la source ou le secteur d’activité du prospect.

trigger LeadTrigger on Lead (after insert) {

    // Loop through all the new leads

    for (Lead newLead : Trigger.new) {

        // Check if the lead's source is 'Web' and industry is 'Technology'

        if (newLead.LeadSource == 'Web' && newLead.Industry == 'Technology') {

            // Create a task and assign it to a specific user

            Task newTask = new Task();

            newTask.Subject="Follow up on Technology Lead";

            newTask.Priority = 'Normal';

            newTask.Status="Not Started";

            newTask.OwnerId = '005XXXXXXXXXXXX'; // Replace with the Salesforce user ID

            newTask.WhatId = newLead.Id;


            // Insert the task record

            insert newTask;

        } else {

            // Custom logic based on other conditions


        }

    }

}

Dans cet exemple, nous avons un déclencheur appelé LeadTrigger qui se déclenche après l’insertion de nouveaux enregistrements de prospects (après l’insertion). À l’intérieur du déclencheur, nous parcourons chaque nouveau prospect (pour (Lead newLead : Trigger.new)) et vérifions les conditions spécifiques (if (newLead.LeadSource == ‘Web’ && newLead.Industry == ‘Technology’)). Si les conditions correspondent, nous créons une tâche et l’attribuons à un utilisateur spécifique.

Le point clé ici est que la logique de déclenchement est dynamique car elle peut être personnalisée et adaptée en fonction de différentes conditions ou événements. La flexibilité de Dynamic Apex simplifie la gestion et la maintenance des déclencheurs. Ceci est particulièrement avantageux dans les configurations d’organisation Salesforce complexes avec plusieurs déclencheurs et des exigences variables.

Amélioration des pages VF avec la génération dynamique de composants

Dans le développement Salesforce, les pages VF servent de base à la création d’interfaces utilisateur adaptées aux besoins professionnels spécifiques. Alors que les méthodes de développement traditionnelles impliquent la création manuelle de code HTML pour chaque élément, la génération dynamique de composants offre une approche plus efficace. En utilisant les capacités de rendu dynamique de Visualforce, les développeurs peuvent créer des interfaces utilisateur personnalisables pour s’adapter aux données d’exécution.

Voici un exemple pratique illustrant la génération de composants dynamiques en action. Dans la page Visualforce ci-dessous, nous utilisons la balise pour parcourir une liste de comptes renvoyée par la méthode getAccounts() dans le contrôleur. Dans le bloc de répétition, nous utilisons pour structurer les détails de chaque compte, en remplissant dynamiquement des champs tels que le nom, le secteur et le chiffre d’affaires annuel à l’aide d’expressions telles que {!acc.Name}, {!acc.Industry} et {! acc.AnnualRevenue}.

Exemple de page Vf

Dans le contrôleur Apex correspondant, la méthode getAccounts() interroge les champs nécessaires dans la base de données Salesforce et renvoie une liste de comptes. Cette liste est ensuite utilisée par la page Visualforce pour générer dynamiquement des composants, garantissant ainsi que l’interface utilisateur reste réactive aux modifications des données.

Code Apex pour la page Vf

L’adoption de la génération de composants dynamiques dans le développement Visualforce rationalise le code, améliore la flexibilité et crée des interfaces utilisateur plus résilientes. Cette approche permet aux organisations d’adapter et de faire évoluer leurs applications en réponse à l’évolution des exigences commerciales.

Les meilleures pratiques

Connaissance des limites du gouverneur : assurez-vous que votre code est conforme aux limites du gouverneur Salesforce pour gérer efficacement de gros volumes de données.

Gestion des erreurs : implémentez des mécanismes robustes de gestion des erreurs, notamment des blocs try-catch, pour gérer les exceptions avec élégance et éviter les échecs.

Considérations de sécurité : nettoyez les entrées des utilisateurs, validez les autorisations d’accès et suivez les meilleures pratiques de sécurité de Salesforce pour protéger les données sensibles.

Maintenabilité du code : écrivez du code propre et bien documenté avec des noms de variables et des commentaires significatifs pour améliorer la lisibilité et la maintenabilité.

Stratégie de test : développez des tests unitaires complets couvrant divers scénarios, y compris des cas de test positifs et négatifs, pour valider de manière approfondie la fonctionnalité Dynamic Apex.

Note finale sur Dynamic Apex

Dynamic Apex offre aux développeurs Salesforce une gamme d’opportunités, permettant un code flexible et puissant. De la gestion des autorisations à la création de requêtes dynamiques et de cadres robustes, Dynamic Apex est essentiel pour le développement Salesforce moderne. Son adaptabilité lui permet de répondre aux exigences changeantes sans modification du code structurel. En comprenant ses fonctionnalités et ses bonnes pratiques, les développeurs peuvent tirer parti de Dynamic Apex pour créer des applications résilientes, adaptables et innovantes.

Vous pouvez également explorer

Top 5 des meilleures pratiques Salesforce sur le code Apex






Source link