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.

Assinar um canal de eventos

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Habilitar objetos para notificações de evento de alteração na página de captura de dados de evento.
  • Use a API Pub/Sub para se inscrever em um canal de evento de alteração.
  • Gerar notificações de evento de alteração fazendo atualizações no Salesforce.

Agora que você aprendeu o básico sobre o Change Data Capture, vamos ver na prática gerando algumas alterações no Salesforce e recebendo eventos de alteração. Para esta seção, vamos criar e modificar um registro de funcionário. 

Criar o objeto personalizado Funcionário

Antes de podermos começar esse exercício, precisamos definir o objeto personalizado Funcionário. O primeiro passo é criar o objeto personalizado. Você pode concluir as tarefas desta unidade em seu Trailhead Playground pessoal. Para acessar seu Trailhead Playground, clique em sua imagem de perfil no canto superior direito, clique em Hands-on Orgs (Organizações práticas), e clique no nome de usuário da organização que você quer lançar.

  1. Em Configuração, clique na guia Gerenciador de objetos e selecione Criar > Objeto personalizado.
  2. Insira os valores a seguir.
    1. Rótulo: Employee (Funcionário)
    2. Rótulo no plural: Employees (Funcionários)
    3. (Se disponível, selecione Começa com som de vogal.)
    4. Nome do objeto: Employee (Funcionário)
    5. Nome do registro: Employee Name (Nome do funcionário)
  3. Selecione Iniciar o assistente da nova guia personalizada após salvar este objeto personalizado.
  4. Clique em Save (Salvar).
  5. Na página Nova guia de objeto personalizado, selecione o estilo Criação no Estilo de guia.
  6. Clique em Avançar | Avançar | Salvar.
  7. Clique em Campos e relacionamentos e clique em Novo.
  8. Siga o assistente para criar estes três campos:
    1. Tipo de dados: Texto, Rótulo do campo: Last Name (Sobrenome), Field Name (Nome do campo): Last_Name, Length (Tamanho): 50, Required (Obrigatório): Sim
    2. Tipo de dados: Texto, Rótulo do campo: First Name (Nome), Field Name (Nome do campo): First_Name, Length (Tamanho): 50
    3. Tipo de dados: Número, Rótulo do campo: Tenure (Tempo no cargo), Length (Tamanho): 18, Decimal Places (Casas decimais): 0, Field Name (Nome do campo): Tenure (Tempo no cargo)

Habilitar o objeto Funcionário para notificações sobre alterações

Antes de poder receber notificações sobre alterações, você precisa selecionar os objetos desejados. Do contrário, mesmo assinando o canal certo, você não receberá nenhuma notificação. Nesta seção, selecionamos o objeto personalizado Funcionário para receber as alterações do registro Funcionário.

  1. Em Setup (Configuração), insira Change Data Capture (Captura de dados de alteração) na caixa Busca rápida e clique em Change Data Capture (Captura de dados de alteração).
  2. Em Entidades disponíveis, selecione Employee (Employee__c) e clique na seta >.
  3. Clique em Save (Salvar).

A página do Change Data Capture

Inscrever-se usando a API Pub/Sub

Em seguida, mostraremos como gerar e assinar eventos de alteração para registros de funcionários usando um cliente JAVA da API Pub/Sub. Nesta seção, fornecemos as etapas para gerar e receber eventos de alteração para que você possa ver exemplos de eventos de alteração. Você não precisa seguir as etapas para concluir este emblema. Consulte as etapas ao usar a API Pub/Sub para depois se inscrever em eventos de alteração.

Pré-requisitos

Etapas

  1. Para configurar o cliente Java da API Pub/Sub, siga as etapas na Etapa 2: Clone e crie o cliente do Início rápido do Java para API Pub/Sub no Guia do desenvolvedor da API Pub/Sub.
  2. Na Etapa 3: Configure os parâmetros do cliente, forneça os parâmetros de configuração em arguments.yaml.
    1. Mantenha os valores padrão para PUBSUB_HOST e PUBSUB_PORT.
    2. Para LOGIN_URL, insira https://login.salesforce.comou sua URL de login do Meu domínio, como https://mycompany.my.salesforce.com.
    3. Obtenha o nome de usuário e a senha da sua organização do Trailhead Playground no aplicativo Playground Starter. Para obter mais informações, consulte Obter seu nome de usuário e senha para o Trailhead Playground do módulo Gerenciamento do Trailhead Playground.
    4. Em USERNAME, insira seu nome de usuário do Trailhead Playground.
    5. Em PASSWORD (Senha), forneça a senha do Trailhead Playground e anexe o token de segurança à sua senha. Para obter um token de segurança, consulte Redefinir seu token de segurança na Ajuda do Salesforce.
    6. Em TOPIC (Tópico), forneça /data/Employee__ChangeEvent
    7. Defina PROCESS_CHANGE_EVENT_HEADER_FIELDS como true (verdadeiro). Esse valor garante que alguns campos, como changedFields em ChangeEventHeader estejam expandidos. Para obter mais informações, consulte Considerações sobre desserialização de eventos no Guia do desenvolvedor da API Pub/Sub.
  1. Salve suas alterações.
  2. Em uma janela Terminal, navegue até a pasta java de nível superior.
  3. Para assinar eventos de alteração, insira: ./run.sh genericpubsub.Subscribe

Depois de assinar o canal para Employee__c, as alterações feitas nos registros de funcionário ou a criação de novos registros gerarão notificações que a ferramenta enviará para o console.

Criar um registro de funcionário

Vamos fazer algumas alterações no registro para recebermos algumas notificações de eventos. Primeiro, crie um registro de funcionário. 

  1. No App Launcher (Iniciador de aplicativos) (Iniciador de aplicativos), encontre e selecione Employees (Funcionários).
  2. Clique em Novo.
  3. Ajuste os campos a seguir.
    • Employee name (Nome do funcionário): e-100
    • Sobrenome: Smith
    • Primeiro nome: Patricia
  1. Clique em Save (Salvar).

Ao salvar o registro de funcionário, uma notificação de alteração aparece no console da seguinte forma:

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

Atualizar um registro de funcionário

Em seguida, vamos atualizar o registro que acabamos de criar adicionando um valor ao campo Tempo no cargo e modificando o nome do funcionário. 

  1. Na página de detalhes do registro de funcionário, clique em Editar.
  2. Mude o campo First Name (Nome) para Trish.
  3. Em Tenure (Tempo no cargo), insira 3.
  4. Clique em Save (Salvar).

A atualização do registro do funcionário gera a mensagem de evento de alteração a seguir. Observe que os campos preenchidos no evento de alteração são apenas os campos novos e modificados do registro e do sistema, além dos campos de cabeçalho. Os campos não modificados estão presentes na mensagem do evento, mas são 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
}

O campo changeFields contém os campos que foram alterados. O campo changeFields é um campo de bitmap que não é legível. Deve ser decodificado primeiro pelo cliente. O cliente assinante decodifica este campo e o imprime após a mensagem do evento de alteração. Neste exemplo, o campo changedFields contém os dois campos que foram alterados: First_Name__c e Tenure__c. Ele também contém o campo do sistema, LastModifiedDate, que contém o carimbo de data/hora da atualização.

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

Excluir um registro de funcionário

Agora, vejamos o que acontece quando excluímos o registro do funcionário. 

  1. Na página de detalhes de Trish, selecione Excluir no menu suspenso.
  2. Clique em Excluir no pop-up de confirmação.

A exclusão resulta na mensagem de evento a seguir. Os eventos de alteração de exclusões não incluem nenhum valor para campos de registro ou de sistema. Todos os campos de registro e sistema estão incluídos, mas com valores vazios.

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

Cancelar exclusão de um registro de funcionário

A exclusão de um registro é uma “exclusão reversível” e pode ser restaurada durante determinado período. Vamos restaurar o registro por meio do Apex.

  1. Clique no menu de acesso rápido (Ícone de engrenagem de configuração) e selecione Developer Console.
  2. No Developer Console, clique em Depurar e selecione Abrir a janela Executar anônimo.
  3. Na nova janela, insira o que segue e substitua o ID de espaço reservado pelo valor de ID retornado no campo de cabeçalho recordIds. É possível encontrar o campo recordIds na mensagem de evento de alteração recebida após a exclusão do registro, na etapa anterior.
Employee__c record = [SELECT Id,Name FROM Employee__c WHERE Id='ID_Placeholder' ALL ROWS];
undelete record;
  1. Clique em Executar.

O cancelamento da exclusão resulta na mensagem de evento a seguir. O evento de alteração para um registro com a exclusão cancelada contém campos do registro original excluído.

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

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback