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.
  • Usar o EMP Connector para assinar um canal de eventos 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. É possível acompanhar em seu Trailhead Playground ou na organização Developer Edition. Para acessar seu Trailhead Playground, clique em sua imagem de perfil no canto superior direito, clique em 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.

Rótulo: Funcionário

Rótulo no plural: Funcionários

(Se disponível, selecione Começa com som de vogal.)

Nome do objeto: Funcionário

Nome do registro: Nome do funcionário

3. Selecione Iniciar o assistente da nova guia personalizada após salvar o 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:

Tipo de dados: Texto, Rótulo do campo: Sobrenome, Nome do campo: Last_Name, Tamanho: 50, Obrigatório: Sim

Tipo de dados: Texto, Rótulo do campo: Nome, Nome do campo: First_Name, Tamanho: 50

Tipo de dados: Número, Rótulo do campo: Tempo no cargo, Tamanho: 18, Casas decimais: 0, Nome do campo: Tenure

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 Configuração, insira Captura de dados de alteração na caixa Busca rápida e clique em 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

Assinar usando o EMP Connector

Em seguida, mostraremos como gerar e assinar eventos de alteração para registros de funcionários usando o EMP Connector. 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. Você pode consultar as etapas quando usar o EMP Connector para assinar eventos de alteração mais tarde.

Nota

Nota

O EMP Connector é uma ferramenta gratuita, de código aberto e com suporte de comunidade. O Salesforce oferece essa ferramenta como um exemplo de como assinar eventos usando CometD. Para contribuir para o projeto do EMP Connector com seus próprios aprimoramentos, envie solicitações pull para o repositório em https://github.com/forcedotcom/EMP-Connector.

Pré-requisitos

Etapas

  1. Para obter uma cópia local do repositório GitHub EMP-Connector:
  2. Para criar a ferramenta EMP-Connector:
    • $ cd EMP-Connector
    • $ mvn clean package
    • O comando mvn gera arquivos JAR na pasta target no diretório de projeto do EMP-Connector. O arquivo JAR gerado, target/emp-connector-0.0.1-SNAPSHOT-phat.jar, inclui o conector e a funcionalidade LoginExample. O JAR contém todas as dependências do conector, para que você não tenha que baixá-las separadamente.
  3. Para executar o EMP Connector com sua organização Developer Edition ou Trailhead Playground, digite esse comando e forneça as credenciais de login da organização pertinente e o canal a ser assinado. Neste exemplo, o canal é /data/Employee__ChangeEvent.
    • $ java -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <nomedeusuário> <senha> /data/Employee__ChangeEvent
Nota

Nota

A linha de comando interpreta que alguns caracteres têm uma função especial. Se sua senha incluir caracteres especiais, coloque-a entre aspas simples para que seja transmitida como uma sequência de caracteres literal. Por exemplo, em sistemas MacOS e baseados em UNIX, alguns dos caracteres especiais que precisam ser incluídos entre aspas são !, \ e $.

Depois de assinar o canal no EMP-Connector 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 Iniciador de aplicativos (Iniciador de aplicativos), encontre e selecione Empregados.
  2. Clique em Novo.
  3. Ajuste os campos a seguir.
    • Nome do empregado: e-100
    • Sobrenome: Smith
    • Primeiro nome: Patricia
  4. Clique em Save (Salvar).

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

{
  "schema": "-pszPCNGMHqUPU1ftkjxEA",
  "payload": {
    "LastModifiedDate": "2019-09-25T20:36:12.000Z",
    "OwnerId": "005RM000001vI4mYAE",
    "CreatedById": "005RM000001vI4mYAE",
    "ChangeEventHeader": {
      "commitNumber": 65840604581,
      "commitUser": "005RM000001vI4mYAE",
      "sequenceNumber": 1,
      "entityName": "Employee__c",
      "changeType": "CREATE",
      "changedFields": [],
      "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/",
      "transactionKey": "00051d2e-a65a-3e97-03fc-cdf4e16d5d3c",
      "commitTimestamp": 1569443772000,
      "recordIds": [
        "a00RM0000004ICTYA2"
      ]
    },
    "CreatedDate": "2019-09-25T20:36:12.000Z",
    "First_Name__c": "Patricia",
    "LastModifiedById": "005RM000001vI4mYAE",
    "Name": "e-100",
    "Last_Name__c": "Smith"
  },
  "event": {
    "replayId": 15053
  }
}

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 de nome para Trish.
  3. Em 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 o evento de alteração contém somente campos novos e modificados além dos campos de cabeçalho.

{
  "schema": "-pszPCNGMHqUPU1ftkjxEA",
  "payload": {
    "LastModifiedDate": "2019-09-25T20:38:11.000Z",
    "ChangeEventHeader": {
      "commitNumber": 65840825286,
      "commitUser": "005RM000001vI4mYAE",
      "sequenceNumber": 1,
      "entityName": "Employee__c",
      "changeType": "UPDATE",
      "changedFields": [
        "LastModifiedDate",
        "First_Name__c",
        "Tenure__c"
      ],
      "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/",
      "transactionKey": "00051d4a-7640-5b8c-c6d1-b8db4ce4cf2f",
      "commitTimestamp": 1569443892000,
      "recordIds": [
        "a00RM0000004ICTYA2"
      ]
    },
    "First_Name__c": "Trish",
    "Tenure__c": 3.0
  },
  "event": {
    "replayId": 15054
  }
}

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ão não contêm campos de registro ou sistema.

{
  "schema": "-pszPCNGMHqUPU1ftkjxEA",
  "payload": {
    "ChangeEventHeader": {
      "commitNumber": 65841052769,
      "commitUser": "005RM000001vI4mYAE",
      "sequenceNumber": 1,
      "entityName": "Employee__c",
      "changeType": "DELETE",
      "changedFields": [],
      "changeOrigin": "com/salesforce/api/soap/47.0;client=SfdcInternalAPI/",
      "transactionKey": "00051d67-b628-09dc-15a0-05101183b4d1",
      "commitTimestamp": 1569444019000,
      "recordIds": [
        "a00RM0000004ICTYA2"
      ]
    }
  },
  "event": {
    "replayId": 15055
  }
}

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.

{
  "schema": "-pszPCNGMHqUPU1ftkjxEA",
  "payload": {
    "LastModifiedDate": "2019-09-25T20:43:31.000Z",
    "OwnerId": "005RM000001vI4mYAE",
    "CreatedById": "005RM000001vI4mYAE",
    "ChangeEventHeader": {
      "commitNumber": 65841428802,
      "commitUser": "005RM000001vI4mYAE",
      "sequenceNumber": 1,
      "entityName": "Employee__c",
      "changeType": "UNDELETE",
      "changedFields": [],
      "changeOrigin": "com/salesforce/api/soap/47.0;client=devconsole",
      "transactionKey": "00051d9a-2fd0-e4de-a8e6-09f68b7ca54c",
      "commitTimestamp": 1569444212000,
      "recordIds": [
        "a00RM0000004ICTYA2"
      ]
    },
    "CreatedDate": "2019-09-25T20:36:12.000Z",
    "First_Name__c": "Trish",
    "LastModifiedById": "005RM000001vI4mYAE",
    "Tenure__c": 3.0,
    "Name": "e-100",
    "Last_Name__c": "Smith"
  },
  "event": {
    "replayId": 15056
  }
}

Recursos