# architect Guides de décision (decision-guides) - Full Documentation # Utilisation des outils et schémas appropriés pour les architectures pilotées par les événements Les architectures pilotées par l'événement prennent en charge la production et la consommation efficaces d'événements, qui communiquent les changements d'état du système ou de l'application. Ces architectures permettent des connexions flexibles entre les systèmes, et prennent en charge les processus et les mises à jour en temps quasi réel qui fonctionnent entre les systèmes. Les avantages des architectures pilotées par l'événement sont faciles à voir, mais les détails d'implémentation ne sont pas toujours aussi clairs. Quelles capacités devez-vous prendre en compte dans les modèles architecturaux pilotés par l'événement ? Quels problèmes spécifiques ces modèles résolvent-ils ? Quelles considérations particulières s'appliquent à vos solutions et quels sont les modèles optimaux pour les résoudre ? ## Présentation du guide Ce guide présente les modèles utilisés pour élaborer des architectures pilotées par les événements optimales lors de l'utilisation de technologies Salesforce. Il traite également des outils d'événements disponibles dans Salesforce et fournit des recommandations d'outils pour une sélection de cas d'utilisation. Pour plus d'informations sur les intégrations au niveau des données impliquant Salesforce, consultez notre [Data Integration Decision Guide](/docs/architect/fr-fr/decision-guides/guide/data-integration). ## Points à retenir - **Utilisez des architectures pilotées par l'événement pour les processus qui ne nécessitent pas de réponses synchrones aux requêtes.** Les schémas présentés dans ce guide sont conçus pour la cohérence, l'évolutivité et la réutilisation des données, ce qui permet de réduire au minimum les dettes techniques à mesure que le paysage applicatif de votre organisation évolue. (Pour plus d'informations, consultez [Bien archivé - Fiabilité](/docs/architect/fr-fr/well-architected/guide/reliability.html)). - **Si MuleSoft ou une autre solution Enterprise Service Bus (ESB) fait partie de votre paysage existant, utilisez-la dans la mesure du possible.** Ces solutions sont spécialement conçues pour prendre en charge les modèles d'architecture pilotée par l'événement et offrent de puissantes capacités qui permettent de réutiliser les intégrations dans votre entreprise. - **Utilisez l'API Pub/Sub pour les futurs modèles de publication/abonnement au lieu d'élaborer vos propres gestionnaires d'événements en utilisant d'autres API, notamment l'API Streaming.** L'API Pub/Sub étant désormais globalement disponible, utilisez-la pour tous les nouveaux modèles de publication/abonnement. Planifiez la migration des communications d'événements existantes en utilisant d'autres API de plate-forme, telles que l'API Streaming ou des services Apex personnalisés, vers l'API Pub/Sub lorsque cela est possible. - **Les événements de plate-forme et la Capture des données de modification (CDC) sont les mécanismes privilégiés pour publier les modifications des enregistrements et des champs qui doivent être consommés par d'autres systèmes.** Nous recommandons de ne pas utiliser PushTopic et des événements génériques pour les nouvelles implémentations. Salesforce continuera de prendre en charge PushTopic et les événements génériques dans les limites des capacités fonctionnelles actuelles, mais n'envisage pas d'autres investissements dans cette technologie. ## Produits concernés
| Salesforce Platform est une plate-forme complète pilotée par l’IA qui unifie les employés, les agents IA autonomes, les données de l’entreprise et les applications dans un système unique et de confiance pour améliorer la productivité et l’expérience client. Il permet la création d'une "entreprise agentique" en connectant les applications Customer 360, Data Cloud, et Slack pour une automatisation de bout en bout. | |
![]() |
MuleSoft est la plate-forme d'intégration leader de Salesforce qui permet aux organisations de connecter des applications, des données et des appareils à travers des environnements sur site et cloud. MuleSoft est une plate-forme qui fournit aux TI les plates-formes nécessaires pour déverrouiller les données entre les systèmes, développer des infrastructures d'intégration et d'automatisation évolutives, et créer rapidement des expériences connectées différenciées. |
| Point de décision | Guide |
|---|---|
| Notifications en temps quasi réel | Les modèles d'architecture pilotée par l'événement, tels que publier/s'abonner, fanout et streaming, fonctionnent généralement bien dans les scénarios où plusieurs applications doivent être notifiées en temps quasi réel des changements de statut ou des mises à jour d'enregistrement. |
| Traitement parallèle | Les modèles tels que publier/s'abonner fonctionnent généralement bien dans les scénarios où des volumes de données importants ou des messages très complexes nécessitent de distribuer la charge de traitement entre plusieurs systèmes. |
| Lectures à haut volume | Les modèles Messages transmis et File d'attente sont fréquemment utilisés dans les situations où les organisations subissent des augmentations et où le volume de messages produits peut dépasser la capacité des abonnés à les traiter immédiatement. |
| Écritures à haut volume | Les schémas Streaming et Queuing fonctionnent bien dans de nombreux scénarios où les organisations subissent une augmentation du nombre de messages produits. |
| Envoi des mêmes données à différents systèmes | Bien que publier/s'abonner tende à être une solution assez courante pour les organisations qui doivent envoyer les mêmes données à plusieurs systèmes, elle peut être traitée par la plupart des modèles couverts ici. Assurez-vous de les examiner en détail pour trouver le meilleur ajustement. |
| Introduction fréquente de nouveaux systèmes ou dispositifs | Les schémas Publier/S'abonner, Streaming et File d'attente fonctionnent généralement bien dans les scénarios où le paysage global tend à évoluer, avec de nouveaux systèmes et appareils ajoutés régulièrement. Dans ce scénario, un nouveau système ou appareil doit simplement devenir abonné au bus d'événement ou associé à une file d'attente, pour commencer à recevoir des messages plutôt que de demander une intégration point à point personnalisée. |
| Appareils IoT | Les appareils Internet des objets fournissent généralement des mises à jour fréquentes et peuvent également générer une augmentation des messages dans certains scénarios. Par conséquent, les modèles Streaming et Queuing fonctionnent généralement bien lors de leur intégration dans un paysage informatique. |
| Appareils et systèmes mobiles hors ligne | Les appareils mobiles qui doivent travailler dans des zones avec un accès Internet de faible qualité ou inexistant, ou des systèmes qui peuvent être hors ligne au moment de la remise des messages, bénéficieront du modèle Queuing, qui leur permet de se connecter à leurs files d'attente et de récupérer tous les messages pertinents une fois de retour en ligne. |
| Point de décision | Guide/Questions à poser |
|---|---|
| Exigences métier | Existe-t-il un réel besoin métier pour l'une des fonctionnalités décrites dans la section [Quand utiliser une architecture pilotée par un événement] (#quand-utiliser-une-architecture-pilotée-par-un-événement) ? |
| Exigences techniques | L'intégration que vous concevez correspond-elle à un schéma différent, par exemple virtualisation des données, lot ou requête/réponse ? En d'autres termes, essayez-vous d'insérer une cheville carrée dans un trou rond ? |
| Processus exigeant que les humains attendent des réponses | Toute intégration impliquant un humain attendant une réponse du système cible n'est pas adaptée aux architectures pilotées par l'événement, car elles sont conçues pour une exécution asynchrone et ne peuvent pas garantir un temps de réponse. Déterminez si de tels processus sont optimaux pour votre organisation avant d'implémenter des solutions techniques. Pour plus d'informations, consultez [Bien archivé - Excellence opérationnelle](/docs/architect/fr-fr/well-architected/guide/operational-excellence.html). |
| Données sources rarement modifiées | Si les données de votre système source changent si rarement que les mises à jour périodiques sont suffisantes, vous pouvez probablement simplifier votre architecture en utilisant [batch patterns] (https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_batch_data_sync.htm) au lieu de modèles pilotés par l'événement. |
| Exigences de mise en œuvre | La majorité des systèmes impliqués dans votre solution prennent-ils en charge les architectures pilotées par les événements ? Que faudrait-il pour utiliser des architectures pilotées par l'événement avec les systèmes qui ne les prennent pas en charge (par exemple, mises à niveau, personnalisations ou middleware) ? Quel niveau d'effort serait nécessaire pour satisfaire à ces exigences? |
| Stabilité de la structure du message | À quelle fréquence vos structures de messages doivent-elles changer ? Quels systèmes seront touchés par un tel changement et quel sera le processus de remédiation ? |
| Gouvernance organisationnelle | Avez-vous mis en place une structure de gouvernance pour vous assurer que toutes les parties prenantes sont informées des changements apportés aux structures de messages, aux déclencheurs et à d'autres décisions liées à l'architecture et aux processus, et qu'elles sont en mesure d'y contribuer ? |
| Compétences requises | Votre personnel a-t-il de l'expérience avec les architectures pilotées par les événements et saura-t-il comment les prendre en charge ? |
| Modèle | Temps quasi réel | Copie de message unique | Garantie de livraison | Réduire la taille du message | Transformer les données |
|---|---|---|---|---|---|
| Publier / S'abonner | ✓ | ✓ | ✓ | ||
| Fanout | ✓ | ✓ | ✓ | ||
| Messages transmis | ✓ | ✓ | ✓ | ✓ | |
| Streaming | ✓ | ✓ | ✓ | ||
| Mise en file d'attente | ✓ | ✓ | ✓ |
| Outil | Description | Compétences requises | |
|---|---|---|---|
| MuleSoft | Anypoint Platform | Plate-forme qui active l'intégration de données en utilisant des couches d'API. | Pro-code |
| Connecteur Salesforce Pub/Sub | Connecteur pour l'API Pub/Sub, qui fournit une interface unique de publication et d'abonnement aux événements de plate-forme, aux événements de surveillance des événements en temps réel et aux événements de capture des données de modification. | Pro-code | |
| Connecteur MuleSoft Anypoint JMS | Connecteur qui permet d'envoyer et de recevoir des messages dans des files d'attente et des rubriques pour n'importe quel service de messagerie qui implémente la spécification Java Message Service (JMS). | Pro-code | |
| Connecteur MuleSoft Anypoint Apache Kafka | Connecteur permettant de déplacer des données entre Apache Kafka et des applications et services d'entreprise. | Pro-code | |
| Connecteur MuleSoft Anypoint Solace | Un connecteur pour les courtiers d'événements Solace PubSub+ avec une intégration d'API native utilisant le kit de développement Java JCSMP | Pro-code | |
| Connecteur MuleSoft Anypoint MQ | Un service de messagerie cloud multilocataire qui permet aux clients d'effectuer une messagerie asynchrone avancée entre leurs applications. | Pro-code | |
| Connecteur MQTT MuleSoft Anypoint | Une extension MuleSoft conforme au protocole MQTT (Message Queuing Telemetry Transport) v3.x. | Pro-code | |
| Connecteur MuleSoft Anypoint AMQP | Un connecteur qui permet à votre application de publier et de consommer des messages en utilisant un courtier conforme AMQP 0.9.1. | Pro-code | |
| API MuleSoft Anypoint Event-Driven (ASync) | Langage agnostique du secteur d'activité qui prend en charge la publication d'API pilotées par l'événement en les séparant en couches événement, canal et transport. | Pro-code | |
| MuleSoft Anypoint MQ | Service de messagerie cloud multitenant qui permet aux clients d'effectuer une messagerie asynchrone avancée entre leurs applications. | Pro-code | |
| Flux de données MuleSoft Anypoint | Infrastructure disponible dans MuleSoft Anypoint pour la publication et l'abonnement à des données en continu. | Pro-code | |
| Salesforce Platform | Apache Kafka sur Heroku | Complément Heroku qui fournit Apache Kafka en tant que service avec une intégration complète de la plate-forme à la plate-forme Heroku. | Pro-code |
| Capture de données de modification | Journal des événements de modification, qui publie les modifications apportées aux enregistrements Salesforce. Les modifications comprennent la création d'un enregistrement, la mise à jour d'un enregistrement existant, la suppression d'un enregistrement et l'annulation de la suppression d'un enregistrement. | Du low-code au pro-code | |
| Messages sortants | Actions qui envoient des messages XML à des points de terminaison externes lorsque les valeurs de champ sont mises à jour dans Salesforce. | Code faible | |
| Événements de plate-forme | Messages sécurisés et évolutifs contenant des données d'événement personnalisées. | Du low-code au pro-code | |
| API Pub/Sub | API qui active les abonnements aux événements de plate-forme, aux événements Capture des données de modification et/ou aux événements Surveillance des événements en temps réel. | Pro-code | |
| Relais d'événements | Permet l'envoi d'événements de plate-forme et d'événements de capture des données de modification depuis Salesforce vers Amazon EventBridge. Notez que les relais d'événements se connectent uniquement à AWS Eventbridge. | Code faible | |
#### Outils relatifs au modèle publier/s'abonner
| Flux et comportement des événements | Considérations relatives à la charge utile | ||||||
|---|---|---|---|---|---|---|---|
| Outils disponibles | Compétences requises | Publier via | S'abonner via | Période de relecture | Structure de la charge utile | Limites de charge utile | |
| MuleSoft | Anypoint Platform | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun |
| Connecteur Salesforce Pub/Sub | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint JMS | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint Apache Kafka | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint Solace | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint MQ | Pro-code | API | API | Configuré | Utilisateur défini | Aucun | |
| Connecteur MQTT MuleSoft Anypoint | Pro-code | API | API | Configuré | Utilisateur défini | Aucun | |
| Connecteur MuleSoft Anypoint AMQP | Pro-code | API | API | Configuré | Utilisateur défini | Aucun | |
| MuleSoft Anypoint Event-Driven (ASync) API | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| MuleSoft Anypoint MQ | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Salesforce Platform | Apache Kafka sur Heroku | Pro-code | APIs, modifications des enregistrements dans Heroku Postgres | S.O. | 1 à 6 semaines | Défini par l'utilisateur | Défini par l'utilisateur |
| Capture des données de modification | Du low-code au pro-code | Modifications d'enregistrement | Apex, APIs, Composants Web Lightning (LWC) | 3 jours | Prédéfini | 1 MB | |
| Messages sortants* | Code faible | Règles de flux et de workflow | S.O. | 24 heures | Utilisateur défini | 100 notifications par message | |
| Événements de plate-forme | Du low-code au pro-code | APIs, Apex, Flow | Apex, APIs, Flow, LWC | 3 jours | Utilisateur défini | 1 MB | |
| Pub/Sub API | Pro-code | API Pub/Sub ou APIs, Apex, Flow | API Pub/Sub | 3 jours | Utilisateur défini | 1 MB | |
| Relais d'événements** | Code faible | Événements de plate-forme, Capture des données de modification | API | 3 jours | Utilisateur défini | 1 MB | |
| *Salesforce continuera de prendre en charge les messages sortants dans les limites des capacités fonctionnelles actuelles, mais n'envisage pas d'autres investissements dans cette technologie. **Les relais d'événements se connectent uniquement à AWS Eventbridge | |||||||
#### Outils relatifs au modèle fanout
| Flux et comportement des événements | Considérations relatives à la charge utile | ||||||
|---|---|---|---|---|---|---|---|
| Outils disponibles | Compétences requises | Publier via | S'abonner via | Période de relecture | Structure de la charge utile | Limites de charge utile | |
| MuleSoft | Connecteur MuleSoft Anypoint JMS | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun |
| Connecteur Salesforce Pub/Sub | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Connecteur MuleSoft Anypoint Apache Kafka | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Connecteur MuleSoft Anypoint Solace | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Connecteur MuleSoft Anypoint MQ | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Connecteur MQTT MuleSoft Anypoint | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Connecteur MuleSoft Anypoint AMQP | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| MuleSoft Anypoint MQ | Pro-code | API | API | Tel que configuré | Utilisateur défini | Aucun | |
| Salesforce Platform | Apache Kafka sur Heroku | Pro-code | APIs, modifications des enregistrements dans Heroku Postgres | S.O. | 1 à 6 semaines | Utilisateur défini | Utilisateur défini |
| Capture des données de modification | Du low-code au pro-code | Modifications d'enregistrement | Apex, APIs, Lightning Web Components (LWC) | 3 jours | Prédéfini | 1 MB | |
| Événements de plate-forme | Du low-code au pro-code | APIs, Apex, Flow | Apex, APIs, Flow, LWC | 3 jours | Utilisateur défini | 1 MB | |
| API Pub/Sub | Pro-code | Pub/Sub API ou Apex, APIs, Flow | API Pub/Sub | 3 jours | Utilisateur défini | 1 MB | |
| Relais d'événements* | Code faible | Événements de plate-forme, Capture des données de modification | API | 3 jours | Utilisateur défini | 1 MB | |
| *Les relais d'événements envoient uniquement des données à AWS Eventbridge | |||||||
#### Outils relatifs au modèle de messages transmis
| Flux et comportement des événements | Considérations relatives à la charge utile | ||||||
|---|---|---|---|---|---|---|---|
| Outils disponibles | Compétences requises | Publier via | S'abonner via | Période de relecture | Structure de la charge utile | Limites de charge utile | |
| MuleSoft | Connecteur MuleSoft Anypoint Apache Kafka | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun |
| Connecteur Salesforce Pub/Sub | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Salesforce Platform | Apache Kafka sur Heroku | Pro-code | API, changements d'enregistrement dans Heroku Postgres | S.O. | 1 à 6 semaines | Défini par l'utilisateur | Défini par l'utilisateur |
| Capture des données de modification | Du low-code au pro-code | Modifications d'enregistrement | Apex, APIs, Lightning Web Components (LWC) | 3 jours | Prédéfini | 1 MB | |
| Événements de plate-forme | Du low-code au pro-code | APIs, Apex, Flow | Apex, APIs, Flow, LWC | 3 jours | Défini par l'utilisateur | 1 MB | |
| API Pub/Sub | Pro-code | API Pub/Sub ou APIs, Apex, Flow | API Pub/Sub | 3 jours | Défini par l'utilisateur | 1 MB | |
| Relais d'événements* | Code faible | Événements de plate-forme, Capture des données de modification | API | 3 jours | Défini par l'utilisateur | 1 MB | |
| *Les relais d'événements envoient uniquement des données à AWS Eventbridge | |||||||
#### Outils correspondant au schéma de diffusion en continu
| Flux et comportement des événements | Considérations relatives à la charge utile | ||||||
|---|---|---|---|---|---|---|---|
| Outils disponibles | Compétences requises | Publier via | S'abonner via | Période de relecture | Structure de la charge utile | Limites de charge utile | |
| MuleSoft | Flux de données MuleSoft Anypoint | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun |
| Connecteur Salesforce Pub/Sub | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint Apache Kafka | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Salesforce Platform | Apache Kafka sur Heroku | Pro-code | API, changements d’enregistrement dans Heroku Postgres | S.O. | 1 à 6 semaines | Défini par l'utilisateur | Défini par l'utilisateur |
| API Pub/Sub | Pro-code | API Pub/Sub ou APIs, Apex, Flow | API Pub/Sub | 3 jours | Défini par l'utilisateur | 1 MB | |
#### Outils relatifs au schéma de mise en file d'attente
| Flux et comportement des événements | Considérations relatives à la charge utile | ||||||
|---|---|---|---|---|---|---|---|
| Outils disponibles | Compétences requises | Publier via | S'abonner via | Période de relecture | Structure de la charge utile | Limites de charge utile | |
| MuleSoft | MuleSoft Anypoint MQ | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun |
| Connecteur Salesforce Pub/Sub | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint Apache Kafka | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint MQ | Pro-code | API | API | Configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MQTT MuleSoft Anypoint | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Connecteur MuleSoft Anypoint AMQP | Pro-code | API | API | Tel que configuré | Défini par l'utilisateur | Aucun | |
| Salesforce Platform | Apache Kafka sur Heroku | Pro-code | API, changements d'enregistrement dans Heroku Postgres | S.O. | 1 à 6 semaines | Défini par l'utilisateur | Défini par l'utilisateur |
| Change Data Capture | Du low-code au pro-code | Modifications d'enregistrement | Apex, APIs, Lightning Web Components (LWC) | 3 jours | Prédéfini | 1 MB | |
| Événements de plate-forme | Du low-code au pro-code | API, Apex, Flow | Apex, APIs, Flow, LWC | 3 jours | Défini par l'utilisateur | 1 MB | |
| API Pub/Sub | Pro-code | API Pub/Sub ou APIs, Apex, Flow | API Pub/Sub | 3 jours | Défini par l'utilisateur | 1 MB | |
| Relais d'événements* | Code faible | Événements de plate-forme, Capture des données de modification | API | 3 jours | Défini par l'utilisateur | 1 MB | |
| *Les relais d'événements envoient uniquement des données à AWS Eventbridge | |||||||
| Flux | Salesforce Flow est un puissant outil d'automatisation par pointer-cliquer qui permet aux utilisateurs d'élaborer visuellement des processus métiers, des écrans et une logique complexes en utilisant Flow Builder, sans écrire de code. Il automatise des tâches telles que la mise à jour des données, l'envoi d'e-mails et le guidage des utilisateurs, offrant ainsi de la flexibilité à travers des types tels que Flux d'écran (interaction utilisateur) et Flux déclenchés (enregistrement/événements planifiés). |
| Apex | Salesforce Apex est un langage de programmation propriétaire et orienté objet pour la plate-forme Salesforce, similaire à Java, utilisé pour élaborer une logique métier personnalisée, automatiser les processus et étendre les fonctionnalités CRM de base au-delà des outils déclaratifs. |
À mesure que l'étendue et la complexité de votre application Salesforce augmentent, adoptez un point d'entrée principal unique, soit le flux déclenché par un enregistrement, soit les déclencheurs Apex. Évitez de partitionner les automatisations entre plusieurs mécanismes dans un seul objet Salesforce, car cela entraîne une mauvaise maintenabilité et une gouvernance fragmentée.
### Matrice de sélection de la densité
Utilisez cette matrice afin de déterminer la norme architecturale requise pour votre objet Salesforce.
- **Flux déclenché par un enregistrement** est la solution préférée pour une faible densité d'automatisation. Il offre un équilibre de puissance et d'accessibilité idéal pour des automatisations simples et indépendantes les unes des autres.
- **Le schéma hybride (flux déclenché par un enregistrement avec Apex invocable)** est un choix puissant et maintenable pour les automatisations à densité moyenne avec une complexité croissante. Ce schéma permet aux équipes de maintenir une chorégraphie ordonnée dans Flux déclaratif tout en déléguant des opérations lourdes en calcul à Apex, en équilibrant l'accessibilité avec les performances.
- Les **déclencheurs Apex** fournissent les blocs de construction nécessaires à une fondation architecturale solide pour soutenir les automatisations à haute densité. Les performances, le contrôle granulaire, ainsi que l'abstraction orientée objet et le polymorphisme d'Apex sont mieux adaptés pour gérer la complexité et l'échelle de ces scénarios.
| Niveau de densité | Quantité d'automatisation | Volume de données (taille du lot) | Prolifération des dépendances | Norme architecturale |
|---|---|---|---|---|
| Faible | < 15 Automatisations |
Standard Interactions de l'interface utilisateur pilotées par l'utilisateur ou petites charges d'API (1 à 200 enregistrements) |
Discret Logique autonome. 0 à 1 opérations DML en aval sur le même objet ou un objet associé. |
Flux déclenché par un enregistrement |
| Moyen | 15–30 Automatisations |
Modéré Traitement par lot standard (avec une logique nécessitant un traitement en masse minutieux) |
Couplé Les mises à jour parent/enfant entraînent 2 à 4 opérations DML en aval. Risque de récursion |
Modèle hybride Flux + Apex invocable |
| Élevée | > 30 Automatisations |
Élevée Volumes de données importants avec des chargements d'API en masse (2 000 à plus de 10 000 enregistrements) |
Complexe et récursif Graphe de dépendance profond : 5 opérations DML en aval ou plus. Risque de boucles de récursion triangulaires |
Cadre de métadonnées des déclencheurs Apex |
| Capacité | Flux déclenché par un enregistrement | Déclencheur Apex |
|---|---|---|
| Rapidité de livraison et d'entretien | Recommandé L'interface utilisateur visuelle de Flow Builder permet aux administrateurs et autres générateurs déclaratifs de créer et de modifier des automatisations plus rapidement que l'écriture, le test et le déploiement d'un code Apex. Cette interface permet à un plus grand nombre de membres de l'équipe d'offrir de la valeur métier et réduit la dépendance aux ressources spécialisées pour les développeurs pour de simples tâches. |
Expertise requise Apex nécessite des développeurs de logiciels correctement qualifiés pour implémenter, tester et maintenir le code. |
| Modularité | Disponible Les flux déclenchés par un enregistrement sont modulaires par défaut. Au lieu d'une logique monolithique, les équipes élaborent des flux discrets pour des exigences spécifiques et les chorégraphient ensemble en utilisant l'Explorateur de déclencheur de flux. Cette modularité permet une modification isolée et une extension simple, réduisant considérablement le coût à long terme de propriété. |
Disponible Apex est divisé en modules fonctionnels dès la conception. Chaque classe Apex est destinée à implémenter un seul module de fonctionnalité. |
| Visibilité et gouvernance | Recommandé La nature visuelle de Flux offre une représentation intuitive de la logique métier. L'Explorateur de déclencheur de flux fournit une vue consolidée de tous les flux d'un objet, ce qui facilite la compréhension, la gouvernance et le dépannage des architectes et des administrateurs sans lire de code. |
Expertise requise L'utilisation d'une infrastructure de métadonnées pour organiser les déclencheurs est avantageuse, mais Apex nécessite une équipe de développement disciplinée pour garder le code organisé et maintenable. |
| Traitement en masse des données haute performance | Non recommandé Le risque d'atteindre les limites du gouverneur est élevé lorsqu'il s'agit d'une logique complexe ou de volumes de données importants. |
Recommandé Le code Apex exécute au plus près des services de base de la plate-forme et offre aux développeurs un contrôle renforcé sur l'optimisation des requêtes, le traitement des données et l'efficacité algorithmique. Cela améliore les performances et l'échelle, en particulier dans les scénarios complexes impliquant des volumes de données importants. |
| Logique robuste et structures de données | Disponible L'élément Transformation de flux peut faciliter certaines tâches de traitement complexes. Cependant, Flow n'a pas de structures de données Map et Set natives, ce qui rend le traitement des données complexes lourd et inefficace sur le plan informatique. |
Recommandé Apex fournit un accès complet aux structures Map et Set, ainsi qu'aux boucles programmatiques, pour une manipulation des données hautement efficace et sécurisée en masse. En tant que langage de programmation complet, Apex permet également d'accéder à des constructions logiques complexes, des structures de données et des modèles de conception qui peuvent aider à résoudre des problèmes métiers complexes de manière maintenable et efficace. Apex inclut une riche bibliothèque standard de fonctions avancées (par exemple, BusinessHours, Crypto) qui n'est pas disponible actuellement dans les outils déclaratifs. |
| Contrôle des transactions | Non disponible Le flux ne fournit aucun accès à `Database.savepoint`, `Database.rollback` ou aux opérations DML partiellement réussies pour des validations de transaction partielles ou des annulations. |
Disponible Apex fournit un contrôle complet et précis de l'intégrité des transactions et des scénarios complexes de reprise après erreur. |
| Distribution des e-mails | Recommandé L'envoi d'alertes par e-mail préconfigurées à partir d'un flux déclenché par un enregistrement est facile et évolutif. Des alertes par e-mail personnalisées peuvent être élaborées et distribuées à l'exécution. Les e-mails personnalisés sont soumis aux limites quotidiennes d'envoi. |
Disponible Apex peut générer et envoyer des e-mails personnalisés. Tous les e-mails envoyés depuis Apex sont soumis aux limites quotidiennes d'envoi. |
| Application des garanties de la plate-forme | Recommandé Le flux inclut des protections intégrées, telles que la mise en masse automatique et les réessais automatiques. Ces mesures augmentent la vitesse de valorisation et évitent les problèmes de performance qui nécessitent un codage manuel complexe. |
Application manuelle requise Les mesures de protection telles que le traitement en masse doivent être explicitement codées (par exemple, gérer les collections et éviter le SOQL dans les boucles). Les tentatives automatiques ne sont pas natives de déclencheurs et nécessitent une logique personnalisée complexe à implémenter. |
| Traitement asynchrone | Disponible Le flux offre des mécanismes faciles pour les automatisations qui nécessitent une transaction séparée dans un parcours asynchrone. Ces automatisations sont soumises à des limitations quotidiennes. |
Disponible Apex permet un contrôle total via la Capture des données de modification et les événements qui peuvent être mis en file d'attente et qui sont gérés par un abonné au déclencheur découplé. |
| Traitement planifié | Recommandé Les parcours planifiés du flux offrent une capacité de planification unique et puissante (par exemple, « déclencher 3 jours avant la date de fermeture »). Cette capacité inclut l'annulation et la replanification automatiques si les données de l'enregistrement changent. Ces automatisations sont soumises à des limitations quotidiennes. |
Non disponible Un déclencheur Apex ne peut pas planifier nativement un événement temporel, spécifique à un enregistrement, avec une annulation automatique. Apex planifié existe, mais il s'agit d'un mécanisme fondamentalement différent qui est exécuté à une heure spécifique et qui n'est pas planifié pendant le traitement d'un enregistrement individuel dans le cadre d'un déclencheur. |
| Ordonnancement et chorégraphie | Disponible L'Explorateur de déclencheur de flux permet aux administrateurs de définir un ordre d'exécution relatif pour plusieurs flux dans le même objet. |
Disponible Une infrastructure de déclencheur permet de contrôler avec précision l'ordre exact des automatisations. |
| Mises à jour de champs sur le même enregistrement | Disponible (avant la sauvegarde) Le flux déclenché par un enregistrement est l'option déclarative la plus performante pour mettre à jour l'enregistrement déclenchant avant l'engagement DML initial. |
Disponible (avant la sauvegarde) Apex offre les meilleures performances avec un minimum de frais généraux. |
| CRUD inter-objets | Disponible (après la sauvegarde) Le flux convient aux opérations DML inter-objets simples et peu complexes. |
Disponible (après la sauvegarde) Apex offre un contrôle supérieur de la déduplication, du traitement des erreurs et des performances pour les opérations DML inter-objets. |
| Déduplication du calcul coûteux | Disponible Flow excelle dans l'élimination des requêtes redondantes et des instructions DML via le traitement en masse automatique. Cependant, l'état ne peut pas être mis en cache ou partagé entre différents déclencheurs de flux ou entre plusieurs invocations du même flux dans une seule transaction. Cette limitation peut devenir importante dans des scénarios de performance extrême. |
Recommandé Apex offre des mécanismes de déduplication pour les opérations coûteuses. Les développeurs peuvent exploiter la mise en cache transactionnelle en utilisant des propriétés et des variables statiques, et la mise en cache au niveau de la plate-forme en utilisant Cache de la plate-forme, pour stocker et réutiliser des données. Ces techniques sont importantes pour réduire la consommation des limites du gouverneur transactionnel, telles que les requêtes SOQL, et garantir des performances et une évolutivité élevées. |
| Gestion des erreurs personnalisées | Disponible L'élément CustomError peut bloquer une opération d'enregistrement et afficher un message pour l'utilisateur. |
Recommandé La méthode addError() fournit un message d'erreur flexible au niveau du champ et conditionnel. |
| Cas d'utilisation | Description | Best-Fit | Justification |
|---|---|---|---|
| Traitement par lot hautement performant | Toute automatisation qui doit traiter efficacement des milliers d'enregistrements | Apex | Apex fournit des API riches pour l'interface avec la plate-forme et pour la vitesse brute. |
| Traitement complexe des données | Scénarios qui nécessitent une manipulation avancée des données | Apex | Apex fournit des structures de données, telles que Map et Set, qui ne sont pas disponibles en natif dans Flow, et peuvent être critiques pour écrire un code performant et sécurisé en masse. |
| Contrôle transactionnel | Mécanismes de contrôle tels que les points de sauvegarde, les annulations et les validations partielles | Apex | Apex permet d'accéder à des mécanismes tels que Database.savepoint et Database.rollback, et a la possibilité de traiter les opérations DML partiellement réussies. |
| Validation personnalisée sophistiquée | Validation des données dans plusieurs champs d'un enregistrement | Apex | Bien que Flux puisse empêcher l'enregistrement avec l'élément `CustomError`, il n'est pas disponible dans tous les types de flux, y compris les flux secondaires. La méthode Apex addError() fournit plusieurs messages d'erreur spécifiques à un champ qui peuvent être ajoutés à un enregistrement à tout moment pendant le traitement du déclencheur. |
| Logique moyennement complexe dans un processus simple | Logique et manipulation de données de complexité modérée, simplifiée par une bibliothèque standard de fonctions avancées, survenant dans le cadre d'un processus simple | Flux + Apex | Le flux déclenché par un enregistrement agit en tant que couche d'orchestration, tandis que les opérations hautement complexes sont encapsulées dans Apex invocable. |
| Logique simple à moyennement complexe | Manipulation de données de complexité faible à modérée, avec des mises à jour de déclencheur pour les objets de données principaux et associés | Flux | Le flux est généralement l'option incontournable, car il est basé sur un modèle déclaratif qui le rend accessible aux administrateurs et aux développeurs. |
| Notifications et messages sortants | Envoi d'e-mails et de messages sortants | Flux | Le flux facilite et adapte considérablement l'envoi d'alertes par e-mail et de messages sortants lors de modifications d'enregistrement. |
| Traitement planifié | Automatisation à une date future et dynamique (par exemple, 3 jours avant une date de fermeture) | Flux | Les parcours planifiés offrent une force unique à Flux, car la plate-forme gère automatiquement la planification, l'annulation et la replanification de ces parcours si les données de l'enregistrement changent. |
### L'alternative de la tâche planifiée
Comme l'indique le diagramme, lorsque vous êtes confronté à des opérations DML à haut volume, mais que vous ne pouvez pas utiliser la Capture des données de modification (peut-être en raison des limitations des objets), le meilleur choix architectural est souvent d'éviter entièrement un processus invoqué par le déclencheur.
Vous pouvez à la place utiliser un processus planifié. Cela peut être soit un flux planifié, soit Apex planifié. Les étapes requises sont :
1. Effectuez une mise à jour simple et économique dans le déclencheur synchrone. Par exemple, définissez un champ de `Status__c` sur « traitement en attente » ou insérez un enregistrement associé peu coûteux, par exemple une publication Chatter, pour indiquer que l'enregistrement doit être traité.
2. Créez une tâche planifiée, soit un flux planifié ou Apex planifié, qui est exécutée périodiquement, par exemple toutes les 15 minutes ou toutes les heures.
3. Définissez la requête de tâche planifiée pour tous les enregistrements à l'état en attente, exécutez la logique complexe dans un contexte contrôlé à haut volume, puis mettez à jour les enregistrements tels qu'ils sont traités.
Ce schéma découple totalement le traitement lourd de l'enregistrement synchrone de l'utilisateur, n'est pas soumis à la limite d'une tâche par transaction d'un lot déclenché par un déclencheur, et offre une solution hautement évolutive et gouvernable pour les exigences en temps réel.
Si la latence d'une tâche planifiée n'est pas acceptable pour les exigences métiers, et que vous êtes toujours contraint d'utiliser CDC ou une file d'attente déclenchée par un déclencheur, cela indique un décalage architectural important. À ce stade, différents mécanismes doivent être envisagés. La réévaluation de la conception de l'application principale peut conduire à certaines conclusions, notamment :
- Achat du complément pour retirer les limites en objets CDC.
- Défiant fondamentalement l'exigence métier de déterminer si le traitement en temps quasi réel est vraiment un « must-have » ou si la latence d'une tâche planifiée est un compromis acceptable pour la stabilité de la plate-forme.
## Considérations non fonctionnelles
En plus des points de décision, vous devrez prendre en compte des considérations non fonctionnelles telles que la complexité et les normes.
### Complexité
Le niveau de complexité d'une implémentation fait partie du coût total de possession d'une solution, ainsi que de sa capacité à s'adapter aux exigences métiers changeantes. La complexité peut impacter n'importe quelle implémentation si les meilleures pratiques ne sont pas respectées. La section _Meilleures pratiques connexes_ de ce document contient des recommandations pour réduire la complexité de votre solution, notamment les modèles suivants :
- Modèle hybride : Apex invocable pour une logique complexe dans un flux
- Utilisation d'une infrastructure de métadonnées pour les déclencheurs Apex
- Méga-flux et flux multiples
### Processus et normes
La documentation est aussi importante que l'automatisation elle-même. Il garantit non seulement la maintenabilité, mais il est également essentiel pour l'IA et les outils basés sur l'agent. La documentation vous aide à comprendre et à gérer vos processus métiers.
**Dans Flow**
- Établissez une convention de nommage cohérente pour tous les éléments et variables.
- Utilisez le champ Description du flux pour expliquer son objet global, les critères de déclenchement et le résultat escompté.
- Utilisez le champ Description de chaque élément individuel (par exemple, `Get Records`, `Action`, `Transform`). Cette pratique est la meilleure façon de transmettre l'intention. Elle est particulièrement importante pour les actions invocables et les flux secondaires, où la description est l'emplacement principal pour expliquer la logique complexe exécutée par l'action.
**Dans Apex**
- Commentez clairement votre code pour expliquer le _pourquoi_ de votre logique, pas seulement le _quoi_.
- Si vous utilisez une infrastructure pilotée par les métadonnées, assurez-vous que vos enregistrements de métadonnées contiennent et remplissent un champ Description lisible par l'utilisateur pour expliquer ce que fait chaque classe gestionnaire et quand elle doit être exécutée.
Le DevOps et le contrôle du code source font partie d'un cycle de vie de développement mature. Utilisez toujours un outil de contrôle de code source tel que Git pour des projets Salesforce. Les classes Apex et les flux Salesforce sont des métadonnées qui définissent votre logique métier, et ils doivent être contrôlés et gérés par version.
Dans le contexte de la gestion des automatisations déclenchées par un enregistrement, un pipeline DevOps moderne offre des avantages essentiels.
- **Contrôles de qualité automatisés :** Des outils tels que [Salesforce Code Analyzer](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview) peuvent être configurés pour être exécutés automatiquement dans votre pipeline. L ' analyse statique peut détecter des modèles problématiques dans les deux outils d ' automatisation avant qu ' ils ne soient promus, en signalant des problèmes tels que des éléments de `Get Records` inefficaces dans une boucle de flux ou des requêtes `SOQL` dans une boucle Apex for, qui sont des causes courantes de dégradation des performances.
- **Prévention de la régression :** À mesure que votre densité d'automatisation augmente, un changement vers une classe Flux ou Apex peut avoir des conséquences involontaires sur d'autres automatisations dans le même objet. Une stratégie de test DevOps robuste, dans laquelle des tests Apex automatisés sont exécutés contre toute modification proposée, est la méthode la plus fiable pour s'assurer qu'une nouvelle version de flux ne rompe pas la logique Apex existante (et inversement).
- **Collaboration et visibilité :** Le contrôle de la source est la « source unique de vérité ». Il permet aux administrateurs et aux développeurs de travailler en parallèle sur l'automatisation d'un même objet. Il fournit également un parcours d'audit inestimable : Lorsqu'un processus de production se rompt, vous pouvez déterminer instantanément _qui_ a modifié l'automatisation, _quand_ ils l'ont modifiée et, via des messages d'engagement, _pourquoi_ ils l'ont modifiée.
[DevanOps Center](https://help.salesforce.com/s/articleView?id=platform.devops_center_overview.htm&type=5) fournit une interface unifiée qui facilite la chorégraphie de toutes ces étapes pour permettre à tous les membres de l ' équipe d ' accéder à un processus de développement évolutif, basé sur le contrôle des sources.
Cette discipline combinée de documentation et de DevOps garantit la santé et la maintenance à long terme de votre organisation, ce qui profitera à chaque architecte et administrateur qui vous suit.
## Meilleures pratiques associées
Le guide de décision ci-dessus est préférable avant de planifier votre implémentation. Il vise à vous aider à choisir le meilleur produit pour vos cas d'utilisation. Après la sélection du produit, il est important de comprendre les meilleures pratiques existantes pour votre implémentation.
### Exploitez le modèle hybride : Apex invocable pour une logique complexe dans un flux
Le principe _Un outil par objet_ est essentiel pour gérer l'automatisation à haute densité, mais ne l'interprètez pas comme un choix binaire entre une pile purement déclarative ou purement programmatique. Un modèle architectural plus efficace et plus facile à maintenir exploite un modèle hybride : positionner Flux déclenché par un enregistrement en tant que couche d'orchestration, tout en encapsulant les opérations hautement complexes au sein d'Apex invocable.
#### La couche d’orchestration : Flux
Le Flow déclenché par un enregistrement sert de couche d’orchestration au processus métier. Il est propriétaire des critères d'entrée et du contexte d'exécution (le _quoi_ et _quand_). En conservant la logique de décision et l'acheminement au sein de cette couche, la topologie des processus de l'architecture reste transparente et gérable via l'Explorateur de déclencheur de flux, ce qui évite que la logique métier critique soit masquée dans le code.
#### Le composant complexe : Apex invocable
Un exemple courant de composant complexe est l'implémentation de calculs d'accord de niveau de service (SLA) pour des enregistrements Requête. Comme l'objet BusinessHours et sa logique associée — critique pour des calculs précis qui excluent les heures non travaillées et les congés — n'est pas accessible en natif dans Flux, une classe Apex dédiée est utilisée. Cette classe, souvent appelée `ServiceLevelAgreementCalculator`, est conçue avec une méthode statique unique, annotée avec `@InvocableMethod`, pour calculer les heures ouvrables écoulées, déterminer si l'accord de niveau de service est « Dans les limites de l'objectif » ou « Atteint », et renvoyer une sortie structurée. Cette approche encapsule la logique complexe et performante dans Apex tout en permettant son exécution transparente et son intégration dans la couche d'orchestration déclarative d'un flux déclenché par un enregistrement.
Une fois la classe `ServiceLevelAgreementCalculator` Apex définie, elle peut être utilisée dans un flux déclenché par un enregistrement :
Ce schéma démontre une stricte séparation des préoccupations. La couche déclarative est utilisée pour gérer le cycle de vie et l'orchestration des transactions, tandis que le code est utilisé pour l'exécution complexe. En traitant le code comme un utilitaire fonctionnel plutôt que comme la fondation, nous équilibrons les performances et la maintenabilité.
#### Principaux gains avec le schéma hybride
**Modularité**: La décision s'éloigne de l'utilisation exclusive d'Apex ou Flow pour l'ensemble du processus. À la place, l'architecture encapsule une logique complexe dans des unités discrètes, sûres en masse et testables indépendamment. Ces unités fonctionnent comme des composants réutilisables consommés par la couche déclarative, assurant les échelles d'automatisation sans compliquer la conception architecturale.
**Réutilisabilité**: La logique est découplée de l'événement déclencheur. Une unité de code bien conçue (telle qu'une `InvocableMethod`) est écrite une seule fois, mais exploitée à travers plusieurs points d'entrée : Flux déclenchés par un enregistrement, flux d'écran ou intégrations externes. Cette réutilisation de code élimine les développements redondants.
**Maintenabilité**: La logique de flux de processus reste visible et gérable dans le flux déclaratif. Cette centralisation réduit considérablement les frais de débogage et garantit que l'ordre d'exécution du système est déterministe et transparent.
#### Limitations et compromis du modèle hybride
Bien que le modèle hybride d'utilisation d'Apex invocable à partir d'un flux soit puissant, il ne s'agit pas d'une approche unique. Les architectes doivent être conscients des limitations et des compromis spécifiques avant de s'engager dans une solution hybride.
- **Aucun support avant la sauvegarde**: C'est la limite la plus critique. Les actions invocables sont disponibles uniquement dans le contexte après la sauvegarde (flux d'actions et d'enregistrements associés). Ils ne peuvent pas être utilisés dans le contexte très performant avant la sauvegarde (flux de mises à jour de champ rapides). Par conséquent, ce modèle ne peut pas être utilisé pour déléguer les mises à jour de champ du même enregistrement. Exécutez ce travail très performant en utilisant des éléments Flux natifs dans un flux avant la sauvegarde ou dans un déclencheur Apex avant le contexte.
- **Aucun support after-undelete :** Actuellement, le flux déclenché par un enregistrement ne prend pas en charge le contexte after-undelete. Si un Objet Salesforce a une exigence métier pour exécuter une automatisation lorsqu'un enregistrement est restauré depuis la corbeille, un déclencheur Apex est la seule solution.
- **Surcharge de performance dans les scénarios à haut volume :** Le passage de l'exécution du flux à l'exécution Apex n'est pas une opération à coût nul. Bien que généralement rapide, l'action de tomber dans une Action invocable à partir de l'exécution de Flux n'est pas aussi rapide en calcul que l'exécution native qui reste entièrement dans un déclencheur Apex. Pour la plupart des automatisations à densité moyenne, ce micro-coût est un compromis négligeable et intéressant pour l'accessibilité accrue. Cependant, pour des scénarios extrêmement performants et à haut volume, une infrastructure Apex uniquement pure aura un avantage de vitesse de calcul brute.
### Stratégies pour l'automatisation héritée
Bien que l'heuristique de densité de l'automatisation fournisse des orientations définitives pour une architecture nouvelle, la réalité des environnements Salesforce d'entreprise est souvent plus nuancée. Dans les organisations matures, il est courant de trouver des flux déclenchés par un enregistrement et des déclencheurs Apex fonctionnant sur le même Objet Salesforce. Ce scénario se distingue du schéma hybride expliqué précédemment : Ici, les flux et les déclencheurs Apex ne sont ni couplés, ni conçus pour fonctionner ensemble.
Cette coexistence est souvent le résultat de l'évolution des capacités de la plate-forme ou de la dette technique héritée. Bien que cet état opérationnel soit toléré, les architectes doivent le traiter comme un compromis calculé plutôt que comme un état final.
L'orchestration fragmentée entraîne des coûts de gouvernance et de maintenance importants, ce qui rend les activités de développement, de test et de gestion des incidents difficiles et complexes. Cela entraîne une augmentation du délai de résolution (TTR) et de la complexité opérationnelle.
- Pour les nouveaux objets Salesforce, suivez le principe de densité d'automatisation comme guide principal.
- Pour les objets Salesforce existants présentant une empreinte hybride, avec à la fois un déclencheur Apex et un flux déclenché par un enregistrement, évaluez la densité, puis concevez l'architecture afin de refactoriser vers un état hybride maintenable.
- Pour une faible densité, refactorisez Apex déclenche des flux déclenchés par un enregistrement, et spécifiez l'ordre d'exécution, en les amenant à un point d'entrée d'automatisation unique.
- Pour une densité moyenne, refactorisez les méga-flux complexes dans un sous-ensemble de flux, avec le bon ordre d'exécution. Introduisez des déclencheurs Apex uniquement lorsque cela est absolument nécessaire, par exemple pour prendre en charge le contexte after undelete.
- Pour une densité élevée, privilégiez l'implémentation de déclencheurs Apex.
### Utilisation d'une infrastructure de métadonnées pour les déclencheurs Apex
À mesure que les processus métier d'une organisation sur la plateforme Salesforce mûrissent, le volume et la complexité de l'automatisation déclenchée par l'enregistrement augmentent inévitablement. Une meilleure pratique fondamentale consiste à maintenir _un déclencheur Apex par objet Salesforce_. Cette règle est critique, car la plate-forme ne garantit pas l'ordre d'exécution de plusieurs déclencheurs sur le même objet pour le même événement. Cette limitation peut entraîner un comportement non déterministe, des conditions de course et des problèmes difficiles à déboguer.
Cependant, l'adhésion au principe d'_un déclencheur_ introduit un défi architectural : comment gérer et orchestrer de manière maintenable et évolutive toute la logique métier invoquée à partir de ce point d'entrée unique.
#### Limitations des gestionnaires Classic Trigger Handler
La première évolution de cette architecture a été le modèle Classic Trigger Handler. Dans cette approche, le déclencheur Apex unique délègue toute sa logique à une classe gestionnaire correspondante (par exemple, `OpportunityTriggerHandler`). Cette méthode sépare la logique du fichier déclencheur et fournit aux développeurs un contrôle déterministe sur l'ordre d'exécution dans les méthodes de la classe gestionnaire (par exemple, `afterInsert()`).
Bien qu'il s'agisse d'une amélioration, ce modèle conduit souvent à des classes de gestionnaire monolithiques. Au fil du temps, à mesure que les exigences métiers augmentent, la classe devient grande, difficile à gérer et difficile à tester isolément. L'ordre d'exécution de tous les processus individuels est codé en dur dans une seule méthode, ce qui rend la classe sujette aux conflits de fusion, augmentant considérablement les coûts de gouvernance et de maintenance dans un environnement de grande entreprise.
#### La solution : Une infrastructure de déclencheurs pilotée par les métadonnées
Pour résoudre les problèmes fondamentaux de modularité et d'orchestration, les architectes adoptent une **infrastructure de déclencheurs** pilotée par les métadonnées. Il s'agit d'un saut architectural important qui dissocie la logique d'automatisation elle-même de la configuration de _son_ exécution et _de sa date_ d'exécution.
Cette infrastructure repose sur trois avantages clés :
- **Partitionnement :** Au lieu d ' une seule classe gestionnaire, la logique métier de base est divisée en petites classes Apex atomiques (par exemple, une classe `RecalculateAccountValues` ou une classe `NotifySalesLeads`), chaque classe adhérant au _principe de responsabilité_ unique. Cette modularité facilite le test, le débogage et la compréhension isolés de la logique.
- **Ordre et chorégraphie :** L'ordre d'exécution n'est plus codé en dur dans Apex. À la place, il est défini par déclaration par des enregistrements de configuration, généralement stockés dans un type de métadonnées personnalisées (par exemple, `TriggerAction__mdt`). Cela permet aux administrateurs de réorganiser, d'ajouter ou de retirer des actions d'automatisation simplement en modifiant un enregistrement de métadonnées, ce qui ne nécessite pas de déploiement ni de changement de code.
- **Fonctionnalité de contournement :** L'infrastructure fournit une fonctionnalité de contournement standardisée et granulaire. Chaque action d'automatisation peut être configurée via son enregistrement de métadonnées pour être désactivée globalement, ou contournée pour des utilisateurs administratifs spécifiques en référençant une autorisation personnalisée.
Le déclencheur Apex unique de l'objet sert alors uniquement de répartiteur dynamique. Il ne contient aucune logique métier, mais instancie à la place une classe `MetadataTriggerHandler` centrale. Ce gestionnaire interroge les enregistrements de métadonnées personnalisées pour déterminer dynamiquement la séquence d'exécution et invoquer les classes Apex atomiques correctes dans l'ordre prescrit. L'automatisation est unifiée sous une couche unique, transparente et gouvernable.
### La déduplication des opérations coûteuses dans la transaction
Un avantage important de l'utilisation Apex dans une infrastructure robuste est la possibilité de gérer l'état transactionnel et d'optimiser les performances en éliminant le travail redondant. À mesure que la logique s'accumule, il est fréquent que différentes automatisations dans l'ordre d'enregistrement exécutent indépendamment les mêmes opérations coûteuses, ce qui consomme les limites du gouverneur et augmente le temps d'exécution des opérations DML.
Le cadre est conçu pour répondre à ce besoin avec deux stratégies principales :
- **Gestion d'état partagée :** Dans le cadre d'une transaction Apex unique, les propriétés et les variables statiques sont exploitées pour mettre en cache les données. Ainsi, une opération coûteuse, par exemple une requête `SOQL` pour un paramètre de configuration, n'est exécutée qu'une seule fois, même si la logique d'automatisation est invoquée plusieurs fois dans différents enregistrements ou phases du déclencheur. La consommation de limites transactionnelles est considérablement réduite.
- **Utilisation du cache de la plateforme :** Pour aller au-delà de la simple mise en cache intra-transaction, utilisez le cache de la plate-forme afin d'éviter d'interroger certaines données dans la base de données complète. Ce cache géré en mémoire est idéal pour récupérer des données non primitives, lues fréquemment dans la base de code et immuables tout au long d'une transaction (par exemple, profils, rôles, heures ouvrables). En utilisant l'interface `Cache.CacheBuilder`, le système vérifie d'abord le cache et exécute la requête de base de données uniquement si les données sont absentes, ce qui optimise les performances et l'évolutivité.
### Utilisation de Before-Save pour les mises à jour du même enregistrement
Utilisez toujours une mise à jour avant la sauvegarde lorsque votre automatisation doit modifier uniquement les valeurs de champ dans l'enregistrement qui démarre la transaction. Cela s'applique aussi bien aux mises à jour de champ rapide dans Flux (qui s'exécutent avant la sauvegarde) qu'à la logique avant le contexte dans Déclencheurs Apex (avant l'insertion, avant la mise à jour).
Ce schéma est performant, quel que soit l'outil utilisé, car il évite une deuxième opération DML et un cycle d'enregistrement récursif. Les modifications sont apportées à l'enregistrement en mémoire _avant_ son engagement dans la base de données et sont enregistrées dans le cadre de la transaction d'origine. Les frais généraux d'une deuxième sauvegarde, qui autrement réexécuterait l'ordre de sauvegarde complet et déclencherait de nouveau toute l'automatisation, sont éliminés.
### Prévention de la récursion incontrôlée
La récursion non contrôlée est un piège courant dans les déclencheurs après mise à jour, où la logique d'un déclencheur effectue une mise à jour DML qui entraîne à son tour le déclenchement du même déclencheur. Cela crée une boucle infinie qui se termine par une exception de limite du gouverneur. Bien que des indicateurs booléens statiques ou des collections d'ID d'enregistrement traités aient toujours été utilisés pour empêcher une telle récursion, un modèle plus précis et plus robuste consiste à lier la logique en comparant les valeurs de champ entre la nouvelle et l'ancienne version de l'enregistrement lui-même.
Exécutez la logique uniquement si un champ d'intérêt spécifique a changé. Cela empêche le déclencheur d'exécuter sa logique sur les opérations DML suivantes dans la même transaction où les données critiques restent inchangées.
#### Contrôle de la récursion dans un flux déclenché par un enregistrement
Dans un flux déclenché par un enregistrement, empêchez la récursion incontrôlée en définissant l'exécution du flux uniquement lorsque l'enregistrement est mis à jour pour remplir les conditions requises :
Si vous choisissez d'utiliser une formule de critères d'entrée dans votre flux, vous pouvez empêcher une récursion galopante en comparant la variable globale `$Record` (représentant les nouvelles valeurs) à la variable globale `$RecordPrior` (représentant les valeurs d'origine avant l'enregistrement). Par exemple, pour vous assurer qu'un flux est exécuté uniquement si le champ Montant d'une opportunité a changé, utilisez-le dans les critères d'entrée :
```
$Record.Amount != $Record__Prior.Amount
```
#### Contrôle de la récursion dans Apex
Comparez les valeurs de champ de la nouvelle version de l'enregistrement, `Trigger.new`, aux valeurs de champ de l'ancienne version de l'enregistrement, `Trigger.oldMap`, pour déterminer si la modification spécifique que vous recherchez s'est produite. Cette approche garantit que l'automatisation est idempotente et exécutée uniquement lorsque nécessaire, ce qui rend le système plus efficace et évite les boucles récursives catastrophiques.
### Contournement de l'automatisation
Une organisation Salesforce bien architecturée nécessite un mécanisme cohérent et fiable pour contourner l'automatisation. Il ne s'agit pas d'une fonctionnalité facultative, mais d'une exigence opérationnelle essentielle pour préserver l'intégrité des données et activer les tâches administratives.
Un cadre de contournement est essentiel pour certains scénarios :
- Lors du chargement de volumes de données importants, le déclenchement de déclencheurs pour chaque enregistrement peut ralentir considérablement le processus, entraîner des exceptions de limite et créer des enregistrements et des notifications associés erronés. Un contournement permet d'insérer les données proprement et efficacement.
- Un utilisateur de l'intégration peut avoir besoin de synchroniser des données à partir d'un système d'enregistrement externe. L'automatisation normalement déclenchée pour une modification initiée par l'utilisateur (par exemple, envoyer un e-mail, créer une tâche) peut être indésirable ou redondante lorsque la modification provient d'un autre système.
- Les administrateurs ou le personnel de support peuvent avoir à effectuer des mises à jour correctives sur les enregistrements. Un mécanisme de contournement leur permet d'effectuer ces modifications sans déclencher l'automatisation métier standard, ce qui pourrait avoir des conséquences inattendues.
**Autorisations personnalisées**: La norme moderne et évolutive pour l'implémentation d'une logique de contournement est celle des autorisations personnalisées. Elles sont supérieures aux anciennes méthodes pour plusieurs raisons :
- **Flexibilité :** Des autorisations personnalisées peuvent être attribuées à des utilisateurs via des ensembles d'autorisations. Cette pratique s'aligne sur le modèle moderne de sécurité et d'accès de Salesforce, ce qui permet une attribution granulaire et flexible. Un contournement peut être accordé à un utilisateur spécifique, ou même temporairement avec une date/heure d'expiration spécifique.
- **Maintenabilité :** L'utilisation d'autorisations personnalisées évite de coder en dur des profils ou des utilisateurs dans une logique d'automatisation. Si le rôle d'un utilisateur change ou si un nouveau profil doit contourner l'accès, la modification est une simple attribution d'ensemble d'autorisations, pas une modification de code ou de flux qui nécessite un déploiement.
- **Évolutivité :** Les autorisations personnalisées offrent une infrastructure évolutive pour gérer les exceptions dans une base d'utilisateurs complexe. Ils peuvent être attribués à des utilisateurs via un ensemble d'autorisations, des groupes d'ensembles d'autorisations ou des profils. Leur association à un ensemble d'autorisations ou à un profil peut également être représentée dans les métadonnées sources.
**Schémas d'implémentation**: Appliquez un modèle de contournement cohérent à toutes les automatisations déclenchées par un enregistrement dans l'organisation.
**Contournement d'un flux déclenché par un enregistrement**: La méthode la plus efficace pour contourner un flux est d'empêcher son exécution. Pour ce faire, ajoutez une condition aux critères d'entrée du flux.
- Dans l'élément Démarrer du flux déclenché par l'enregistrement, définissez les exigences de condition sur « La formule est vraie ».
- Dans le générateur de formule, incorporez une vérification de l'autorisation personnalisée en utilisant la variable globale `$Permission`. Combinez la vérification à vos critères d'entrée existants.
- Modèle de formule :
```
( ) && NOT($Permission.Bypass_This_Flow)
```
- Ce modèle garantit que le flux est exécuté uniquement si l'utilisateur _n'_a pas l'autorisation personnalisée spécifiée attribuée. Ce contrôle est effectué avant même la création de l'interview de flux, ce qui en fait l'approche la plus performante.
**Contournement d'une infrastructure de déclencheurs Apex**: Dans Apex, intégrez la logique de contournement directement à l'infrastructure de déclencheur pilotée par les métadonnées, ce qui permet un contrôle granulaire.
- Le type de métadonnées personnalisées `TriggerAction__mdt` doit inclure un champ de texte, par exemple `BypassPermission__c`.
- Dans la classe `MetadataTriggerHandler`, avant d'exécuter dynamiquement une action, le code doit lire la valeur de ce champ.
- Si le champ est rempli, le gestionnaire utilise la méthode `FeatureManagement.checkPermission()` pour déterminer si l'utilisateur actif actuel dispose de l'autorisation personnalisée spécifiée.
- Si `checkPermission()` renvoie true, le gestionnaire ignore cette action spécifique et passe à la suivante dans la séquence.
- Ce modèle est puissant, car il permet à la fois un contournement global (si tous les enregistrements `TriggerAction__mdt` référencent la même autorisation) et un contournement granulaire par action (si différents enregistrements référencent différentes autorisations, ou si certains n'ont aucune autorisation de contournement du tout).
### Méga-flux et flux multiples
C'est un anti-pattern de consolider toute l'automatisation d'un objet en un seul méga-flux massif. La consolidation en un seul flux par opposition à la séparation d'une logique en plusieurs flux bien conditionnés n'a pas d'impact majeur sur les performances. Les gains de performance les plus importants proviennent des éléments suivants :
- Utilisation de flux avant la sauvegarde pour les mises à jour de champ du même enregistrement.
- Écriture de conditions d'entrée précises afin d'empêcher l'exécution de flux avec des modifications qui n'impactent pas leur cas d'utilisation spécifique.
[L'Explorateur de déclencheur](https://trailhead.salesforce.com/content/learn/modules/record-triggered-flows/meet-flow-trigger-explorer) de flux permet d'attribuer une valeur d'ordre à chaque flux d'un objet, garantissant ainsi un ordre d'exécution séquentiel.
## Ressources
| Apex | Flux | Opérations |
|---|---|---|
| Formulaires dynamiques | Les formulaires dynamiques du Générateur d'applications Salesforce Lightning divisent les composants Détail d'enregistrement monolithiques en champs et sections individuels et configurables. Cette fonctionnalité permet aux administrateurs de créer des pages flexibles et performantes en plaçant des champs n'importe où et en utilisant des règles de visibilité pour afficher ou masquer des composants basés sur le profil utilisateur, l'appareil ou les données, ce qui réduit l'encombrement des pages. |
|---|---|
| Flux d'écran | Un flux d'écran Salesforce est un outil d'automatisation interactif dans Flow Builder qui nécessite l'entrée de l'utilisateur pour progresser à travers des processus métiers personnalisés, étape par étape. Contrairement aux flux d'arrière-plan automatisés, les flux d'écran offrent une interface utilisateur semblable à un assistant qui permet de collecter des données, d'afficher des informations, ou d'exécuter des actions via des pages Lightning, des boutons ou des applications personnalisées sans écrire de code. |
| Omnistudio | Salesforce Omnistudio est une suite d'outils à faible code conçue pour élaborer rapidement des expériences numériques guidées et spécifiques au secteur d'activité, et des processus métiers complexes. Il permet aux développeurs de créer des interfaces utilisateur parfaites en pixels (par exemple, des workflows guidés et des tableaux de bord dynamiques) en utilisant des composants glisser-déposer tels que des Flexcards et des Omniscripts. Avec Omnistudio, vous pouvez créer de manière déclarative des LWC (Lightning Web Components). |
| Composants Web Lightning | Les composants Web Lightning Salesforce sont des éléments HTML personnalisés légers, élaborés en utilisant HTML, CSS et JavaScript moderne, et conçus pour être exécutés en natif dans les navigateurs afin d'améliorer les performances de l'interface utilisateur de Salesforce. Ils permettent aux développeurs de créer des interfaces utilisateur personnalisées qui coexistent avec des composants Aura, ce qui augmente le développement grâce aux normes de l'industrie et à un écosystème de composants détaillé. |
| Configuration | Exigences de licence supplémentaires | |
|---|---|---|
| Formulaires dynamiques | Code faible | Aucun |
| Flux d'écran | Code faible | Aucun |
| Omnistudio | Low Code + Pro Code | Industries Package |
| Flux d'écran plus composants Web Lightning | Low Code + Pro Code | Aucun |
| Composants Web Lightning | Code Pro | Aucun |
| Point de décision | Guide |
|---|---|
| Catégories de cas d'utilisation à l'exécution | |
| Étendue du formulaire et navigation | Déterminez si tous les champs de votre formulaire s'adapteront logiquement à un seul écran ou si les utilisateurs doivent pouvoir naviguer entre plusieurs écrans. |
| Emplacement | Identifiez le ou les emplacements où vous souhaitez incorporer le formulaire, qui peuvent aller d'une application Salesforce à une application mobile en passant par un site Web externe. |
| Contrôleur | Identifiez les actions ou la logique qui doivent être exécutées en arrière-plan lorsque les utilisateurs interagissent avec votre formulaire, y compris les transformations de données et les intégrations à des systèmes externes. |
| Validation | Déterminez si vous avez des exigences de validation d'entrée supplémentaires qui vont au-delà de la validation au niveau système standard fournie par Salesforce. |
| Conception de l’interaction | Identifiez les types d'interaction ou de condition qui doivent déclencher des réponses dynamiques dans votre formulaire. |
| Style | Déterminez le niveau de sophistication nécessaire pour votre style et vos exigences CSS. |
| Présentation | Identifiez les exigences de présentation de votre formulaire (par exemple, le nombre requis de colonnes, d'onglets et d'accordéons) et la possibilité d'afficher des blocs de données récurrents. |
| Traduction | Déterminez si votre formulaire doit être traduit dans d'autres langues. |
| Considérations non fonctionnelles | |
| Sécurité | Déterminez si votre formulaire doit vérifier l'accès de l'utilisateur avant d'effectuer certaines opérations, si vous souhaitez contrôler qui peut accéder au formulaire et si vous souhaitez contrôler l'emplacement où le formulaire peut être incorporé. |
| Impact sur l'objet | Déterminez si votre formulaire fonctionne avec un seul objet ou avec plusieurs objets. |
| Automatisation des tests d'interface utilisateur | Déterminez si vos processus DevOps nécessitent que votre formulaire soit soumis à des tests unitaires automatisés ou à des tests de bout en bout automatisés. |
| Métriques | Identifiez comment vous souhaitez suivre l'utilisation de votre formulaire, notamment les vues de page, le temps consacré au formulaire, les taux de réalisation et les taux de réussite. |
| Empaquetage et déploiement | Déterminez comment vous souhaitez distribuer ou déployer votre formulaire une fois élaboré. |
| Écran unique | Formulaire à écrans multiples | Indicateurs de progression | Navigation entre les étapes/écrans | |
|---|---|---|---|---|
| Formulaires dynamiques | Disponible | Non disponible | Disponible | Non disponible |
| Flux d'écran | Disponible | Disponible | Disponible | Non disponible |
| Omnistudio | Disponible | Disponible | Disponible | Disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible | Disponible |
| LWC | Disponible | Pas idéal | Pas idéal | Pas idéal |
| Page d'enregistrement Lightning | Page d'accueil Lightning ou page d'application | Sites Experience Cloud Aura | Sites Experience Cloud LWR | Snap-ins intégrés | Barre d'utilitaires | Action spécifique à un objet | Action globale | Application mobile Salesforce* | Field Service Mobile | Mobile SDK | Sites et applications externes | Composant Web Lightning personnalisé | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Formulaires dynamiques | Disponible | Non disponible | Non disponible | Non disponible | Non disponible | Non disponible | Non disponible | Non disponible | Disponible | Non disponible | Non disponible | Non disponible | Non disponible |
| Flux d'écran | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Non disponible | Disponible | Disponible** | Non disponible | Non disponible | Disponible |
| Omnistudio | Disponible | Disponible | Disponible | Non disponible | Non disponible | Disponible | Non disponible | Non disponible | Disponible | Non disponible | Non disponible | Disponible | Disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Non disponible | Disponible | Non disponible | Non disponible | Pas idéal | Disponible |
| LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Non disponible | Non disponible | Disponible | Non disponible | Non disponible | Disponible | Disponible |
| *Les flux et les composants Web Lightning sont pris en charge dans l'application mobile Salesforce, mais ils ne prennent pas en charge toutes les méthodes d'incorporation de flux et de composants Web Lightning (par exemple, les actions spécifiques à un objet sont prises en charge dans l'application mobile, mais pas les éléments de la barre d'utilitaires). **L'application mobile Salesforce Field Service inclut Capture de données, une solution de formulaires hors ligne élaborée sur le moteur de flux avec une exécution hors ligne dédiée, prenant en charge les toutes dernières fonctionnalités de Flux. L'application inclut également les flux mobiles Field Service hérités, qui fonctionnent sur un ancien moteur hors ligne personnalisé, et ne prennent pas en charge la plupart des dernières fonctionnalités de flux. | |||||||||||||
| Journal et actions | Gestion des données hiérarchiques | Opérer dans une seule transaction | Opérer sur plusieurs transactions | Intégration | Conception modulaire et réutilisation | Emballage | |
|---|---|---|---|---|---|---|---|
| Formulaires dynamiques | Non disponible | Non disponible | Non disponible | Non disponible | Non disponible | Non disponible | Disponible |
| Flux d'écran | Disponible | Non disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| Omnistudio | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Non disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| Respecter la validation au niveau système | Validation personnalisée au niveau du champ spécifique à ce formulaire | Validation personnalisée au niveau du champ | |
|---|---|---|---|
| Formulaires dynamiques | Disponible | Non disponible | Non disponible |
| Flux d'écran | Disponible | Non disponible | Non disponible |
| Omnistudio | Disponible | Disponible | Disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible |
| LWC | Disponible | Disponible | Disponible |
| Exécution d'opérations de données hors écran | Valeurs conditionnelles et calculs | Visibilité conditionnelle | Exigence conditionnelle | Mise en forme conditionnelle | État Lecture seule conditionnelle | État désactivé conditionnel | |
|---|---|---|---|---|---|---|---|
| Formulaires dynamiques | Non disponible | Non disponible | Disponible | Non disponible | Disponible | Non disponible | Non disponible |
| Flux d'écran | Disponible | Disponible* | Disponible | Disponible | Non disponible | Disponible | Disponible |
| Omnistudio | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| *Limité aux composants qui utilisent un sélecteur de ressource et non une case à cocher statique | |||||||
| Traitement des événements standard (onblur, onfocus) | Traitement des événements personnalisés | |
|---|---|---|
| Formulaires dynamiques | Non disponible | Non disponible |
| Flux d'écran | Non disponible | Non disponible |
| Omnistudio | Non disponible | Disponible* |
| Flux d'écran + LWC | Disponible | Disponible |
| LWC | Disponible | Disponible |
| *L'exécution Omnistudio Standard ne prend pas en charge Pub/Sub, mais prend en charge Windows postMessage | ||
| Style direct | Thèmes d'organisation et d'Experience Builder | Style pixel-perfect | |
|---|---|---|---|
| Formulaires dynamiques | Non disponible | Disponible | Non disponible |
| Flux d'écran | Non disponible | Disponible | Disponible** |
| Omnistudio | Disponible* | Non disponible | Disponible |
| Flux d'écran + LWC | Non disponible | Disponible | Disponible |
| LWC | Non disponible | Disponible | Disponible |
| * FlexCards uniquement **Certains attributs de style peuvent être configurés pour des composants d'écran, mais pas pour des remplacements CSS. | |||
| 2 colonnes | 4 colonnes | Au-delà de 4 colonnes | Répéter des blocs de données | Conteneurs d'onglets | Conteneurs en accordéon | |
|---|---|---|---|---|---|---|
| Formulaires dynamiques | Disponible | Non disponible | Non disponible | Non disponible | Disponible | Disponible |
| Flux d'écran | Disponible | Disponible | Non disponible | Disponible | Non disponible | Disponible |
| Omnistudio | Disponible | Disponible | Disponible | Disponible | Disponible* | Disponible |
| Flux d'écran + LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| LWC | Disponible | Disponible | Disponible | Disponible | Disponible | Disponible |
| *Les onglets peuvent être utilisés en incorporant des données à une FlexCard dans un Omniscript | ||||||
| Étiquettes saisies dans le Générateur | Étiquettes dans le code | |
|---|---|---|
| Formulaires dynamiques | Disponible* | Non disponible |
| Flux d'écran | Disponible | Disponible |
| Omnistudio | Disponible | Disponible |
| Flux d'écran + LWC | Disponible | Disponible |
| LWC | Sans objet | Disponible |
| *En-têtes de section de champ uniquement | ||
| Augmentation des autorisations utilisateur | Contrôle des utilisateurs qui ont accès | Restriction des emplacements autorisés | |
|---|---|---|---|
| Formulaires dynamiques | Non disponible | Disponible | Non disponible |
| Flux d'écran | Disponible | Disponible | Non disponible |
| Omnistudio | Non disponible | Disponible | Non disponible** |
| Flux d'écran + LWC | Disponible | Disponible | Non disponible |
| LWC | Disponible* | Disponible | Disponible |
| * Nécessite Apex **Les Omniscripts ne peuvent pas avoir un ensemble d'emplacements cibles spécifié, mais les FlexCards peuvent. | |||
| Tests unitaires | Automatisation de bout en bout | |
|---|---|---|
| Formulaires dynamiques | Non disponible | Disponible* |
| Flux d'écran | Non disponible | Disponible* |
| Omnistudio | Disponible* | Disponible* |
| Flux d'écran + LWC | Disponible* | Disponible* |
| LWC | Disponible | Disponible |
| *Nécessite un code | ||
| Vues de page | Temps passé sur le formulaire | Suivre l'achèvement du formulaire | Suivre le taux de réussite | |
|---|---|---|---|---|
| Formulaires dynamiques | Disponible** | Non disponible | Non disponible | Non disponible |
| Flux d'écran | Disponible | Disponible* | Disponible | Disponible |
| Omnistudio | Disponible | Disponible* | Disponible | Disponible |
| Flux d'écran + Composant Web Lightning | Disponible | Disponible* | Disponible | Disponible |
| LWC | Disponible** | Disponible* | Disponible | Disponible |
| *Disponible lorsque Exécution Omnistudio basée sur un package est activée** Disponible en suivant l'utilisation de la page Lightning parente | ||||
| Packages gérés de première génération (1GP) | Packages gérés de deuxième génération (2GP) | Packages déverrouillés | Ensembles de modifications | DevOps Center | |
|---|---|---|---|---|---|
| Formulaires dynamiques | Disponible | Disponible | Disponible | Disponible | Disponible |
| Flux d'écran | Disponible | Disponible | Disponible | Disponible | Disponible |
| Omnistudio | Non disponible | Non disponible | Non disponible | Non disponible* | Non disponible* |
| Flux d'écran + Composant Web Lightning | Disponible | Disponible | Disponible | Disponible | Disponible |
| LWC | Disponible | Disponible | Disponible | Disponible | Disponible |
| * Utilisez le Workbench IDX pour déployer les solutions Omnistudio dans d'autres organisations. | |||||
| Agentforce | Automatisation traditionnelle | Intégration |
|---|---|---|
| Domaine à considérer | Questions courantes |
|---|---|
| Outils et paysage existants | Existe-t-il une solution ESB ou ETL existante ? Les données concernées ont-elles des exigences réglementaires ou de conformité ? Où se situent les systèmes que vous essayez d'intégrer (dans le cloud ou sur site) ? |
| Flux de données (Temps, Expérience utilisateur attendue, Directionnalité) | Les données doivent-elles être déplacées de façon synchrone, asynchrone ou peuvent-elles être regroupées par lot ou planifiées ? La réplication des données est-elle requise ? Quel système doit être la source de la vérité ? Quelle est la source de données ? Quelle est la destination cible ? Une interaction utilisateur est-elle requise ? L'utilisateur doit-il afficher le résultat de l'intégration ? Quels sont les besoins liés au traitement des exceptions (réessayer, notifier, échouer) ? Quel est le degré de couplage des systèmes ? |
| Implémentation | Quel est le niveau d'effort pour les systèmes non-Salesforce ? Quelles sont les équipes responsables de la livraison des intégrations ? Quels outils préfèrent-ils utiliser ? |
| Maintenabilité | Quelles équipes devront maintenir l'intégration ? Quelles sont leurs compétences actuelles ? De quelles compétences auront-ils besoin à l'avenir? Quel est le coût total de possession au fil du temps ? Quelle est l'importance de pouvoir tester, déboguer, dépanner avec des outils à code faible ou pro ? |
| Volume de données | Quel volume de données est impliqué dans l'intégration ? Travaillerez-vous avec des Large Data Volumes (LDV) ? À quelle fréquence les changements se produiront-ils en masse ? Quel impact les mises à jour singleton auront-elles ? À quelle fréquence se produiront-elles? |
| Limites | Les données devront-elles subir une transformation complexe ? Les données doivent-elles être combinées à partir de plusieurs systèmes sources ? À quelle fréquence une intégration sera-t-elle effectuée par utilisateur ? Combien d'utilisateurs au total ? Avez-vous planifié à l'avance des chargements de données en masse (exemple : chargement initial des données pour une nouvelle instance) ? |
| De Salesforce au système externe | Du système externe à Salesforce | Exécution | Licence supplémentaire requise | |
|---|---|---|---|---|
| Actions Apex | Disponible | Disponible | Côté serveur | Non |
| Change Data Capture | Disponible | Non disponible | Côté serveur | Non* |
| Apex personnalisé (services Web REST et SOAP) | Disponible | Disponible | Côté serveur | Non |
| Services externes | Disponible | Non disponible | Côté serveur | Non |
| Heroku Connect | Disponible | Disponible | Côté serveur | Oui |
| Data 360 | Disponible | Disponible | Côté serveur | Oui |
| MuleSoft Anypoint | Disponible | Disponible | Côté serveur | Oui |
| API natives Salesforce | Non disponible | Disponible | Côté serveur | Non |
| Omniscript | Disponible | Disponible | Côté client*** | Oui |
| Procédure d'intégration OmniStudio | Disponible | Disponible | Côté serveur | Oui |
| Messagerie sortante | Pas idéal | Non disponible | Côté serveur | Non |
| Événements de plate-forme | Disponible | Disponible | Côté serveur | Non** |
| Salesforce Connect/Objets externes | Disponible | Disponible | Côté serveur | Oui |
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (lancer/ignorer) | Support multi-objets | LDV/En masse | Test et déploiement** | Débogage | Gestion intégrée des erreurs/comportement de réessai | Peut être utilisé avec des données cryptées au repos | Protocole d'authentification | |
| Capture des modifications de données | Lorsque vous devez publier des modifications au niveau de l'enregistrement effectuées dans Salesforce sur un système externe et que vous n'avez pas besoin d'une charge de travail personnalisée. | Obligatoire | Asynchrone | Non | Non | Oui | Avec des outils pro-code | Oui | Oui | OAuth |
| Services externes | Lorsque vous orchestrez un processus en utilisant Flow, Apex, Robots Einstein ou OmniStudio et que les API système externes sont décrites en utilisant les spécifications OpenAPI. | Non requis | Synchronisation | Oui | Non | Oui | Avec des outils pro-code | Non | S.O. | Identifiants nommés |
| Heroku Connect | Lorsque vous souhaitez étendre vos données avec la synchronisation bidirectionnelle pour activer les applications mobiles et autres dans Heroku, et que vous souhaitez également répliquer les données dans Salesforce. | Obligatoire | Asynchrone | Oui | Oui | Non | Avec des outils pro-code | Oui | Oui, via Shield Connect | OAuth |
| Procédure d'intégration OmniStudio | Lorsque vous devez transformer des données sans interaction de l'utilisateur et améliorer les performances en traitant sur le serveur au lieu du navigateur. | Obligatoire | Les deux | Oui | Oui | Oui | Support déclaratif | Oui | Oui | Identifiants nommés |
| Salesforce Connect/Objets externes | Lorsque vous souhaitez afficher des données dans l'interface utilisateur de Salesforce, mais que les données sont stockées dans un système externe. Les données ne sont pas répliquées dans Salesforce. | Obligatoire | Synchronisation | Non | Oui* | Oui | Avec des outils pro-code et un traceur déclaratif | Non | S.O. | Identifiants nommés |
| *Les adaptateurs Odata antérieurs à la version 4.01 sont soumis à des limitations en appels externes. Voir Considérations relatives à la limite en taux d'appels externes OData pour plus de détails. ** Test et déploiement désigne la possibilité d'élaborer dans un environnement inférieur et de déployer en production via l'API de métadonnées, des packages ou des ensembles de modifications. | ||||||||||
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (lancer/ignorer) | Support multi-objets | LDV/En masse | Test et déploiement** | Débogage | Gestion intégrée des erreurs/comportement de réessai | Peut être utilisé avec des données cryptées au repos | Protocole d'authentification | |
| Actions Apex | Lorsque vous souhaitez automatiser les appels externes vers un autre système via Salesforce Flow. Un développeur peut écrire une classe Apex qu'un flux peut invoquer, ou vous pouvez télécharger depuis AppExchange une solution prédéfinie. | Non requis | Les deux | Oui | Non | Oui | Avec des outils pro-code | Non | Oui | Multiple |
| Relais d'événements | Lorsque vous devez envoyer des événements de plate-forme et des événements de capture des données de modification à Amazon EventBridge depuis Salesforce. Les relais d'événements se connectent uniquement à AWS Eventbridge | Non | Asynchrone | Oui | Non | Oui | Oui | Oui | Oui | HTTP/1.1 avec TLS |
| Messagerie sortante | Lorsque vous devez envoyer des messages SOAP sur HTTP(S) à un point de terminaison désigné avec une réception garantie lorsqu'il est déclenché par une règle de workflow. | Non requis | Asynchrone | Non | Non | Oui | Support déclaratif | Oui | Oui | TLS bidirectionnel |
| Événements de plate-forme | Lorsque vous avez besoin d'une charge de travail structurée et définie sur mesure pour des modifications en temps quasi réel dans Salesforce ou un système externe. | Non requis* | Asynchrone | Oui | Non | Oui | Avec des outils pro-code | Oui | Oui | OAuth |
| Salesforce Connect/Objets externes (avec adaptateurs Apex personnalisés) | Lorsque vous souhaitez afficher des données dans l'interface utilisateur de Salesforce, mais que vous souhaitez que les données soient stockées dans un système externe qui ne peut pas utiliser des protocoles standard comme Odata ou GraphQL. | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | S.O. | Multiple |
| Data 360 | Lorsque vous souhaitez harmoniser les données de différentes sources dans un magasin de données, ou répliquer vos données dans d'autres organisations Salesforce ou dans d'autres systèmes externes. | Obligatoire | Les deux | Oui | Oui | Oui | Oui | Oui | Oui | Multiple |
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (émission/oubli) | Prise en charge multi-objets | LDV/En masse | Test et déploiement** | Débogage | Gestion intégrée des erreurs et comportement de réessai | Peut être utilisé avec des données chiffrées au repos | Protocole d'authentification | |
| Apex personnalisé | Lorsque vous avez besoin de fonctionnalités supérieures à celles disponibles dans les outils à faible code. | Non requis | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | Oui* | Multiple |
| Services externes | L'intégration à partir de code avec des API système externes est décrite en utilisant les spécifications OpenAPI. | Non requis | Synchronisation | Oui | Non | Oui | Avec des outils pro-code | Non | S.O. | Multiple |
| MuleSoft Anypoint | Lorsque vous avez besoin d'une solution unique unifiée de niveau entreprise pour élaborer, orchestrer et gérer vos intégrations, lorsque vous devez remplacer une architecture point à point héritée ou lorsque vous avez besoin d'un support de gestion d'API. | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | Oui* | Multiple |
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (déclenchement/oubli) | Prise en charge multi-objets | LDV/En masse | Test et déploiement* | Débogage | Gestion intégrée des erreurs et comportement de réessai | Peut être utilisé avec des données cryptées au repos | Protocole d'authentification | |
| Heroku Connect | Lorsque vous souhaitez étendre vos données avec la synchronisation bidirectionnelle pour activer les applications mobiles et autres dans Heroku, et que vous souhaitez également répliquer les données dans Salesforce. | Obligatoire | Asynchrone | Oui | Oui | Non | Avec des outils pro-code | Oui | Oui, via Shield Connect | OAuth |
| Procédure d'intégration OmniStudio | Lorsque vous devez importer et transformer des données à partir de sources tierces sans interaction de l'utilisateur. | Obligatoire | Les deux | Oui | Oui | Oui | Prise en charge déclarative | Non | Oui | Identifiants nommés |
| Salesforce Connect/Objets externes | Lorsque vous souhaitez afficher des données dans l'interface utilisateur de Salesforce, mais que vous souhaitez que les données soient stockées dans un système externe qui peut utiliser des protocoles standard comme Odata ou GraphQL. | Obligatoire | Synchronisation | Oui | Oui | Oui | Avec des outils pro-code | Non | S.O. | Multiple |
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (déclenchement/oubli) | Prise en charge multi-objets | LDV/En masse | Test et déploiement** | Débogage | Gestion intégrée des erreurs et comportement de réessai | Peut être utilisé avec des données cryptées au repos | Protocole d'authentification | |
| Événements de plate-forme | Lorsque vous avez besoin d'une charge de travail structurée et définie sur mesure pour des modifications en temps quasi réel dans Salesforce ou un système externe. | Non requis* | Asynchrone | Oui | Non | Oui | Avec des outils pro-code | Oui | Oui | OAuth |
| Salesforce Connect/Objets externes (avec adaptateurs Apex personnalisés) | Lorsque vous souhaitez afficher des données dans l'interface utilisateur de Salesforce, mais que les données sont stockées dans un système externe qui ne peut pas utiliser les protocoles Odata 2.0/4.0. | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | S.O. | Multiple |
| Data 360 | Lorsque vous souhaitez harmoniser les données de différentes sources dans un magasin de données, ou répliquer vos données d'autres organisations Salesforce ou d'autres systèmes externes. Data 360 prend également en charge la virtualisation pour certaines plates-formes. | Obligatoire | Les deux | Oui | Oui | Oui | Non | Oui | Oui | Multiple |
| Guide | Licence | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (exécution sans attente de réponse) | Prise en charge multi-objets | LDV/En masse | Test et déploiement**** | Débogage | Gestion intégrée des erreurs et comportement de réessai | Peut être utilisé avec des données cryptées au repos | Protocole d'authentification | |
| Services Web Apex REST & SOAP personnalisés | Lorsque vous avez besoin de fonctionnalités supplémentaires que celles fournies par les points de terminaison d'API natifs, par exemple le traitement inter-objets ou d'autres logiques complexes. | Non requis | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | Oui*** | Multiple |
| MuleSoft Anypoint | Lorsque vous avez besoin d'une solution unique unifiée de niveau entreprise pour élaborer, orchestrer et gérer vos intégrations, lorsque vous devez remplacer une architecture point à point héritée ou lorsque vous avez besoin d'un support de gestion d'API. | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | Oui*** | Multiple |
| APIs natives de Salesforce | Lorsque vous avez besoin de davantage de contrôle ou si vous avez un ensemble de compétences pro-code pour élaborer des intégrations via l'API REST, l'API SOAP, l'API de transfert en masse, ou les API GraphQL, ou gRPC. | Non requis* | Les deux | Oui***** | Oui | Oui | Avec des outils pro-code | Oui** | Oui*** | Multiple |
| Guide | Coût | Calendrier | Volume et échelle | Livraison et maintenance | Confidentialité et sécurité | Outils à implémenter | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Quand utiliser | Licence supplémentaire | Synchronisation (demande/réponse) ou asynchrone (déclenchement/oubli) | Support multi-objets | LDV/En masse | Test et déploiement* | Débogage | Gestion intégrée des erreurs/comportement de réessai | Peut être utilisé avec des données chiffrées au repos | Protocole d'authentification | Low Code → Pro Code | |
| Heroku Connect | Lorsque vous souhaitez étendre vos données avec la synchronisation bidirectionnelle entre les organisations Salesforce et également activer l'accès aux données à partir d'applications mobiles et autres exécutées sur Heroku | Obligatoire | Asynchrone | Oui | Oui | Non | Avec des outils pro-code | Oui | Oui, via Shield Connect | OAuth | Code faible |
| MuleSoft Anypoint | Lorsque vous avez besoin d'une solution unique unifiée de niveau entreprise pour élaborer, orchestrer et gérer vos intégrations, lorsque vous devez remplacer une architecture point à point héritée ou lorsque vous avez besoin d'un support de gestion d'API | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Non | Oui** | Multiple | Code Pro |
| APIs natives de Salesforce | Lorsque Salesforce ou Heroku Connect ne sont pas une option ou si vous avez besoin d'un traitement plus complexe | Non requis | Les deux | Non | Oui | Oui | Avec des outils pro-code | Non | Oui** | Multiple | Code Pro |
| Capture des modifications de données | Lorsque vous devez publier des modifications au niveau de l'enregistrement effectuées dans Salesforce sur un système externe et que vous n'avez pas besoin d'une charge de travail personnalisée. | Obligatoire | Asynchrone | Non | Non | Oui | Avec des outils pro-code | Oui | Oui | OAuth | |
| Salesforce Connect avec un adaptateur inter-organisations | Lorsque vous souhaitez que les utilisateurs d'une organisation puissent afficher ou modifier des enregistrements dans une autre organisation sans réplication des données | Obligatoire | Asynchrone | Oui | Oui | Oui | Avec des outils pro-code | S.O. | S.O. | Multiple | Code faible |
| Data 360 | Lorsque vous souhaitez que les utilisateurs d'une organisation affichent ou modifient des enregistrements dans une autre organisation avec des données répliquées dans Data 360. | Obligatoire | Les deux | Oui | Oui | Oui | Avec des outils pro-code | Oui | Oui | Multiple | Hybride |
| Type de modèle | Mode/Outil | Prestations | Considérations | Résultats |
|---|---|---|---|---|
| Ingestion de données |
En temps réel :
|
|
|
Agentforce :
|
Streaming :
|
|
|
Agentforce :
|
|
Lot :
|
|
|
Agentforce :
|
|
| Zéro copie |
Live Query :
|
|
|
Agentforce :
|
Requête accélérée (mise en cache) :
|
|
|
Agentforce :
|
|
Fédération de fichiers :
|
|
|
Agentforce :
|
#### Méthodes d'ingestion de données
Les méthodes d'_ingestion de données_ peuvent varier selon le connecteur que vous utilisez pour ingérer vos données. Certains connecteurs offrent diverses méthodes d'ingestion, tandis que d'autres fonctionnent uniquement en mode par lot ou streaming. Pour consulter la liste complète des connecteurs _Data 360_ et des méthodes disponibles, consultez [Data 360: Integrations and Connectors](https://help.salesforce.com/s/articleView?id=data.c360_a_sources_targets.htm&type=5).
- **En temps réel :**
- Fournit une ingestion en moins d'une seconde à l'aide de la _Capture de données de modification (CDC)_
- Convient aux workflows sensibles au temps (par exemple, détection de fraude, personnalisation et tableaux de bord opérationnels).
- Fonctionne avec des transformations push et des agrégations dans _Data 360_, ce qui permet de réduire les entrées/sorties en aval et d'optimiser l'utilisation du calcul
- Prend en charge l'utilisation du CDC incrémentiel pour minimiser le mélange de données
- **Streaming :**
- Ingestion toutes les 1 à 3 minutes par petits incréments
- Équilibre fraîcheur et coût
- Convient pour l'orchestration de campagnes, l'engagement en direct et les rapports opérationnels
- Prend en charge l'utilisation de microbatchs pour contrôler les pics d'E/S
- Agrége les données à la source (si possible) pour réduire les volumes de transfert et optimiser le stockage
- **Lot (chargements planifiés) :**
- Fournit une ingestion périodique de jeux de données volumineux (par exemple, horaire, quotidien et hebdomadaire)
- Offre une rentabilité et une fiabilité pour les jeux de données historiques, les rapports réglementaires et les cas d'utilisation de conformité
- Garantit que la localisation du calcul se situe dans la même région que le stockage source pour améliorer les performances et optimiser les coûts
#### Architect Playbook
- **Cas d'utilisation d'ingestion de données :**
- **Générer des profils unifiés Customer 360.** Élaborer une source de vérité unique pour les identités et les attributs des clients.
- **Maintenir les jeux de données de conformité réglementaire.** Appliquer la gouvernance, la filiation et l'auditabilité des données confidentielles.
- **Centraliser l'orchestration des campagnes.** Assurer que le marketing, les ventes et le service fonctionnent tous à partir de jeux de données cohérents et fiables.
- **Pratiques de conception :**
- Adaptez l'ingestion par lot aux besoins historiques ou tolérants à une faible latence (par exemple, rapports d'archives ou clichés instantanés périodiques).
- Utilisez des API CDC ou streaming pour actualiser les workflows opérationnels et de personnalisation afin de garantir des mises à jour en temps quasi réel.
- Contrôlez le stockage et calculez la croissance en appliquant des charges incrémentielles pour optimiser le coût et l'efficacité (au lieu de recharger des jeux de données complets).
- Alignez les pipelines d'ingestion avec la localisation du calcul et le traitement incrémentiel afin de réduire les entrées/sorties réseau.
- Appliquez des transformations dans _Data 360_ pour éviter de déplacer inutilement des données brutes.
- **Considérations relatives aux coûts :**
- L ' **ingestion en temps** réel entraîne les coûts de calcul et de pipeline les plus élevés, ce qui peut se justifier pour des workflows importants et urgents (par exemple, personnalisation, tableaux de bord opérationnels ou actions pilotées par Agentforce).
- **L'ingestion en continu** entraîne des coûts de calcul et de stockage modérés, qui peuvent convenir pour des mises à jour fréquentes tolérant de légers retards (par exemple, orchestration de campagne ou rapports opérationnels).
- L'**ingestion par lot** offre des coûts de calcul réduits et un stockage prévisible, qui convient aux jeux de données historiques ou aux mises à jour à basse fréquence. L'ingestion de données par lot à partir d'organisations Salesforce en utilisant certains connecteurs est gratuite.
- **Mode d'actualisation** Permet de sélectionner le mode d'_actualisation incrémentielle_, ce qui réduit les coûts totaux d'ingestion et de calcul. Chez Salesforce, nous recommandons d'utiliser l'_actualisation incrémentielle_ dans la mesure du possible afin d'optimiser l'efficacité dans tous les types d'ingestion.
- **Le coût** est également impacté par le volume d'E/S depuis la source vers _Data 360_. L'optimisation de la taille des lots, des partitions et de l'alignement régional réduit les coûts de transfert et améliore les performances.
- **Scénarios de l'industrie :**
- **Finance:** Les jeux de données d'ingestion sont requis pour _connaître votre client (KYC)_, _Anti Money Laundering (AML)_ et la détection des fraudes lorsque l'auditabilité et la conformité ne sont pas négociables.
- **Santé :** Utilisez l'ingestion pour la résolution de l'identité des patients et les enregistrements conformes HIPAA, qui permettent des vues sécurisées et unifiées.
- **Retail:** Consolidez les données des _points de vente_, du commerce électronique et du programme de fidélité dans des profils unifiés pour la segmentation et la personnalisation.
- **Telecom:** Soutenez la prévention du churn et l'analyse de l'utilisation grâce à des données d'abonnés canoniques et gouvernées.
#### Critères de décision de la méthode d'ingestion de données
| Fonctionnalité | Ingestion en temps réel | Ingestion en continu | Ingestion par lot |
| :----------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Latence et fraîcheur** | Ingestion de latence inférieure à la seconde via des API Ingestion avec prise en charge de la _Capture des données_ modifiées. Fournit des pipelines en continu. Convient aux cas d'utilisation opérationnels à faible latence. | Ingestion par microbatch toutes les 1 à 3 minutes via des connecteurs natifs. Prend en charge les mises à jour incrémentielles. Une légère latence est attendue. | Une latence des données est attendue. Autorise les chargements planifiés à grand volume. Ingestion périodique (horaire, quotidienne et hebdomadaire). Ne convient pas aux opérations temporelles. |
| **Cas d'utilisation principaux** | Idéal pour les cas d'utilisation opérationnels et de personnalisation à faible latence. Utilisé pour des workflows sensibles au temps. Prend en charge les workflows pilotés par l'événement. Utilisé pour les alertes de fraude et les alertes opérationnelles en temps réel. | Convient aux processus modérément urgents. Utilisé pour l'orchestration de campagnes, l'engagement en direct et les rapports opérationnels. Utilisé pour déclencher des campagnes au moment opportun. | Rentable pour des jeux de données massifs. Fiable pour les analytiques historiques. Utilisé pour les workflows d'agrégation historique ou de rapports réglementés. Convient aux jeux de données historiques ou à faible vitesse. |
| **Complexité architecturale et E/S** | Inclut un coût élevé et une architecture complexe. Nécessite des systèmes sources à faible latence. E/S intensives. Les sources à haut volume peuvent entraîner la saturation des pipelines. | Présente une architecture plus simple que celle du temps réel. Le volume des E/S est modéré. Convient pour des modèles de mise à jour prévisibles et répétés. La taille du lot impacte la mémoire et le calcul. | Facile à implémenter. Des E/S intensives pendant les fenêtres de chargement. Le débit réseau peut devenir un goulot d'étranglement pour les lots volumineux. |
| **Considérations relatives aux coûts** | Inclut les coûts de calcul et de pipeline les plus élevés. Justifiable uniquement pour les workflows de grande valeur et sensibles au temps. | Inclut des coûts de calcul et de stockage modérés. Fournit une approche coût/fraîcheur équilibrée. Convient pour les mises à jour fréquentes qui peuvent tolérer de légers retards. | Présente des coûts de calcul réduits et un stockage prévisible. Recommandé pour les jeux de données historiques ou les mises à jour à basse fréquence. L'ingestion via des pipelines internes Salesforce est gratuite. |
| **Pratiques de conception** | Utilisez le CDC incrémentiel pour limiter le mélange de données. Filtrez et utilisez des champs sélectifs pour réduire les frais généraux. | Utilisez des micro-batchs pour contrôler les pics d'E/S. Envisagez l'agrégation fenêtrée pour réduire la charge de traitement. | Utilisé pour les rapports d'archives ou les clichés instantanés périodiques. Assurez-vous que la localisation du calcul est dans la même région que le stockage source pour optimiser les coûts. |
### Fédération de données Zero Copy
#### Cas d'utilisation Zero Copy
Utilisez _Zero Copy_ pour interroger en temps réel des systèmes externes sans duplication des données afin de permettre l'agilité, la fraîcheur et l'accès évolutif à des jeux de données volumineux ou transitoires. Il convient aux tableaux de bord live, aux analytiques exploratoires, à l'entraînement au modèle IA/ML et à l'engagement client en temps réel directement via Salesforce _Data 360_.
#### Méthodes Zero Copy
En utilisant _Zero Copy_, les architectes doivent choisir entre trois méthodes de fédération de données disponibles, chacune offrant ses propres compromis entre fraîcheur, performance et coût.
- **Requête en direct**
- Exécute des requêtes directement sur des systèmes externes (par exemple, _Snowflake_, _Google BigQuery_, _Redshift_, _Databricks_, etc.) sans duplication de données.
- Réduit les mouvements de données sur le réseau et les entrées/sorties dans le calcul Salesforce _Data 360_, ce qui est optimal lorsque les prédicats et les agrégations peuvent être déplacés vers le bas.
- Convient pour les connaissances en temps réel et les tableaux de bord opérationnels à faible latence.
- Selon les performances du système externe.
- **Mise en cache (requête accélérée)**
- Stocke temporairement des copies mises en cache de données fédérées dans Salesforce _Data 360_.
- Réduit les coûts des requêtes répétées et la latence des jeux de données fréquemment accédés avec une durée configurable (minutes à jours).
- Les données ne sont pas copiées en permanence ni entièrement régies. Par conséquent, l'actualisation planifiée à partir de la source permet de gérer l'actualisation.
- L'_actualisation incrémentielle_ prend en charge uniquement les mises à jour/insertions. Les enregistrements supprimés ne sont pas retirés du cache.
- Effectuez périodiquement une actualisation complète pour vous assurer que le cache reste synchronisé avec la source.
- **Note :** Le connecteur _Snowflake_ prend en charge la fonction _Unload_, qui améliore les taux d'accélération en utilisant un compartiment intermédiaire initié par Snowflake. Elle est activée par défaut, mais peut être désactivée en modifiant la connexion.
- **Fédération de fichiers**
- Fournit un accès direct en lecture seule aux jeux de données à grande échelle dans les magasins d'objets (par exemple, _S3_ et _GCS_ avec _Iceberg_).
- Convient aux charges de travail IA/ML, aux analytiques historiques et aux rapports à l'échelle du pétaoctet sans déplacer les données.
- Les performances des requêtes dépendent fortement du format des objets, du partitionnement et des entrées/sorties réseau. Les analyses volumineuses peuvent générer des entrées/sorties importantes si elles ne sont pas optimisées.
#### Guide pour architectes
- **Cas d'utilisation**
- La **personnalisation en temps réel et les workflows adaptatifs** offrent des offres dynamiques, des recommandations et des actions Next Best à mesure que les comportements des clients changent.
- Les **tableaux de bord live et les analytiques opérationnelles** pilotent les tableaux de bord et les indicateurs de performance clés critiques de l'entreprise directement depuis des entrepôts externes.
- **L ' entraînement aux modèles IA/ML avec de grands jeux de données externes** exploite les données à l ' échelle du pétaoctet des lacs de données et des entrepôts sans les déplacer par fédération de fichiers.
- **Scénarios sectoriels**
- **Retail/Media :** Activez des recommandations personnalisées et l'engagement client en temps réel en fédérant les données de flux de clics ou d'interaction de contenus.
- **Finance :** Exécutez la détection des fraudes et le score de risque en temps quasi réel en interrogeant des entrepôts externes sans dupliquer les données confidentielles.
- **Tech/Entreprise :** Prenez en charge les rapports inter-clouds, les tableaux de bord de service TI et les analytiques opérationnelles lorsque les jeux de données résident dans plusieurs systèmes.
- **Pratiques de conception**
- **Requête en direct**
- Utilisez pour les requêtes à QPS élevé et à faible latence lorsque la fraîcheur est critique.
- Envoyez automatiquement des prédicats et des agrégations au système externe afin de réduire le transfert de données sur le réseau.
- Évitez les requêtes qui analysent inutilement des volumes de données importants.
- Envisagez plutôt l'élagage des partitions et les filtres.
- **Fédération de fichiers**
- Accédez aux jeux de données à l'échelle du pétaoctet dans les magasins d'objets sans ingestion.
- Réduisez les coûts de latence et de sortie en gardant le stockage d'objets dans la même région Cloud que le calcul Salesforce.
- Utilisez des formats partitionnés et colonnaires (Parquet/ORC) et des filtres pushdown pour réduire les entrées/sorties et le transfert réseau.
- Exploitez le pushdown des requêtes et des prédicats pour filtrer et agréger les données à la source, ce qui réduit le mouvement des données.
- Évitez l'accès aux données inter-régions, sauf si c'est absolument nécessaire, car cela augmente les entrées/sorties, la latence et les coûts.
- **Caching (Accelerated Query)**
- Mettez en cache les jeux de données fréquemment accédés pour équilibrer les coûts et les performances.
- Configurez des intervalles d'actualisation pour équilibrer la fraîcheur et le coût des requêtes.
- **Conformité :** Appliquez la gouvernance à la source en exploitant la _sécurité au niveau ligne_ et en masquant les politiques directement dans les systèmes fédérés.
- Voici quelques pratiques recommandées pour uniformiser le RLS et le masquage entre les plates-formes :
- **Utilisez un ID d'entreprise centralisé.** Mappez des utilisateurs et des entités dans Salesforce _Data 360_ avec un identifiant d'entreprise unique et centralisé qui correspond aux identités dans des systèmes externes.
- **Alignez les stratégies de sécurité.** Assurez-vous que les stratégies RLS et de masquage dans les systèmes fédérés sont appliquées en fonction de l'identité mappée. Cela préserve la conformité lors de l'interrogation de données externes.
- **Standardisez les schémas d'identité.** Maintenez des attributs d'identité cohérents (e-mail, ID d'utilisateur, ID de client, etc.) entre toutes les sources de données afin d'éviter les incohérences et les violations d'accès.
- **Considérations relatives aux coûts**
- **Live Query :** Dans le modèle de paiement par requête, les coûts augmentent pour le calcul externe du lakehouse, ce qui peut entraîner des pics avec un QPS élevé. Cela convient aux cas d'utilisation critiques pour la fraîcheur où la valeur est supérieure à la variabilité du coût.
- **Requête accélérée (mise en cache) :** Cette méthode réduit le coût des requêtes (par rapport à _Live Query)_ en réduisant les accès au système source. Cependant, elle augmente les coûts d'ingestion de données par lot pour remplir et actualiser le cache. Convient aux jeux de données fréquemment accédés.
- **Fédération de fichiers :** Cette option de stockage est la moins chère en tant que données dans Object Store. Cependant, les coûts de requête dépendent de la taille du fichier, du partitionnement et de l'élagage. Convient pour les données historiques ou en masse à l'échelle du pétaoctet.
#### Critères de décision de la méthode Zero Copy
| Point de décision | Live Query | Mise en cache (requête accélérée) | Fédération de fichiers |
| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Emplacement de la source de données** | Maisons de lac de données externes (par exemple, _Snowflake_, _Google BigQuery_, _Redshift_ et _Databricks_) | Maisons de lac de données externes (par exemple, _Snowflake_, _Google BigQuery_, _Redshift_ et _Databricks_) | Les magasins d'objets ou les lacs de données Cloud (par exemple, _S3_, _ADLS_ et _GCS_), qui utilisent souvent des formats de tableau ouverts tels que _Iceberg_. |
| **Objectif/cas d'utilisation** | Convient pour l'analyse interactive et les tableaux de bord en temps réel. Convient pour la personnalisation en temps réel et les workflows dynamiques. | Convient lorsque les requêtes sont fréquentes, mais que les résultats légèrement périmés sont acceptables. Convient pour les tableaux de bord BI et la segmentation. | Convient pour le traitement par lot à grande échelle et l'entraînement au modèle IA/ML. Convient pour les analytiques historiques et les rapports à l'échelle des pétaoctets. |
| **Fraîcheur/Latence** | Fournit une fraîcheur maximale en exécutant les requêtes directement en temps réel. Prend en charge la prise de décision en moins d'une seconde lorsque le système source est optimisé pour les requêtes à faible latence avec un pushdown des prédicats efficace. | Utiliser lorsque les résultats légèrement périmés sont acceptables. La fraîcheur dépend de l'intervalle de mise en cache, qui peut être configuré de 15 minutes à 7 jours. | Convient pour les tâches lourdes en lots et exigeantes en débit. Ne convient pas aux tableaux de bord en temps réel. |
| **Modèle d'accès** | Convient aux requêtes peu fréquentes ou ponctuelles où la fraîcheur est critique et le volume de requête faible. Les coûts augmentent considérablement lorsque le QPS est élevé. Par conséquent, il est important d'évaluer la mise en cache (requête accélérée) lorsque la fréquence des requêtes est élevée. | Convient aux scénarios de lecture à haute fréquence. Améliore les performances des modèles d'accès fréquents. | Fournit un accès *en lecture seule*. Convient aux jeux de données à l'échelle du pétaoctet sans ingestion. |
| **Facteurs de performance** | Très dépendant des performances du système source externe. Convient lorsque les prédicats et les agrégations peuvent être poussés vers la source. | Réduit la latence par rapport aux requêtes live répétées. Les performances dépendent de la gestion du cache et des intervalles. | Les performances dépendent fortement du format de l'objet, du partitionnement et du débit système externe. Utilisez des formats partitionnés et colonnaires (Parquet/ORC). |
| **Incidences sur les coûts** | Il s'agit d'un modèle de paiement par requête. Par conséquent, les coûts s'accumulent dans les calculs lakehouse externes. Il est économique pour les requêtes peu fréquentes, mais les dépenses peuvent augmenter avec un volume de QPS élevé. | Le coût est inférieur aux requêtes en direct répétées. Il réduit la nécessité d'interroger régulièrement la source externe, mais ajoute un espace de stockage cache et une actualisation supplémentaire. | Cette option de stockage est la moins chère. Pour des configurations AWS de même région et de même cloud (par exemple, _S3_ dans US-East-1 avec un locataire _Data Cloud_ également dans US-East-1), les crédits ne sont pas consommés pour les lignes accédées. Les configurations inter-régions ou inter-clouds (par exemple, _Azure_, _GCS_ ou différentes régions _AWS_) entraînent une consommation de crédit pour les lignes accédées. Les coûts de requête dépendent également de la taille du fichier, du partitionnement et de l'optimisation pushdown des prédicats. |
| **Considération clé** | Évitez les requêtes non filtrées qui analysent inutilement des volumes de données importants. | Cette approche nécessite la gestion du cache. Non adapté à la prise de décision en moins d'une seconde. | Les performances des requêtes dépendent fortement de l'optimisation via le partitionnement et la pushdown des prédicats. |
### Approche hybride
Les architectures hybrides permettent aux architectes d'ancrer des jeux de données critiques dans _Data 360_ pour une gouvernance centralisée, tout en exploitant les requêtes fédérées pour l'actualisation, la réduction des duplications et l'accès évolutif à des jeux de données externes volumineux. Cette approche concilie les exigences d'E/S, de localisation du calcul, de coût et de conformité.
#### Cas d'utilisation hybrides
Utilisez une approche hybride pour une gouvernance équilibrée, la fraîcheur et l'efficacité opérationnelle en combinant l'ingestion de données et la copie zéro pour fournir des connaissances en temps réel et actionnables. Utilisez l'ingestion pour des jeux de données réglementés de grande valeur où la traçabilité, le RLS et le masquage sont requis, et la fédération pour des jeux de données éphémères ou à haut volume où la fraîcheur et les performances sont essentielles.
#### Guide de l'architecte
- **Cas d'utilisation**
- **Engagement omnicanal :** Combinez les données clients historiques avec un comportement en temps réel pour offrir des expériences cohérentes et sensibles au contexte.
- **Pipelines IA/ML :** Entraînez les modèles sur des jeux de données organisés et canoniques tout en les enrichissant avec des signaux bruts ou en temps réel provenant de sources externes.
- **Besoins mixtes de conformité et d'agilité :** Appliquez une gouvernance stricte pour les données confidentielles et une fédération pour l'agilité opérationnelle.
- **Scénarios de secteur d'activité**
- **Commerce de détail :** Utilisez l'_ingestion_ pour la résolution de l'identité et l'unification des profils, et _la fédération_ pour les offres en temps réel et la personnalisation.
- **Soins de santé :** Gérez les enregistrements de patient dorés via _l'ingestion_ tout en utilisant _la fédération sur_ les flux d'appareils Internet des objets et les données des capteurs pour un contexte immédiat.
- **Services financiers :** Ingérez des données réglementées dans un lac régi par la conformité en utilisant _la fédération_ pour des requêtes externes de détection des fraudes et de surveillance des risques.
- **Pratiques de conception**
- **Ancrage de la gouvernance avec l'ingestion :** Ingérez des données de grande valeur ou réglementées dans des modèles canoniques pour garantir Trust et conformité.
- **Utilisez la fédération pour la fraîcheur :** Permet aux maisons de lac externes de fournir un accès aux données en temps réel ou à grande échelle sans duplication.
- **Équilibrer le coût et la performance :** Profilez les charges de travail afin de déterminer quand utiliser l'_ingestion_ par rapport à _la fédération_, ce qui réduit les coûts inutiles de stockage et de requête.
- **Appliquer la gouvernance en couches :** Appliquer la gouvernance centralisée pour les données ingérées tout en tirant parti des contrôles de sécurité des systèmes fédérés (par exemple, RLS et masquage).
- **Note :** Lorsque vous concevez des pipelines hybrides, il est important d'assurer l'ingestion incrémentielle pour les jeux de données historiques et d'envoyer automatiquement des agrégations ou des filtres à des sources fédérées afin d'optimiser les entrées/sorties et de calculer l'utilisation.
- **Considérations relatives aux coûts**
- Évaluez le coût total par rapport aux performances en combinant l'_ingestion_ pour la conformité ou des données critiques avec _la fédération_ lorsque la fraîcheur est nécessaire.
- Tenez compte de la répartition des E/S et du calcul lors du mélange de l'_ingestion_ et de la _fédération_. Pour réduire les coûts de calcul des requêtes répétées par rapport aux systèmes sources, utilisez la mise en cache (requête accélérée) pour les jeux de données fédérés fréquemment accédés et très lus.
- Utilisez cette règle pour guider la décision d'ingestion par rapport à la fédération : Lorsque les données sont accédées fréquemment, mais changent rarement, la _requête accélérée_ est généralement plus économique. Cependant, lorsque les données changent fréquemment (par rapport à la fréquence d'accès), _Live Query_ ou _ingestion_ est plus approprié. Voici quelques exemples de coûts :
- **L'accélération l'emporte :** Un tableau de bord élaboré à partir de 1 million d'enregistrements et mis à jour quotidiennement avec environ 10 000 modifications est visualisé 20 fois par jour. Les coûts d'_accélération_ s'élèvent à environ 600 crédits par mois, contre environ 4 200 crédits par mois pour _Live Queries_.
- **Live Query l'emporte :** Segments publiés 20 fois par jour en utilisant des données qui changent toutes les 30 minutes. Les _requêtes live_ coûtent environ 4 200 crédits par mois contre 28 800 crédits par mois pour l'_accélération_ à cette fréquence d'actualisation.
## Guide de décision des cas d'utilisation
Examinons de plus près quelques archétypes courants qui illustrent comment appliquer cette logique.
- **L'archétype « Source unique de vérité » : Centraliser et gouverner**
- **Scénario :** Vous devez élaborer des profils _Client 360_ conformes et unifiés pour l'ensemble de votre entreprise mondiale. Les données proviennent d’une douzaine de systèmes différents, elles doivent respecter des réglementations strictes _RGPD_ et _CCPA_, et elles serviront de source de vérité pour toutes les interactions marketing et de service.
- **Schéma recommandé :** **Ingestion de données.** La priorité ici est la gouvernance, la confiance et le contrôle. L'ingestion des données dans _Data 360_ est le seul moyen de créer un profil canonique entièrement auditable, isolé des systèmes sources.
- **L'archétype « Connaissances en temps réel » : Analyser sans déplacer**
- **Scénario :** Votre équipe de science des données doit exécuter des requêtes exploratoires sur un tableau de transactions massif et constamment mis à jour dans _Snowflake_. En même temps, votre équipe de direction souhaite un tableau de bord _BI_ live piloté par ces mêmes données. Le déplacement quotidien de pétaoctets de données est lent et coûteux.
- **Modèle recommandé :** **Zero Copy Federation.** La priorité ici est la rapidité, l'agilité et la rentabilité à l'échelle. _Zero Copy_ vous permet de tirer parti de la puissance de votre entrepôt de données existant pour les requêtes en temps réel, sans surcharge ni latence de la duplication des données.
- **L'archétype « Intelligence hybride » : Gouverner le cœur, fédérer la périphérie**
- **Scénario :** Vous souhaitez enrichir vos profils clients gouvernés et ingérés avec des signaux comportementaux en temps réel (par exemple, des clics sur un site Web) à partir d'un lac de données. Vous avez besoin de la stabilité du profil principal, mais de l'immédiateté des données live pour piloter la personnalisation instantanée.
- **Modèle recommandé :** **A Hybrid Approach.** Utilisez l'_Ingestion de données_ afin de créer un noyau stable et gouverné pour vos données clients. Utilisez _Zero Copy_ pour fédérer les données « edge » volatiles en temps réel, puis joignez-les au moment de la requête pour une vue complète et actualisée.
## La voie à suivre
La stratégie de données d'entreprise ne se concentre plus sur le choix d'un modèle d'intégration unique, mais sur l'architecture d'une flexibilité contrôlée dans un écosystème de données interopérable. L'approche correcte associe chaque système source au modèle le plus adapté à ses exigences en matière de fraîcheur, de gouvernance, de coût et d'accès :
- Ingérez des jeux de données réglementés critiques dans Salesforce _Data Cloud_ pour la conformité, la résolution de l'identité et les workflows opérationnels.
- Fédérez des données via _Zero Copy_ pour des analytiques live, exploratoires et pilotées par l’IA sans dupliquer le stockage.
- Appliquer la _mise en cache (requête accélérée)_ pour réduire la charge du système source et la consommation de crédits lorsque la fréquence de requête est élevée et la fréquence de modification des données faible
Salesforce _Data 360_ sur _Hyperforce_ offre une résilience et une évolutivité multi-régions. Ses portes ouvertes avec des tables _Iceberg_ permettent la séparation des calculs et l'interopérabilité avec des plates-formes telles que _Snowflake_, _Databricks_ et _S3 Iceberg, qui_ forment l'épine dorsale d'un écosystème de données multicloud véritablement interopérable.
À mesure que les écosystèmes de données évoluent, nous devons constamment équilibrer fraîcheur, coût, performance et conformité pour maintenir l'agilité architecturale. Par conséquent, il est important de pérenniser votre plate-forme en unifiant les données ingérées et régies avec un accès fédéré. Cela permet l'intelligence en temps réel, l'activation de l'IA et la personnalisation à l'échelle de l'entreprise à travers les Clouds, les régions et les domaines métiers.
Notez que les solutions universelles ne conviennent pas à la plupart des entreprises. La stratégie optimale associe le modèle correct au levier métier approprié.
## À propos des auteurs
**Yugandhar Bora** est architecte en génie logiciel chez Salesforce, spécialiste de l'architecture de données sur la plate-forme Data and Intelligence Applications. Il dirige les initiatives du comité d’examen de l’architecture d’_entreprise (EARB)_ qui se concentrent sur la gouvernance des données et les modèles de données unifiés tout en contribuant à des solutions de provisionnement de plate-forme automatisées.
**Jan Fernando**, architecte principal au _bureau de l’architecte_ en chef (OCA) chez Salesforce, a rejoint Salesforce en 2012 et apporte une riche expérience de son expérience dans l’écosystème des startups. Avant de se joindre à l’OCA, il a passé plus d’une décennie au sein de l’organisation _Plate-forme_, où il a dirigé plusieurs transformations technologiques clés.
# Premiers pas avec les guides de décision d'intégration
Cette section fournit des conseils pratiques pour choisir les outils et les approches d'intégration de données appropriés pour Salesforce. Il couvre les intégrations sortantes, les intégrations entrantes et les scénarios inter-organisations, aidant les architectes à concevoir et à implémenter des intégrations de couche de données qui équilibrent performances, maintenabilité et coût.
---
## Intégration de données avec Salesforce
L'[intégration de données](/docs/architect/fr-fr/decision-guides/guide/data-integration) à Salesforce présente une vue d'ensemble complète des outils et des meilleures pratiques d'intégration de données Salesforce :
- **Paysage des outils d'intégration**: Vue d'ensemble des outils d'intégration de données Salesforce, notamment les options low-code, hybrides et pro-code, avec des conseils pour sélectionner l'outil approprié à des cas d'utilisation spécifiques.
- **Intégrations sortantes**: Méthodes d'envoi de données depuis Salesforce vers des systèmes externes, notamment Capture des données de modification, Services externes, Heroku Connect, Procédures d'intégration OmniStudio, Salesforce Connect, MuleSoft Anypoint et solutions Apex personnalisées.
- **Intégrations entrantes**: Approches d'intégration de données externes dans Salesforce, avec des conseils sur la réplication des données par rapport à la virtualisation et quand utiliser chaque outil.
- **Intégrations inter-organisations**: Méthodes recommandées pour le partage de données entre les organisations Salesforce, notamment MuleSoft Anypoint, Heroku Connect, les API Salesforce natives, Capture des données de modification et Salesforce Connect avec l'adaptateur inter-organisations, y compris un guide pour remplacer les implémentations Salesforce vers Salesforce héritées.
- **Cadre de décision**: Considérations clés relatives à la sélection d'outils d'intégration, notamment les outils et le paysage existants, les exigences en flux de données (calendrier, directionnalité, expérience utilisateur attendue), la complexité de l'implémentation, la maintenabilité, le volume de données et les limites de la plate-forme.
Permet aux architectes de choisir les outils et les modèles d'intégration appropriés pour chaque scénario, en réduisant les réplications de données inutiles, en exploitant les solutions ESB/ETL existantes et en garantissant des intégrations évolutives et maintenables qui respectent les principes de l'architecture d'entreprise.
# Premiers pas avec les guides de décision Data 360
Cette section fournit des conseils pratiques pour prendre des décisions architecturales critiques concernant Salesforce Data 360, notamment des stratégies de provisionnement, la connectivité multi-organisations et des modèles d'intégration. Utilisez ces guides pour concevoir et implémenter des architectures de données efficaces qui unifient les données des clients et activent des fonctionnalités pilotées par l’IA.
---
## Provisionnement de Data 360
[Le provisionnement Data 360](/docs/architect/fr-fr/decision-guides/guide/data-360-provisioning) couvre les décisions fondamentales lors du provisionnement de Salesforce Data 360 :
- **Sélection de l'organisation d'accueil**: Déterminez s'il faut provisionner Data 360 dans une organisation de production existante ou créer une organisation dédiée, en tenant compte de la gouvernance, de la conformité et de la rapidité de mise en œuvre.
- **Stratégie multi-organisations**: Choisissez entre plusieurs instances Data 360 indépendantes ou utilisez Data Cloud One pour unifier plusieurs organisations Salesforce, en équilibrant autonomie, conformité et coût.
- **Architecture Data Cloud One**: Activez plusieurs organisations compagnes pour partager une instance Data 360 unique avec la gouvernance centralisée, le partage de métadonnées et la parité des fonctionnalités entre les organisations.
- **Partage de données entre des organisations Data 360**: Utilisez le partage de données sans copie entre des instances indépendantes pour la conformité régionale, la collaboration des unités commerciales ou des tableaux de bord exécutifs fédérés.
- **Considérations relatives au provisionnement**: Tenez compte de la résidence des données, des modèles de gouvernance, de la latence, de la complexité de l'intégration, du coût et de la préparation de l'IA aux déploiements à l'échelle de l'entreprise.
Aide les architectes à concevoir des stratégies de provisionnement qui garantissent la simplicité, la cohérence de l'entreprise, la conformité et l'évolutivité pour Customer 360, l'IA et l'innovation multi-plate-forme.
---
## Interopérabilité de Data 360
[L'interopérabilité Data 360](/docs/architect/fr-fr/decision-guides/guide/data-360-interoperability) fournit un cadre pour l'intégration de Data 360 à des plates-formes externes et des lacs de données :
- **Modèles d'ingestion de données**: Ingestion en temps réel, en continu et par lot pour créer des jeux de données canoniques régis idéaux pour Customer 360, la conformité et la gouvernance centralisée.
- **Zero-Copy Data Federation**: Méthodes de requête live, de requête accélérée (mise en cache) et de fédération de fichiers pour accéder en temps réel à des systèmes externes sans duplication, ce qui permet la personnalisation, les tableaux de bord et les charges de travail IA/ML.
- **Approche hybride**: Combinez l'ingestion régie pour les jeux de données de base avec une fédération sans copie pour la fraîcheur et l’évolutivité, en prenant en charge l’engagement omni-canal, les actions pilotées par Agentforce et les analytiques d'entreprise.
- **Cadre de décision**: Évaluez les compromis en termes de latence, de coût, d'évolutivité, de gouvernance et de complexité afin de sélectionner le modèle d'intégration approprié par source de données.
- **Guides pour architectes**: Guides spécifiques au secteur d'activité, pratiques de conception et considérations sur les coûts pour les scénarios de finance, de santé, de vente au détail et de télécommunications.
Guide les architectes dans l'équilibre entre l'actualisation des données, la gouvernance et l'efficacité du pipeline pour élaborer des architectures de données évolutives, interopérables et prêtes pour l'IA qui prennent en charge les charges de travail opérationnelles et analytiques.
# Premiers pas avec les guides de décision de la Plateforme
Cette section fournit des conseils pratiques pour prendre des décisions architecturales critiques sur les capacités de Salesforce Platform. Il couvre le traitement asynchrone, les événements déclenchés par un enregistrement, l'élaboration de formulaires, l'automatisation des workflows agentsiques et traditionnels, l'architecture pilotée par les événements et les infrastructures asynchrones basées sur des étapes afin d'aider les architectes à concevoir des solutions de plate-forme évolutives, maintenables et performantes.
---
## Traitement asynchrone
[Traitement asynchrone](/docs/architect/fr-fr/decision-guides/guide/async-processing) fournit des conseils sur les outils et les approches pour les opérations asynchrones dans Salesforce :
- **Outils de traitement asynchrone**: Comparaison entre Apex Queueable, Apex planifié, Déclencheurs d'événements de plate-forme, Capture des données de modification, Parcours planifié (après validation des flux) et Parcours asynchrone (flux déclenchés par un enregistrement), avec des conseils sur les cas d'utilisation appropriés.
- **Traitement asynchrone côté serveur**: Modèles pour les opérations de base de données de longue durée, les appels externes et le traitement d'enregistrements volumineux.
- **Traitement asynchrone côté client**: Des techniques comme les Appels externes de continuation Apex et le traitement asynchrone côté client qui peuvent être exécutés dans des navigateurs ou des applications mobiles.
- **Cadre de décision**: Tenez compte de la validation des cas d'utilisation, de l'évolutivité, de la compréhension des transactions réellement asynchrones, de la surveillance et de la gestion des événements de charge extrêmes.
- **Meilleures pratiques et anti-modèles**: Guide pour une bonne utilisation, y compris les intégrations sortantes, la surveillance et l'évitement des pièges courants.
Permet aux architectes d'implémenter des modèles asynchrones évolutifs, fiables et maintenables, en évitant les pièges qui compromettent les performances.
---
## Création de formulaires
[Création de formulaires](/docs/architect/fr-fr/decision-guides/guide/build-forms) guide les architectes sur les options de création de formulaires Salesforce :
- **Outils de création de formulaires**: Comparaison des formulaires dynamiques, des flux d'écran, d'OmniStudio, des flux d'écran avec les Composants Web Lightning (LWC) et des Composants Web Lightning, y compris les compétences et les considérations relatives aux licences.
- **Cadre de décision**: Tenez compte de l'impact des objets, de l'étendue du formulaire, de la navigation, de la localisation (application, mobile, Web), de l'expérience utilisateur et de l'automatisation des tests.
- **Guide de sélection**: Recommandations allant de simples présentations d'enregistrement à des assistants multipages et des formulaires de marque destinés aux clients.
- **Modèles de combinaison**: Guide pour combiner des outils, par exemple la navigation dans les flux d'écran avec le style Composant Web Lightning.
- **Fonctionnalités avancées**: Exploration approfondie des capacités et des limites pour éclairer le choix de l'outil.
Aide les architectes à sélectionner l'approche de création de formulaire adaptée à leurs exigences spécifiques en matière d'expérience utilisateur (UX), fonctionnelles et d'intégration.
---
## Détermination de l'automatisation des workflows agentsiques et traditionnels
La [détermination de l'automatisation des workflows](/docs/architect/fr-fr/decision-guides/guide/determining-agentic-vs-traditional-workflow-automation.html) Agentic et Traditionnels fournit un cadre permettant de choisir entre l'automatisation traditionnelle et Agentforce utilisant le cadre de densité d'orchestration:
- **Cadre de densité d'orchestration**: Évalue la complexité de l'automatisation en fonction du parcours d'exécution (entièrement spécifiable et non spécifiable), de la complexité des objectifs (tâche unique et objectifs concurrents) et du mix de modalités (entrées structurées et multimodales).
- **Paysage de produit**: Comparaison des flux, Apex, Agentforce, Agent Script, Agentforce Grid, Agentforce Operations et MuleSoft pour différents scénarios d'automatisation.
- **Matrice de sélection de densité**: Mappez les niveaux de densité d'orchestration (faible, moyen, élevé) avec les normes architecturales, depuis l'automatisation déclenchée par un enregistrement jusqu'à l'orchestration hybride en passant par le déterminisme guidé avec Agent Script.
- **Cadre de décision**: Processus d'évaluation séquentiel (d'abord inspecter le parcours d'exécution, puis la complexité de l'objectif, puis le mix de modalités) pour déterminer l'outil approprié.
- **Guide de cas d'utilisation**: Des recommandations spécifiques pour l'automatisation traditionnelle (basée sur des règles, déterministe), Agentforce Grid (tâches d'IA en masse), l'orchestration hybride (processus complexes de bout en bout) et Agent Script (points d'entrée non structurés avec des besoins de raisonnement).
Permet aux architectes de prendre des décisions informées à travers le spectre de l'automatisation, en équilibrant les capacités de raisonnement avec un contrôle déterministe pour des solutions évolutives, auditables et maintenables.
---
## Architecture pilotée par les événements
[Architecture pilotée par les événements](/docs/architect/fr-fr/decision-guides/guide/event-driven) fournit un guide complet sur les outils et les modèles des événements Salesforce :
- **Outils d'événements**: Vue d'ensemble des événements de plate-forme, Capture des données de modification, API Pub/Sub, MuleSoft Anypoint, API Streaming, et considérations relatives à l'intégration.
- **Modèles pilotés par les événements**: Inclut des modèles de publication/inscription, fanout, messages transmis, streaming et mise en file d'attente pour divers cas d'utilisation pilotés par l'événement.
- **Intégration avec MuleSoft**: Utilisation des connecteurs Anypoint (Pub/Sub, JMS, Kafka, Solace, MQ, MQTT, AMQP) pour les architectures d'entreprise.
- **Événements de Plate-forme et Capture de données de changements**: Guide sur les mécanismes préférés de publication des modifications des enregistrements et des champs, avec la migration depuis PushTopic/Generic Events.
- **Schémas d'implémentation**: Meilleures pratiques pour l'évolutivité, la cohérence, le traitement des erreurs et la surveillance.
Permet aux architectes de concevoir des systèmes pilotés par des événements évolutifs en temps quasi réel qui connectent efficacement plusieurs systèmes.
---
## Framework asynchrone basé sur les étapes
[Framework asynchrone basé sur les étapes](/docs/architect/fr-fr/decision-guides/guide/step-based-async-framework) fournit un cadre pour le traitement modulaire et évolutif des tâches asynchrones :
- **Architecture du framework**: Les composants comprennent Queueable Apex, Finalizers, Scheduled Flow, Apex Cursors, Actions invocables et intégrations Slack.
- **Traitement basé sur les étapes**: Brise le travail en étapes indépendantes qui peuvent être exécutées, réessayées et redémarrées avec une gouvernance partagée et une visibilité opérationnelle.
- **Instructions de mise en œuvre**: Modèles pour l'interface Étape, le processeur Étape, la couche Invocable Apex, le traitement des délais et les notifications.
- **Meilleures pratiques**: Recommandé lorsque la plupart des informations se trouvent dans le CRM, pour les charges de travail à haut volume et le traitement hiérarchique ou arborescent des enregistrements, ainsi que des indications sur quand ne pas l'utiliser.
- **Fonctionnalités de niveau entreprise**: Gouvernance, conformité, état distribué, suivi de la progression, surveillance des accords de niveau de service, diagnostics d'échec et consignation au niveau de l'audit.
Fournit aux architectes une alternative évolutive aux tâches par lot monolithiques et aux appels asynchrones enchaînés, prenant en charge les charges de travail Salesforce à haut volume avec une transparence opérationnelle totale.
---
## Automatisation déclenchée par des enregistrements
[Automatisation déclenchée par des enregistrements](/docs/architect/fr-fr/decision-guides/guide/record-triggered) fournit le cadre permettant de concevoir l'automatisation déclenchée par des enregistrements sur la plateforme Salesforce :
- **Sélection des outils**: Quand utiliser les déclencheurs Flux déclenché par un enregistrement par rapport aux déclencheurs Apex, guidés par la densité d'automatisation (faible, moyenne, élevée) et la matrice de sélection de densité.
- **Densité d'automatisation**: Comment évaluer la quantité d'automatisation, le volume d'enregistrements et l'étalement des dépendances pour choisir des déclencheurs Flux, hybrides (Flux avec Apex invocable) ou Apex.
- **Points d'entrée et gouvernance**: Un point d'entrée par objet Salesforce ; guide sur les conditions d'entrée, le contrôle de la récursivité et l'exécution ordonnée.
- **Invocation asynchrone**: Quand et comment invoquer des processus asynchrones à partir de flux déclenchés par un enregistrement ou Apex, avec précaution quant au traitement des erreurs et aux limites du gouverneur.
- **Meilleures pratiques**: Modèles de traitement par lots, conception hybride Flow–Apex et évitement des pièges courants dans l'automatisation des déclencheurs.
Permet aux architectes de concevoir une automatisation déclenchée par un enregistrement évolutive, maintenable et performante, conforme aux normes de la plateforme.
# Provisionnement Data 360
Salesforce Data 360 est une plate-forme de données basée sur [Hyperforce](https://www.salesforce.com/platform/public-cloud-infrastructure/) qui unifie Salesforce et les données externes dans une vue complète, claire et fiable de chaque client ou compte.
Les entreprises exploitent souvent plusieurs organisations Salesforce en raison de fusions et d'acquisitions, d'opérations régionales, d'une séparation fonctionnelle ou pour des raisons historiques. Les architectes doivent prendre plusieurs décisions concernant Data 360, qui impactent la gouvernance, la conformité, le coût, la latence et la capacité de l'organisation à adapter les fonctionnalités de l'IA et de la plate-forme inter-organisations.
## Présentation du guide
Ce guide fournit un cadre pour prendre des décisions de provisionnement avec Data 360\. Ces décisions comprennent :
- Sélection d'une seule organisation d'origine par rapport à une configuration multi-organisations
- Provisionnement de plusieurs instances Data 360 indépendantes
- Utiliser Data Cloud One pour unifier les organisations sous une instance unique
- Collaboration entre des instances Data 360 indépendantes qui utilisent le partage de données entre des organisations Data 360
Data 360 est automatiquement provisionnée dans toute organisation de production qui reçoit une licence Data 360. Data Cloud One est l'architecture de connectivité multi-organisations de Salesforce qui permet à une seule organisation domestique d'héberger l'instance Data 360, tandis que d'autres organisations Salesforce se connectent en tant qu'organisations compagnes. Le choix de l'organisation détentrice de la licence Data 360, qui devient ainsi une organisation domestique Data 360, est une décision architecturale critique avec des conséquences à long terme.
Le provisionnement de Salesforce Data 360 est une décision architecturale fondamentale. Il détermine comment l'entreprise unifie les données des clients, applique la gouvernance et active les fonctionnalités critiques de la plate-forme, en particulier l'IA, Agentforce et les analytiques dans l'ensemble de l'organisation. L'ancrage d'un cluster d'organisations à une Data 360 unique fournit un modèle de données unifié, une gouvernance centralisée et permet de préparer l'entreprise à l'IA. Les organisations compagnes peuvent accéder aux métadonnées et fonctionnalités partagées comme si les données étaient locales. Par contre, plusieurs instances Data 360 indépendantes sont appropriées lorsque les exigences réglementaires, de conformité ou d'autonomie empêchent la centralisation. Le partage de données entre les organisations Data 360 permet une collaboration sélective et sans copie entre ces instances.
Cette décision influence qui contrôle la gouvernance des données, où résident les données, comment les fonctionnalités de la plate-forme sont activées et comment les futures intégrations et initiatives IA peuvent évoluer en douceur. Même pour les organisations qui n'ont pas encore Data 360, il peut être important de pérenniser leur architecture en développant une stratégie pour ajouter l'accès Data 360 à l'avenir. De plus en plus, les fonctionnalités de Salesforce dans Sales, Service, Marketing, Commerce, Industries et Agentforce sont élaborées sur Data 360\. Les organisations qui souhaitent utiliser ces fonctionnalités de plate-forme doivent provisionner leur propre Data 360 ou se connecter à une Data 360 partagée en tant qu'organisations compagnes.
Ce guide aide les architectes à concevoir une stratégie de provisionnement qui concilie simplicité, cohérence à l'échelle de l'entreprise, conformité et évolutivité, afin de s'assurer que l'organisation peut exploiter en toute confiance Data 360 pour Customer 360, l'IA et l'innovation multi-plate-forme. Utilisez ce guide pour déterminer quelles organisations nécessitent Data 360, et si vous souhaitez utiliser Data Cloud One ou le partage de données entre des organisations Data 360. Cette stratégie établit une base solide pour un avenir centré sur Data 360.
## Produits concernés
![]() |
Salesforce Data 360 est la plate-forme de données hyperscale en temps réel de Salesforce qui harmonise et unifie les données de n'importe quelle source (CRM, Web, mobile ou lacs de données externes) dans un profil client unique et actionnable. Composant essentiel de la plate-forme Client 360, elle pilote l’IA, les analytiques et les expériences personnalisées dans les domaines des ventes, du service et du marketing. |
| Considération | Pourquoi c'est important | Exemples de scénarios |
|---|---|---|
| Résidence et conformité des données | Détermine où les données sont stockées et traitées. Les règles réglementaires peuvent exiger des régions spécifiques ou plusieurs instances. | Une banque mondiale provisionne un locataire Data 360 dans une organisation Salesforce géolocalisée à Francfort pour la conformité au RGPD. Ils provisionnent un autre locataire dans une organisation en Virginie pour sa division américaine. |
| Gouvernance et sécurité | Identifier un administrateur et la propriété de Data 360, y compris les stratégies de gestion des politiques et de délégation. | Une multinationale dotée d'une solide informatique centrale crée une organisation domestique dédiée gérée par un Centre d'excellence. |
| Autonomie et centralisation | Différents dirigeants peuvent souhaiter une propriété séparée des données. L'autonomie favorise plusieurs organisations Data 360. La centralisation favorise Data Cloud One. | Une holding avec des filiales indépendantes permet à chaque unité commerciale de gérer sa propre Data 360. |
| Latence et performance | Influe sur la vitesse et l'expérience des requêtes, en particulier pour les organisations associées connectées à un locataire Data 360 à travers les régions. | Une équipe commerciale de Londres qui interroge les données d'un locataire Data 360 aux États-Unis peut rencontrer une latence plus élevée. |
| Complexité de l'intégration | Plus de locataires Data 360 = plus de pipelines, d'API et de middleware. La consolidation simplifie l'intégration. | Un détaillant évite d’élaborer 10 pipelines ETL en les regroupant dans une configuration Data Cloud One. |
| Zone source de données Zéro copie | Les exigences d'accès inter-régions de certains connecteurs peuvent limiter la région ou l'emplacement de votre organisation Data 360. | Une entreprise a une instance Snowflake dans la région AWS eu-west-1. Ils peuvent utiliser Zero Copy pour fédérer des données dans une Data 360 de leur région, mais ne peuvent pas utiliser Zero Copy pour fédérer dans une Data 360 aux États-Unis. |
| Compatibilité inter-régions Private Connect | Parfois, la prise en charge de Private Connect dépend de la localisation de la source de données dans la même région que le locataire Data 360. | Une entreprise a une instance Snowflake dans la région aws-east-1 qu'elle souhaite connecter à Data 360 via zéro copie. Ils peuvent établir une connexion réseau Private Connect uniquement si l'organisation d'origine Data 360 réside dans la même région. |
| Coût et licence | Chaque locataire Data 360 ajoute un coût. La consolidation en moins d'instances optimise les dépenses. | Un prestataire de soins réduit les coûts de licence en adoptant Data Cloud One au lieu de plusieurs instances Data 360 indépendantes. |
| Évolutivité future | Les choix de provisionnement posent aujourd'hui les bases de la croissance. | Une entreprise SaaS commence avec une instance Data 360 unique, mais envisage de se développer vers Data Cloud One en acquérant des filiales avec des organisations Salesforce. |
| Préparation à l’IA à l’échelle de l’entreprise | Les fonctionnalités IA et Agentforce nécessitent un locataire Data 360 connecté dans chaque organisation. Les décisions de provisionnement affectent l'entraînement et l'activation des modèles IA dans l'entreprise. | Une société de services financiers unifie les données dans Data Cloud One afin que ses modèles IA Einstein aient accès aux données clients de l'entreprise. |
**Option A : Provisionnement de Data 360 dans une organisation existante**
**Convient mieux pour :** Les clients d'une seule organisation Salesforce ou les clients de plusieurs organisations qui ont déjà une organisation centralisée majeure dans laquelle la plupart des processus métiers sont exécutés.
- **Avantages :**
- Chemin le plus simple : Data 360 est provisionnée là où vivent vos données CRM.
- Accès immédiat aux données commerciales, de service et marketing locales.
- Aucune intégration supplémentaire n'est requise.
- Moins de licences et d'environnements à gérer.
- Accélére l'adoption précoce, les pilotes et les cas d'utilisation en production.
- **Inconvénients :**
- Peut hériter de la gouvernance ou de la dette technique d'une organisation existante.
- Si aucune « organisation principale » n'existe, sa sélection peut créer des débats sur la propriété.
- La performance liée à l'emplacement de l'organisation peut ne pas correspondre aux besoins de résidence de l'entreprise.
- Si plusieurs unités commerciales utilisent différentes organisations, le provisionnement local peut entraîner une fragmentation s'il n'est pas associé à Data Cloud One.
**Exemple :**
Une entreprise SaaS avec une organisation Salesforce provisionne Data 360 dans cette organisation pour unifier les données d'abonnement et de support des clients.
**Option B : Provisionnement de Data 360 dans une nouvelle organisation dédiée**
**Convient mieux pour :** Les clients de plusieurs organisations Salesforce qui ne peuvent pas s'aligner sur une seule organisation majeure, ou les entreprises qui ont un modèle Centre d'excellence (CoE) solide.
- **Avantages :**
- Permet d'établir une gouvernance sur une base entièrement nouvelle, sans les complexités héritées d'une organisation existante.
- Contrôle centralisé dans plusieurs secteurs d'activité.
- Flexibilité pour choisir une région en fonction des besoins de conformité.
- Agit en tant qu'organisation neutre de « service partagé », pas liée à une seule unité commerciale.
- Configurez pour la future architecture Data Cloud One (organisation d'accueil avec plusieurs organisations compagnes).
- **Inconvénients :**
- Les clients doivent licencier une nouvelle organisation Salesforce sur laquelle provisionner Data 360.
- Intégration supplémentaire requise pour connecter l'organisation à Data 360 via une connexion complémentaire Data Cloud One.
- Peut ajouter une charge administrative (gestion des utilisateurs, sécurité, identité).
- Délai de valorisation plus long que le provisionnement dans une organisation de production existante.
**Exemple :**
Une multinationale de services financiers crée une organisation d'accueil dédiée pour provisionner Data 360\. Toutes les organisations d'unité commerciale (Retail, Wealth, Commercial Banking) se connectent en tant qu'organisations partenaires via Data Cloud One.
**Critères de décision**
| Considérations | Organisation existante en tant qu'organisation d'accueil (préférée par défaut) | Nouvelle organisation en tant qu'organisation d'accueil (alternative) |
|---|---|---|
| Simplicité | S'appuie sur l'utilisateur existant et la structure de données pour accélérer la configuration. Data 360 est intégrée par défaut à l'organisation d'accueil . |
Nécessite une licence et la configuration d'une nouvelle organisation Salesforce, ainsi que des frais administratifs supplémentaires pour la gérer |
| Temps de mise en valeur | Utilisation immédiate des données CRM locales | Le déploiement et l'intégration sont plus lents. |
| Gouvernance | Hérite du modèle de gouvernance de base de l'organisation existante : utilisateurs et ensembles d'autorisations existants (peut être acceptable si l'organisation est déjà centrale ). | Table rase en matière de gouvernance. Idéal pour les modèles pilotés par COE. |
| Conformité | Résidence liée à la région de l'organisation existante | Flexibilité de sélection d'une région indépendante des organisations existantes |
| Performances | Meilleures performances pour les requêtes CRM locales | Selon la connectivité de l'organisation partenaire, qu'elle soit de même région ou inter-régions avec les autres organisations |
| Évolutivité future | Fonctionne bien s'il est associé à Data Cloud One. Plus difficile de basculer plus tard si l'organisation incorrecte est choisie | S'adapte facilement avec Data Cloud One. Conçu pour la neutralité. |
| Coût | Coût différentiel inférieur | Augmentation des frais généraux liés à des environnements supplémentaires |
**Comment fonctionne Data Cloud One**
- **Ingestion et unification des données (organisation d'accueil)**
- Toutes les configurations d'ingestion de données (Salesforce CRM, sources externes, streaming, batch) sont effectuées uniquement depuis l'organisation d'origine.
- Le locataire Data 360 lié à l'organisation d'origine effectue la résolution de l'identité, harmonisation, modélisation et unification dans des profils clients de confiance.
- L'administration de Data 360, les stratégies de gouvernance, le balisage et le masquage sont appliqués de façon centralisée depuis l'organisation d'origine.
- **Architecture d'espace de données**
- Depuis l'organisation d'origine, les données sont organisées en espaces de données, qui agissent comme des conteneurs logiques pour les données, les métadonnées et les processus.
- Les entreprises peuvent créer des espaces de données pour des marques, des régions ou des secteurs d'activité.
- Partage d'espace de données : Depuis l'organisation d'origine, des espaces de données spécifiques sont partagés de façon sélective avec des organisations partenaires. Ainsi, seules les données pertinentes (et les métadonnées associées) sont transmises aux organisations appropriées.
- **Partage de métadonnées**
Les organisations d'accompagnement reçoivent des définitions de métadonnées de l'organisation d'origine, notamment des objets modèle de données (DMO), un schéma de profil unifié, des connaissances calculées, des segments [et davantage](https://help.salesforce.com/s/articleView?id=data.c360_a_companion_org_data_cloud_features.htm&type=5). Ils sont affichés nativement dans l'organisation associée comme s'ils étaient des actifs locaux, mais ils sont liés à l'organisation d'origine.
- **Capacités dans l’organisation d’accueil par rapport aux organisations compagnes**
L'accès aux fonctionnalités diffère entre les organisations d'accueil et les organisations compagnes. Les organisations compagnes ne peuvent pas ingérer ou unifier des données, et dépendent de l'organisation d'origine pour l'ingestion, la modélisation et l'unification. Les organisations compagnes peuvent accéder aux données Data 360 pour piloter les fonctionnalités de plate-forme pilotées par Data 360, et créer des connaissances, des segments et des flux locaux en plus des données partagées et approuvées. Dans la vision future, ils peuvent également accéder aux fonctionnalités d'activation.
| Capacité | Organisation d'accueil | Organisation compagne |
|---|---|---|
| Connect Configurer des connecteurs, créer des flux de données, ingérer ou fédérer des données | ✅ | ❌ |
| Harmoniser et unifier Élaborer et exécuter des transformations de données et la résolution de l'identité | ✅ | ❌ |
| Sécurisez les données avec un espace de données et des autorisations | ✅ | ✅ |
| Segmenter et prédire : créer des segments, obtenir des analyses et créer des modèles Einstein Studio | ✅ | ✅ |
| Activer des activations Partout, des actions de données | ✅ | ✅ |
| Fonctionnalités de la plate-forme : Générateur de répliques, flux, rapports, enrichissement, [et plus](https://help.salesforce.com/s/articleView?id=data.c360_a_companion_org_data_cloud_features.htm&type=5) | ✅ | ✅ |
| Fonctionnalités pilotées par Data 360 : Centre de prospection, fonctionnalités Sales et Service Cloud, Agentforce, et plus encore | ✅ | ✅ |
| Considérations | Plusieurs organisations Data 360 indépendantes | Un Data 360 partagé (Data Cloud One) |
|---|---|---|
| Autonomie | Grande autonomie pour chaque organisation ou unité commerciale | Gouvernance centralisée, moins d'autonomie par organisation |
| Conformité | Utile lorsqu'une séparation stricte est requise (par exemple, lois régionales) | Fonctionne mieux lorsque la résidence permet la centralisation |
| Coût | Augmentation des coûts de licence et d'administration | Plus économique, une licence pour de nombreuses organisations |
| Gouvernance | Fragmenté ; les politiques diffèrent selon l'organisation | Stratégies centralisées et cohérentes entre les organisations |
| Silos de données | Chaque organisation avec sa propre vue Aucune entreprise 360 | Jeu de données unifié, pas de duplication |
| IA/Analytics | Limité aux données de chaque organisation | Modèles d'entreprise avec une meilleure précision |
| Complexité | Plus d'instances à gérer, plus d'intégrations | Architecture plus simple, moins de pièces mobiles |
| Performances | Idéal pour les cas d'utilisation intra-organisation | Augmentation potentielle de la latence avec l'accès à l'organisation partenaire |
| Facteur | Avantages | Points négatifs |
|---|---|---|
| Résidence des données | Prend en charge la séparation régionale tout en permettant la collaboration. | Ne supprime pas la nécessité de gérer plusieurs Data 360 orgs. |
| Duplication des données | Zéro copie ; pas de duplication d'objets. | Nécessite une sélection délibérée d'objets à inclure dans chaque partage de données. |
| Gouvernance | Le partage est explicite et délibéré (au niveau de l'objet). | Aucun flux de balises ou de politiques ; l'organisation cible doit réappliquer la gouvernance. |
| Complexité | Permet la collaboration sélective sans centralisation. | Nécessite la gestion de plusieurs organisations Data 360 et partages de données. |
| **IA/Analytics** | IA/analytics régionales possibles ; les insights peuvent être partagés entre les orgs. | Aucune IA d'entreprise, sauf si les données sont délibérément partagées. |
| **Fonctionnalités de la plate-forme** | Les fonctionnalités alimentées par Data 360 de chaque org fonctionnent indépendamment. | Aucun partage automatique. Risque de duplication s'il n'est pas soigneusement conçu. |
| Coût | Peut réduire le besoin de pipelines ETL. | Engendre toujours le coût de plusieurs Data 360 orgs. Consomme des crédits pour les requêtes de données et le partage de données. |
| Considérations | Data Cloud One (préféré pour les multi-orgs) | Partage de données entre des organisations Data 360 |
|---|---|---|
| Source unique de vérité | Oui : toutes les organisations partagent un modèle de données. | Non : chaque Data 360 a son propre modèle de données. |
| Conformité | Fonctionne uniquement lorsque la résidence permet la centralisation. | Nécessaire lorsque les lois sur la résidence empêchent la centralisation. |
| Gouvernance | Centralisé, cohérent. | Fédéré ; partages délibérés au niveau de l'objet. |
| Complexité | Moins de pièces mobiles, plus simple. | Plus complexe : nécessite des partages de données de configuration et plusieurs organisations Data. |
| IA/Analytics | Modèles d'IA d'entreprise. | IA régionale. Partager sélectivement des insights. |
| Fonctionnalités de la plate-forme | Un Data 360 partagé signifie que toutes les fonctionnalités fonctionnent de façon cohérente entre l'organisation d'accueil et les organisations partenaires. | Les fonctionnalités sont exécutées indépendamment dans chaque Data 360. Le partage doit être explicite. |
| Salesforce Lightning Platform est une plate-forme complète pilotée par l'IA qui unifie les employés, les agents IA autonomes, les données de l'entreprise et les applications dans un système unique et de confiance afin d'améliorer la productivité et l'expérience client. Il permet la création d'une "entreprise agentique" en connectant les applications Customer 360, Data Cloud, et Slack pour une automatisation de bout en bout. |
| Approche | Description | Compétences requises | Licences et limites |
|---|---|---|---|
| Queueable Apex | Utilisé pour les processus qui impliquent de longues opérations de base de données ou des appels externes de service Web. Apex Queueable offre des fonctionnalités telles que les ID de tâche, la prise en charge des types non primitifs et l'enchaînement des tâches. | Pro-code | Le nombre de licences peut augmenter les limites. |
| Batch Apex | Élaborez des processus complexes et longs qui impliquent des millions d'enregistrements en divisant votre ensemble d'enregistrements et en le traitant en segments gérables. | Pro-code | Le nombre de licences peut augmenter les limites. |
| Apex planifié | Exécutez Apex à une heure planifiée définie par une expression cron. Bien que l'action de planifier Apex via l'expression cron soit un processus asynchrone, le code sous-jacent est exécuté de façon synchrone au démarrage de la tâche. | Pro-code | Le nombre de licences peut augmenter les limites. |
| Apex Continuation Callouts | Exécutez des appels externes à partir de méthodes Apex exécutées dans un contexte de transaction synchrone. | Pro-code | Non |
| Chemin asynchrone (flux déclenchés par un enregistrement) | Exécutez une opération que vous souhaitez lancer en différé. Évitez les erreurs DML mixtes qui se produisent lorsque vous mettez à jour une valeur dans un enregistrement associé qui ne fait pas partie de l'enregistrement ayant déclenché un flux. | Code faible | Le nombre et le type de licences peuvent augmenter les limitations. |
| Parcours planifié (Flux après commit) | Exécutez à une heure planifiée dynamiquement après un événement déclenchant, par exemple lors de la création, de la mise à jour ou de la suppression d'un enregistrement. | Code faible | Le nombre et le type de licences peuvent augmenter les limitations. |
| Flux planifiés | Exécutez un flux en arrière-plan à une heure spécifiée et à une fréquence répétée (quotidienne, hebdomadaire ou unique) pour exécuter des actions sur un lot d'enregistrements. | Code faible | Le nombre et le type de licences peuvent augmenter les limitations. |
| Déclencheurs d'événements de plate-forme | Couplez librement Salesforce à des systèmes externes et communiquez entre des composants asynchrones dans Salesforce Platform. | Low-code + Pro-code | Une licence complémentaire est requise pour les cas d'utilisation d'événements de plate-forme à haut volume |
| Capture des modifications de données | Capturez et traitez les événements de modification de façon asynchrone une fois la transaction de base de données engagée. | Pro-code | Une licence complémentaire est requise pour dépasser l'allocation de référence. |
| API Bulk | Insérez, mettez à jour, effectuez un upsert, interrogez ou supprimez de nombreux enregistrements de façon asynchrone, puis traitez les résultats ultérieurement. | Pro-code | Il y a des limites. |
| Actions Lightning | Autorisez les pages Lightning à interagir avec le serveur sans forcer les utilisateurs à actualiser entièrement la page. | Code faible | Non |
| Compétences requises | Certains outils décrits dans ce guide nécessitent un code, tandis que d'autres peuvent être configurés par déclaration. En examinant vos options, tenez compte des compétences des membres de votre équipe. Notez que même si des développeurs sont disponibles pour votre implémentation initiale (par l'intermédiaire d'un partenaire d'implémentation, par exemple), il peut être nécessaire de modifier vos solutions à l'avenir. Si votre équipe de maintenance n'a pas de développeur, une option Low-code peut être plus adaptée. |
| Type de limites de plate-forme appliquées | Déterminez le type de limite qui s'applique à l'exécution. En concevant vos solutions, réfléchissez attentivement à la façon dont le volume et la fréquence des transactions seront pris en compte dans les limites du gouverneur pour l'approche choisie chaque jour. Calculez le nombre d'exécutions qui auront lieu chaque jour. Assurez-vous que les valeurs calculées respectent les limites associées aux outils que vous avez sélectionnés. |
| Latence | Déterminez la vitesse à laquelle les résultats du traitement seront disponibles sur la plate-forme. Pour certaines approches, les changements seront presque immédiats, alors que pour d'autres, ils peuvent prendre quelques minutes ou quelques heures. |
| Cas d'utilisation | Description | Approche de premier choix | Justification |
|---|---|---|---|
| Traitement par lot hautement performant | Toute automatisation qui doit traiter efficacement des milliers ou des millions d'enregistrements | Batch Apex | Batch Apex fournit des API riches pour interfacer avec la plate-forme et pour la vitesse brute. |
| Tâche de nettoyage des données | Une tâche exécutée régulièrement, ou à la demande, qui nettoie les données. Par exemple, la déduplication, la vérification de l'adresse ou la consolidation des données. | Batch Apex | Batch Apex fournit des API riches pour interfacer avec la plate-forme et pour la vitesse brute. |
| Tâche de cumul nocturne | Tâche qui calcule les données de cumul à la fin d'un jour ouvrable. | Batch Apex | Batch Apex fournit des API riches pour interfacer avec la plate-forme et pour la vitesse brute. |
| Logique déclenchée par un enregistrement | Exécutez une logique en réponse à une mise à jour d'enregistrement. | Varie | Consultez notre guide de décision complémentaire, Automatisation des événements déclenchés par un enregistrement. Il inclut un arbre de décision pour les cas d'utilisation asynchrones, notamment Queueable Apex, Batch Apex, Scheduled Apex, Flux planifié, Flux de chemin asynchrone et Change Data Capture. |
| Mises à jour en cascade via un graphe d'objets | Permet d'exécuter rapidement l'action d'enregistrement d'un utilisateur, en reportant l'exécution asynchrone des mises à jour en cascade d'autres objets. | Queueable Apex | Apex Queueable dispose de puissantes fonctionnalités d'enchaînement qui permettent à la logique de diviser une chaîne de mises à jour en une série de transactions asynchrones. |
| Traitement planifié spécifique à l'enregistrement | Automatisation à une date future et dynamique spécifique à l'enregistrement (par exemple, 3 jours avant une date de fermeture). | Flux avec un parcours planifié | Les parcours planifiés offrent une force unique à Flux, car la plate-forme gère automatiquement la planification, l'annulation et la replanification de ces parcours si les données de l'enregistrement changent. |
| Invocation parallèle de plusieurs services externes lents | Lors d'une exécution synchrone, plusieurs services externes sont invoqués en parallèle pour optimiser le temps d'exécution global. | Apex Continuation Callouts | L'autorisation d'exécution simultanée de plusieurs appels externes lents réduit le temps total nécessaire pour réaliser le travail. |
| Migration des données d'enregistrements à partir d'un système externe | Déplacez de grandes quantités d'enregistrements vers Salesforce Platform à partir d'un système externe. Un processus unique ou planifié régulièrement. | Bulk API | Il s'agit de l'approche la plus efficace et la plus conviviale pour la migration des données. |
| Exécution d'une logique supplémentaire sur un système externe | Modèle de notification par oubli d'un système externe d'un événement sur la plate-forme, puis permettant à ce système de traiter l'événement de façon asynchrone. | Événements de plateforme ou Change Data Capture | Un modèle pub-sub fonctionne mieux ici et permet au système externe de traiter l'événement lorsqu'il est prêt. Pour plus d'informations sur ce schéma, consultez Architecture pilotée par les événements. |