Skip to main content
Build the future with Agentforce at TDX in San Francisco or on Salesforce+ on March 5–6. Register now.

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.

  1. Dans Configuration, cliquez sur l’onglet Gestionnaire d’objet, puis sélectionnez Créer > Objet personnalisé.
  2. Saisissez les valeurs ci-dessous.
    1. Étiquette : Employee (Employé)
    2. Étiquette au pluriel : Employees (Employés)
    3. (Si disponible, sélectionnez Commence par un son vocalique.)
    4. Nom de l’objet : Employee (Employé)
    5. Nom de l’enregistrement : Employee Name (Nom de l’employé)
  3. 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é).
  4. Cliquez sur Save (Enregistrer).
  5. Sur la page Onglet Nouvel objet personnalisé, sélectionnez l’onglet Création pour le style d’onglet.
  6. Cliquez sur Suivant | Suivant | Enregistrer.
  7. Cliquez sur Champs et relations, puis sur Nouveau.
  8. Suivez l’assistant de création de champs pour créer les trois champs suivants :
    1. Type de données : Texte, étiquette du champ : Last Name (Nom), nom du champ : Last_Name (Nom), longueur : 50, requis : Oui
    2. Type de données : Texte, étiquette du champ : First Name (Prénom), nom du champ : First_Name (Prénom), longueur : 50
    3. Type de données : Nombre, étiquette du champ : Tenure (Ancienneté), longueur : 18, décimales : 0, nom du champ : Tenure (Ancienneté)

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é.

  1. 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).
  2. Dans Entités disponibles, sélectionnez Employé (Employee__c) et cliquez sur la flèche >.
  3. Cliquez sur Enregistrer.

Page Capture des données de modification.

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

Étapes

  1. 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.
  2. À l’étape 3 : configurer les paramètres client, indiquez les paramètres de configuration dans arguments.yaml.
    1. Conservez les valeurs par défaut pour PUBSUB_HOST et PUBSUB_PORT.
    2. Pour LOGIN_URL (URL DE CONNEXION), saisissez https://login.salesforce.com ou votre URL de connexion Mon domaine, telle que https://mycompany.my.salesforce.com.
    3. 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.
    4. Pour USERNAME (NOM D’UTILISATEUR), saisissez votre nom d’utilisateur Trailhead Playground.
    5. 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.
    6. Pour TOPIC (RUBRIQUE), indiquez /data/Employee__ChangeEvent
    7. Définissez la valeur PROCESS_CHANGE_EVENT_HEADER_FIELDS sur true (vrai). Cette valeur garantit que certains champs, tels que changedFields 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.
  1. Enregistrez vos modifications.
  2. Dans une fenêtre de terminal, accédez au dossier java de premier niveau.
  3. 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é. 

  1. Dans le lanceur d’application ( Lanceur d’application), cherchez et sélectionnez Employés.
  2. Cliquez sur Nouveau.
  3. Remplissez les champs suivants :
    • Nom de l’employé : e-100
    • Nom de famille : Smith
    • Prénom : Patricia
  1. 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. 

  1. Cliquez sur Modifier sur la page des détails de l’enregistrement d’employé.
  2. Modifiez le champ First Name (Prénom) en saisissant Trish.
  3. Pour le champ Tenure (Ancienneté), saisissez 3.
  4. 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é. 

  1. Sur la page des détails de Trish, sélectionnez Supprimer dans le menu déroulant.
  2. 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.

  1. Cliquez sur le menu d’accès rapide (Icône d’engrenage de configuration), puis sélectionnez Developer Console.
  2. Dans Developer Console, cliquez sur Débogage Ouvrir la fenêtre d’exécution anonyme.
  3. 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;
  1. 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

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires