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.
- En Configuración, haga clic en la ficha Gestor de objetos y, a continuación, seleccione Crear > Objeto personalizado.
- Ingrese los siguientes valores.
- Etiqueta:
Employee
(Empleado) - Etiqueta en plural:
Employees
(Empleados) - (Si está disponible, seleccione Starts with vowel sound.)
- Nombre de objeto:
Employee
(Empleado) - Nombre de registro:
Employee Name
(Nombre de empleado)
- Etiqueta:
- Seleccione Iniciar el asistente de nueva ficha personalizada después de guardar este objeto personalizado.
- Haga clic en Guardar.
- En la página Nueva ficha de objeto personalizado, seleccione la ficha Construcción como estilo de ficha.
- Haga clic en Siguiente | Siguiente | Guardar.
- Haga clic en Campos y relaciones y, a continuación, haga clic en Nuevo.
- Siga el asistente de campos para crear estos tres campos:
- Tipo de datos: Texto, Etiqueta de campo:
Last Name
(Apellido), Nombre de campo:Last_Name
, Longitud:50
, Obligatorio: Sí
- Tipo de datos: Texto, Etiqueta de campo:
First Name
(Nombre), Nombre de campo:First_Name
, Longitud:50
- Tipo de datos: Número, Etiqueta de campo:
Tenure
(Tenencia), Longitud:18
, Número de decimales:0
, Nombre de campo:Tenure
(Tenencia)
- Tipo de datos: Texto, Etiqueta de campo:
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.
- 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).
- En Entidades disponibles, seleccione Empleado (Employee__c) y haga clic en la flecha >.
- Haga clic en Guardar.
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
- Si no configuró un intervalo de direcciones IP de confianza para su organización, necesitará un token de seguridad para anexar a su contraseña. Para obtener más información, consulte Restablecer su token de seguridad y Establecer intervalos de direcciones IP seguros para su organización.
Pasos
- 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.
- En el Paso 3: Configurar parámetros del cliente, ingrese los parámetros de configuración en
arguments.yaml
.
- Conserve los valores predeterminados de
PUBSUB_HOST
yPUBSUB_PORT
.
- En
LOGIN_URL
, ingresehttps://login.salesforce.com
o su URL de inicio de sesión de My Domain (Mi dominio), comohttps://mycompany.my.salesforce.com.
- 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.
- Para
USERNAME
, ingrese su nombre de usuario de Trailhead Playground.
- 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.
- Para
TOPIC
, ingrese/data/Employee__ChangeEvent
- Configure
PROCESS_CHANGE_EVENT_HEADER_FIELDS
comotrue
(verdadero). Este valor asegura que se expandan algunos campos, comochangedFields
, 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.
- Guarde los cambios.
- En una ventana Terminal, vaya a la carpeta
java
superior.
- 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.
- Desde el Iniciador de aplicación (), encuentre y seleccione Empleados.
- Haga clic en Nuevo.
- Rellene los siguientes campos.
- Nombre de empleado:
e-100
- Apellidos:
Smith
- Nombre:
Patricia
- 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.
- En la página de detalles del registro de empleado, haga clic en Modificar.
- Cambie el campo First Name (Nombre) a
Trish
.
- Para Tenure (Tenencia), ingrese
3
.
- 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.
- En la página de detalle de Trish, seleccione Eliminar desde el menú desplegable.
- 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.
- Haga clic en el menú de acceso rápido ( ) y seleccione Developer Console.
- En Developer Console, haga clic en Debug (Depuración) y seleccione Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- 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;
- 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
-
Salesforce Developers: Java Quick Start para la API de Pub/Sub
-
Salesforce Developers: Guía del desarrollador de Captura de datos de cambio
-
Sitio externo: Repositorio GitHub del modelo de publicación y suscripción de la API