S’abonner à un canal d’événement
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Activer les notifications d’événement de modification pour les objets depuis la page Capture des données de modification.
- Utiliser l’API Pub/Sub pour vous abonner à un canal d’événement de modification
- Générer des notifications d’événement de modification en effectuant des mises à jour dans Salesforce.
Maintenant que vous avez découvert les bases de la Capture des données de modification, passons à l’action en générant des modifications dans Salesforce et en recevant des événements de modification. Dans cette section, nous allons créer et modifier un enregistrement d’employé.
Créer l’objet personnalisé Employee
Avant de commencer cet exercice, nous devons définir l’objet personnalisé Employee. La première étape consiste à créer l’objet personnalisé. Vous pouvez effectuer les tâches de cette unité dans votre Trailhead Playground personnel. Pour accéder à votre Trailhead Playground, cliquez sur l’image de votre profil dans le coin supérieur droit, puis sur Hands-on Orgs (Organisations d’exercice), et enfin sur le nom d’utilisateur de l’organisation à lancer.
- Dans Configuration, cliquez sur l’onglet Gestionnaire d’objet, puis sélectionnez Créer > Objet personnalisé.
- Saisissez les valeurs ci-dessous.
- Étiquette :
Employee
(Employé) - Étiquette au pluriel :
Employees
(Employés) - (Si disponible, sélectionnez Commence par un son vocalique.)
- Nom de l’objet :
Employee
(Employé) - Nom de l’enregistrement :
Employee Name
(Nom de l’employé)
- Étiquette :
- Sélectionnez Launch New Custom Tab Wizard after saving this custom object (Lancer l'assistant Nouvel onglet personnalisé après l'enregistrement de cet objet personnalisé).
- Cliquez sur Save (Enregistrer).
- Sur la page Onglet Nouvel objet personnalisé, sélectionnez l’onglet Création pour le style d’onglet.
- Cliquez sur Suivant | Suivant | Enregistrer.
- Cliquez sur Champs et relations, puis sur Nouveau.
- Suivez l’assistant de création de champs pour créer les trois champs suivants :
- Type de données : Texte, étiquette du champ :
Last Name
(Nom), nom du champ :Last_Name
(Nom), longueur :50
, requis : Oui
- Type de données : Texte, étiquette du champ :
First Name
(Prénom), nom du champ :First_Name
(Prénom), longueur :50
- Type de données : Nombre, étiquette du champ :
Tenure
(Ancienneté), longueur :18
, décimales :0
, nom du champ :Tenure
(Ancienneté)
- Type de données : Texte, étiquette du champ :
Activer les notifications de changement pour l’objet Employee
Avant de pouvoir recevoir des notifications de modification, vous devez sélectionner les objets qui vous intéressent. Sinon, vous ne recevrez aucune notification, même en vous abonnant au canal approprié. Dans cette section, nous sélectionnons l’objet personnalisé Employee pour suivre les modifications apportées à l’enregistrement d’employé.
- Dans Setup (Configuration), saisissez
Change Data Capture
(Capture des données de modification) dans la zone Quick Find (Recherche rapide), puis cliquez sur Change Data Capture (Capture des données de modification).
- Dans Entités disponibles, sélectionnez Employé (Employee__c) et cliquez sur la flèche >.
- Cliquez sur Enregistrer.
Abonnement à l’aide de l’API Pub/Sub
Maintenant, nous allons vous montrer comment générer des événements de modification pour les enregistrements d’employés et vous y abonner à l’aide d’un client de l’API Pub/Sub. Dans cette section, nous présentons les étapes permettant de générer et de recevoir des événements de modification afin que vous puissiez voir des exemples d’événements de modification. Vous n’avez pas besoin de suivre ces étapes pour obtenir le badge. Vous pourrez vous référer ultérieurement à ces étapes lorsque vous utiliserez l’API Pub/Sub pour vous abonner à des événements de modification.
Prérequis
- Si vous n’avez pas configuré de plage d’adresses IP approuvées pour votre organisation, vous avez besoin d’un jeton de sécurité que vous ajouterez à votre mot de passe. Pour plus d'informations, consultez Réinitialiser votre jeton de sécurité et Définir des plages d'adresses IP approuvées pour votre organisation.
Étapes
- Pour configurer le client Java de l’API Pub/Sub, suivez les étapes décrites dans Étape 2 : cloner et créer le client de la section Démarrage rapide Java pour l’API Pub/Sub dans le guide du développeur d’API Pub/Sub.
- À l’étape 3 : configurer les paramètres client, indiquez les paramètres de configuration dans
arguments.yaml
.
- Conservez les valeurs par défaut pour
PUBSUB_HOST
etPUBSUB_PORT
.
- Pour
LOGIN_URL
(URL DE CONNEXION), saisissezhttps://login.salesforce.com
ou votre URL de connexion Mon domaine, telle quehttps://mycompany.my.salesforce.com
. - Obtenez le nom d’utilisateur et le mot de passe de votre organisation Trailhead Playground dans l’application Playground Starter. Pour plus d’informations, reportez-vous à l’unité Obtention de votre nom d’utilisateur et mot de passe Trailhead Playground du module Gestion des Trailhead Playgrounds.
- Pour
USERNAME
(NOM D’UTILISATEUR), saisissez votre nom d’utilisateur Trailhead Playground.
- Pour
PASSWORD
(MOT DE PASSE), indiquez le mot de passe Trailhead Playground et ajoutez le jeton de sécurité à votre mot de passe. Pour obtenir un jeton de sécurité, reportez-vous à Réinitialisation de votre jeton de sécurité dans l’aide Salesforce.
- Pour
TOPIC
(RUBRIQUE), indiquez/data/Employee__ChangeEvent
- Définissez la valeur
PROCESS_CHANGE_EVENT_HEADER_FIELDS
surtrue
(vrai). Cette valeur garantit que certains champs, tels quechangedFields
dans ChangeEventHeader, sont développés. Pour en savoir plus, consultez la section Considérations relatives à la désérialisation des événements dans le guide du développeur d’API Pub/Sub.
- Enregistrez vos modifications.
- Dans une fenêtre de terminal, accédez au dossier
java
de premier niveau.
- Pour vous abonner aux événements de modification, saisissez :
./run.sh genericpubsub.Subscribe
Une fois que vous vous êtes abonné au canal pour Employee__c, toute modification apportée aux enregistrements d’employés ou toute création d’enregistrements génère des notifications que le client affiche sur la console.
Création d’un enregistrement d’employé
Effectuons quelques modifications d’enregistrement afin de recevoir des notifications d’événement de modification. Tout d’abord, créez un enregistrement d’employé.
- Dans le lanceur d’application ( ), cherchez et sélectionnez Employés.
- Cliquez sur Nouveau.
- Remplissez les champs suivants :
- Nom de l’employé :
e-100
- Nom de famille :
Smith
- Prénom :
Patricia
- Cliquez sur Save (Enregistrer).
Lorsque vous enregistrez la fiche de l’employé, une notification de modification s’affiche dans la console, comme suit :
{ "ChangeEventHeader": { "entityName": "Employee__c", "recordIds": [ "a00ak00000FqAsJAAV" ], "changeType": "CREATE", "changeOrigin": "com/salesforce/api/soap/61.0;client=SfdcInternalAPI/", "transactionKey": "0001b7b1-5ff1-499e-0b32-4b2aff2f6922", "sequenceNumber": 1, "commitTimestamp": 1722538034000, "commitNumber": 1722538034362728400, "commitUser": "005ak000004FkWTAA0", "nulledFields": [], "diffFields": [], "changedFields": [] }, "OwnerId": "005ak000004FkWTAA0", "Name": "e-100", "CreatedDate": 1722538034000, "CreatedById": "005ak000004FkWTAA0", "LastModifiedDate": 1722538034000, "LastModifiedById": "005ak000004FkWTAA0", "Last_Name__c": "Smith", "First_Name__c": "Patricia", "Tenure__c": null }
Mise à jour d’un enregistrement d’employé
Ensuite, mettons à jour l’enregistrement que nous venons de créer en ajoutant une valeur au champ Tenure et en modifiant ensuite le prénom.
- Cliquez sur Modifier sur la page des détails de l’enregistrement d’employé.
- Modifiez le champ First Name (Prénom) en saisissant
Trish
.
- Pour le champ Tenure (Ancienneté), saisissez
3
.
- Cliquez sur Save (Enregistrer).
La mise à jour de l’enregistrement d’employé génère le message d’événement de modification ci-dessous. Notez que les champs remplis de l’événement de modification sont uniquement les champs d’enregistrement et les champs système nouveaux et modifiés, en plus des champs d’en-tête. Les champs non modifiés sont présents dans le message d’événement, mais sont nuls.
{ "ChangeEventHeader": { "entityName": "Employee__c", "recordIds": [ "a00ak00000FqAsJAAV" ], "changeType": "UPDATE", "changeOrigin": "com/salesforce/api/soap/61.0;client=SfdcInternalAPI/", "transactionKey": "0001b7b6-4696-a4a3-c6a5-8b65014da623", "sequenceNumber": 1, "commitTimestamp": 1722538057000, "commitNumber": 1722538057223217200, "commitUser": "005ak000004FkWTAA0", "nulledFields": [], "diffFields": [], "changedFields": [ "0x0320" ] }, "OwnerId": null, "Name": null, "CreatedDate": null, "CreatedById": null, "LastModifiedDate": 1722538057000, "LastModifiedById": null, "Last_Name__c": null, "First_Name__c": "Trish", "Tenure__c": 3 }
Le champ changedFields
contient les champs qui ont été modifiés. Le champ changedFields
est un champ bitmap qui n’est pas lisible. Il doit d’abord être décodé par le client. Le client abonné décode ce champ et l’imprime après le message d’événement de modification. Dans cet exemple, le champ changedFields
contient les deux champs qui ont été modifiés : First_Name_c
et Tenure__c
. Il comprend également le champ système, LastModifiedDate
, qui contient l’horodatage de la mise à jour.
2024-08-01 11:47:37,738 [grpc-default-executor-1] java.lang.Class - ============================ 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - ChangedFields 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - ============================ 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - LastModifiedDate 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - First_Name__c 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - Tenure__c 2024-08-01 11:47:37,739 [grpc-default-executor-1] java.lang.Class - ============================
Suppression d’un enregistrement d’employé
Voyons maintenant ce qui se passe lorsque nous supprimons un enregistrement d’employé.
- Sur la page des détails de Trish, sélectionnez Supprimer dans le menu déroulant.
- Cliquez sur Supprimer dans la fenêtre contextuelle de confirmation.
La suppression entraîne l’affichage du message d’événement ci-dessous. Dans le cas de suppressions, les événements de modification ne contiennent pas de valeurs pour les champs système ou d’enregistrement. Tous les champs système et d’enregistrement sont inclus, mais avec des valeurs vides.
{ "ChangeEventHeader": { "entityName": "Employee__c", "recordIds": [ "a00ak00000FqAsJAAV" ], "changeType": "DELETE", "changeOrigin": "com/salesforce/api/soap/61.0;client=SfdcInternalAPI/", "transactionKey": "0001045a-a442-5723-cd1f-07e8e39c5c1d", "sequenceNumber": 1, "commitTimestamp": 1722538082000, "commitNumber": 1722538082479947800, "commitUser": "005ak000004FkWTAA0", "nulledFields": [], "diffFields": [], "changedFields": [] }, "OwnerId": null, "Name": null, "CreatedDate": null, "CreatedById": null, "LastModifiedDate": null, "LastModifiedById": null, "Last_Name__c": null, "First_Name__c": null, "Tenure__c": null }
Restauration d’un enregistrement d’employé
Lorsque vous supprimez un enregistrement, celui-ci est « supprimé de manière non définitive » et peut être restauré dans un certain délai. Récupérons l’enregistrement via Apex.
- Cliquez sur le menu d’accès rapide (), puis sélectionnez Developer Console.
- Dans Developer Console, cliquez sur Débogage Ouvrir la fenêtre d’exécution anonyme.
- Dans la nouvelle fenêtre, saisissez ce qui suit et remplacez l’espace réservé pour l’ID par la valeur d’ID renvoyée dans le champ d’en-tête recordIds. Vous pouvez trouver le champ
recordIds
dans le message d’événement de modification que vous avez reçu après la suppression de l’enregistrement à l’étape précédente.
Employee__c record = [SELECT Id,Name FROM Employee__c WHERE Id='ID_Placeholder' ALL ROWS]; undelete record;
- Cliquez sur Exécuter.
La restauration entraîne l’affichage du message d’événement ci-dessous. L’événement de modification relatif à la restauration d’un enregistrement contient des champs issus de l’enregistrement d’origine qui avait été supprimé.
{ "ChangeEventHeader": { "entityName": "Employee__c", "recordIds": [ "a00ak00000FqAsJAAV" ], "changeType": "UNDELETE", "changeOrigin": "com/salesforce/api/soap/61.0;client=devconsole", "transactionKey": "0001b7d4-927c-6028-fe72-7f28dc5cba83", "sequenceNumber": 1, "commitTimestamp": 1722538187000, "commitNumber": 1722538187363508200, "commitUser": "005ak000004FkWTAA0", "nulledFields": [], "diffFields": [], "changedFields": [] }, "OwnerId": "005ak000004FkWTAA0", "Name": "e-100", "CreatedDate": 1722538034000, "CreatedById": "005ak000004FkWTAA0", "LastModifiedDate": 1722538187000, "LastModifiedById": "005ak000004FkWTAA0", "Last_Name__c": "Smith", "First_Name__c": "Trish", "Tenure__c": 3 }
Ressources
-
Développeurs Salesforce : Démarrage rapide Java pour l’API Pub/Sub
-
Développeurs Salesforce : Guide du développeur de la Capture des données de modification
-
Site externe : Référentiel GitHub de l’API Pub/Sub