Skip to main content
Join the Agentforce Hackathon on Nov. 18-19 to compete for a $20,000 Grand Prize. Sign up now. Terms apply.

Suscribirse a un canal de eventos

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Activar objetos para notificaciones de eventos de cambio en la página Captura de datos de cambio.
  • Utilice el modelo de publicación y suscripción de la API para suscribirse a un canal de eventos de cambio.
  • Genere notificaciones de eventos de cambio realizando actualizaciones en Salesforce.

Ahora que aprendió los fundamentos de Captura de datos de cambio, realicemos un ejercicio práctico generando algunos cambios en Salesforce y recibiendo eventos de cambio. Para esta sección vamos a crear y modificar un registro de empleado. 

Crear el objeto personalizado Empleado

Antes de que podamos iniciar ese ejercicio tenemos que definir el objeto personalizado Empleado. El primer paso es crear el objeto personalizado. Puede completar las tareas en esta unidad en su propio Trailhead Playground personal. Para acceder a su Trailhead Playground, haga clic en su imagen de perfil en la esquina superior derecha, haga clic en Hands-on Orgs (Organizaciones de prácticas) y, a continuación, haga clic en el nombre de usuario de la organización que desea lanzar.

  1. En Configuración, haga clic en la ficha Gestor de objetos y, a continuación, seleccione Crear > Objeto personalizado.
  2. Ingrese los siguientes valores.
    1. Etiqueta: Employee (Empleado)
    2. Etiqueta en plural: Employees (Empleados)
    3. (Si está disponible, seleccione Starts with vowel sound.)
    4. Nombre de objeto: Employee (Empleado)
    5. Nombre de registro: Employee Name (Nombre de empleado)
  3. Seleccione Iniciar el asistente de nueva ficha personalizada después de guardar este objeto personalizado.
  4. Haga clic en Guardar.
  5. En la página Nueva ficha de objeto personalizado, seleccione la ficha Construcción como estilo de ficha.
  6. Haga clic en Siguiente | Siguiente | Guardar.
  7. Haga clic en Campos y relaciones y, a continuación, haga clic en Nuevo.
  8. Siga el asistente de campos para crear estos tres campos:
    1. Tipo de datos: Texto, Etiqueta de campo: Last Name (Apellido), Nombre de campo: Last_Name, Longitud: 50, Obligatorio:
    2. Tipo de datos: Texto, Etiqueta de campo: First Name (Nombre), Nombre de campo: First_Name, Longitud: 50
    3. Tipo de datos: Número, Etiqueta de campo: Tenure (Tenencia), Longitud: 18, Número de decimales: 0, Nombre de campo: Tenure (Tenencia)

Activar el objeto empleando para notificaciones de cambio

Antes de que pueda recibir notificaciones de cambio, tiene que seleccionar los objetos en los que está interesado. En caso contrario, incluso si se suscribe al canal correcto, no recibirá notificaciones. En esta sección seleccionamos el objeto personalizado Empleado para que escuche los cambios en el registro Empleado.

  1. En Setup (Configuración), ingrese Change Data Capture (Captura de datos de cambio) en el cuadro Quick Find (Búsqueda rápida) y haga clic en Change Data Capture (Captura de datos de cambio).
  2. En Entidades disponibles, seleccione Empleado (Employee__c) y haga clic en la flecha >.
  3. Haga clic en Guardar.

La página Captura de datos de cambio

Suscribirse usando el modelo de publicación y suscripción de la API

A continuación, le mostramos cómo generar eventos de cambio y suscribirse a ellos para registros de Empleado utilizando el cliente Java del modelo de publicación y suscripción de la API. En esta sección, proporcionamos los pasos para generar y recibir eventos de cambio de modo que puede ver ejemplos de eventos de cambio. No necesita seguir los pasos para completar esta insignia. Puede consultar los pasos cuando utilice el modelo de publicación y suscripción de la API para suscribirse a eventos de cambio más adelante.

Requisitos previos

Pasos

  1. Si desea configurar el cliente Java del modelo de publicación y suscripción de la API, siga el Paso 2: Clonar y crear el cliente del inicio rápido de Java en la Guía del desarrollador del modelo de publicación y suscripción de la API.
  2. En el Paso 3: Configurar parámetros del cliente, ingrese los parámetros de configuración en arguments.yaml.
    1. Conserve los valores predeterminados de PUBSUB_HOST y PUBSUB_PORT.
    2. En LOGIN_URL, ingrese https://login.salesforce.com o su URL de inicio de sesión de My Domain (Mi dominio), como https://mycompany.my.salesforce.com.
    3. En la aplicación Playground Starter, obtenga el nombre de usuario y la contraseña de su Trailhead Playground. Para obtener más información, consulte la unidad Obtener su nombre de usuario y contraseña de Trailhead Playground en el módulo Gestión de Trailhead Playground.
    4. Para USERNAME, ingrese su nombre de usuario de Trailhead Playground.
    5. Para PASSWORD, ingrese la contraseña de Trailhead Playground y anexe el token de seguridad a su contraseña. Para obtener un token de seguridad, consulte Restablecer su token de seguridad en la Ayuda de Salesforce.
    6. Para TOPIC, ingrese /data/Employee__ChangeEvent
    7. Configure PROCESS_CHANGE_EVENT_HEADER_FIELDS como true (verdadero). Este valor asegura que se expandan algunos campos, como changedFields, en ChangeEventHeader. Para obtener más información, consulte Consideraciones para la retirada de números de serie de eventos en la Guía del desarrollador de API de Pub/Sub.
  1. Guarde los cambios.
  2. En una ventana Terminal, vaya a la carpeta java superior.
  3. Para suscribirse a eventos de cambio, ingrese: ./run.sh genericpubsub.Subscribe

Una vez que se suscriba al canal para Employee__c, cualquier cambio en los registros Empleado o la creación de nuevos registros generarán notificaciones que el cliente imprime en la consola.

Crear un registro de empleado

Realicemos algunos cambios en registros para que recibamos algunas notificaciones de eventos de cambio. En primer lugar, cree un registro de empleado. 

  1. Desde el Iniciador de aplicación (Iniciador de aplicación), encuentre y seleccione Empleados.
  2. Haga clic en Nuevo.
  3. Rellene los siguientes campos.
    • Nombre de empleado: e-100
    • Apellidos: Smith
    • Nombre: Patricia
  1. Haga clic en Guardar.

Cuando guarde el registro de empleado, aparece una notificación de cambio en la consola de la manera siguiente.

{
  "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
}

Actualizar un registro de empleado

A continuación, actualicemos el registro que acabamos de crear agregando un valor al campo Tenencia y luego modificando el nombre. 

  1. En la página de detalles del registro de empleado, haga clic en Modificar.
  2. Cambie el campo First Name (Nombre) a Trish.
  3. Para Tenure (Tenencia), ingrese 3.
  4. Haga clic en Guardar.

Al actualizar el registro de empleado se genera el siguiente mensaje de evento de cambio. Observe que los campos completados en el evento de cambio son únicamente los campos nuevos y modificados de registros y del sistema, además de los campos de encabezado. En el mensaje de evento figuran los campos sin modificar, pero son nulos.

{
  "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
}

El campo changedFields contiene los campos que se modificaron. El campo changedFields es un campo de mapa de bits que no puede leerse. El cliente primero debe decodificarlo. El cliente del suscriptor decodifica este campo y lo imprime después del mensaje de evento de cambio. En este ejemplo, el campo changedFields contiene los dos campos que se modificaron: First_Name__c y Tenure__c. También contiene el campo de sistema, LastModifiedDate, que incluye la marca de tiempo de la actualización.

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 - ============================

Eliminar un registro de empleado

Ahora veamos qué sucede cuando eliminamos el registro de empleado. 

  1. En la página de detalle de Trish, seleccione Eliminar desde el menú desplegable.
  2. Haga clic en Eliminar en el mensaje emergente de confirmación.

La eliminación da como resultado el siguiente mensaje de evento. Los eventos de cambio para las eliminaciones no incluyen ningún valor para los campos de registros ni campos del sistema. Todos los campos de registros y del sistema están incluidos, pero son valores vacíos.

{
  "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
}

Recuperar un registro de empleado

Cuando elimina un registro, su “eliminación es recuperable” y puede restaurarse dentro de un límite de tiempo específico. Restauremos el registro a través de Apex.

  1. Haga clic en el menú de acceso rápido ( Icono de engranaje) y seleccione Developer Console.
  2. En Developer Console, haga clic en Debug (Depuración) y seleccione Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
  3. En la nueva ventana, ingrese lo siguiente y sustituya el marcador de posición de Id. por el valor de Id. devuelto en el campo de encabezado recordIds. Podrá encontrar el campo recordIds en el mensaje de evento de cambio que recibió después de eliminar el registro en el paso anterior.
Employee__c record = [SELECT Id,Name FROM Employee__c WHERE Id='ID_Placeholder' ALL ROWS];
undelete record;
  1. Haga clic en Execute (Ejecutar).

La recuperación da como resultado el siguiente mensaje de evento. El evento de cambio de un registro recuperado contiene campos del registro original eliminado.

{
  "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
}

Recursos

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios