API de dépendance Salesforce (Dependency API)
L’API de dépendance Salesforce désigne l’objet MetadataComponentDependency de l’API Tooling. Chaque ligne renvoyée décrit une dépendance orientée entre deux composants de métadonnées d’une org, par exemple une classe Apex qui référence un champ personnalisé. Salesforce la présente toujours comme une version bêta, assortie de limites de requête documentées qui conditionnent son usage.
Ce qu’elle renvoie
Chaque enregistrement associe un composant à un composant qu’il référence : d’un côté MetadataComponentId, MetadataComponentName, MetadataComponentNamespace et MetadataComponentType, de l’autre les champs RefMetadataComponent… correspondants. Une référence circulaire, par exemple deux classes qui s’appellent mutuellement, produit deux lignes.
Les noms sont renvoyés sans leur suffixe : un champ personnalisé apparaît sans __c. Salesforce recommande par ailleurs d’utiliser dans les requêtes les identifiants à 18 caractères plutôt que ceux à 15 caractères.
Comment l’interroger
L’objet s’interroge par l’API Tooling à partir de la version 43.0 de l’API, et par Bulk API 2.0 à partir de la version 49.0. L’API Tooling renvoie au plus 2 000 enregistrements par requête et n’inclut pas les rapports ; Bulk API 2.0 renvoie jusqu’à 100 000 enregistrements par requête et constitue la voie documentée pour les dépendances qui concernent des rapports.
Limites documentées
Plusieurs fonctions SOQL ne sont pas prises en charge : ORDER BY, count(), queryMore() et OFFSET, le filtrage sur les champs de nom de composant, LIKE sur les champs de type, ainsi que les opérateurs WHERE autres que =, !=, AND et OR. Salesforce prévient que, dans toute org un peu fournie, ces requêtes renvoient un très grand nombre de lignes et doivent être restreintes par les filtres pris en charge, sur le type ou l’identifiant ; cette requête Tooling ne permet pas de filtrer sur le nom du composant.
Salesforce précise aussi que la bêta est une préversion proposée à des fins d’évaluation, sans garantie de disponibilité générale : un point à connaître avant d’appuyer un processus de production dessus.
Ce qu’apporte aprity
aprity lit les métadonnées d’une org en lecture seule et calcule les relations de dépendance à partir des métadonnées extraites et prises en charge. Il montre quels composants dépendent d’un champ, d’un objet ou d’une classe Apex, et chaque règle documentée renvoie au composant dont elle a été tirée.
Termes liés
- Déclencheur Apex — Du code Apex exécuté automatiquement avant ou après l’insertion, la mise à jour, la suppression ou la restauration d’enregistrements d’un objet.
- Package géré et préfixe d’espace de noms — Un package géré est un ensemble de métadonnées distribuable et pouvant être mis à niveau ; son préfixe d’espace de noms s’ajoute au nom d’API de chacun de ses composants.
- Sécurité au niveau du champ (FLS) — Le réglage Salesforce qui détermine, par profil ou ensemble d’autorisations, si un utilisateur peut lire ou modifier chaque champ d’un objet.
Sources
La documentation officielle de Salesforce sur laquelle cette définition a été vérifiée (pages en anglais). Le comportement de la plateforme évolue d’une version à l’autre : la page citée fait foi.