en pt
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
  • Sobre nós
    • Quem Somos
    • Competências
    • Clientes
    • Certificados
    • Notícias
    • Blog
    • Parceiros
  • Serviços
    • Soluções CRM & CX
    • Soluções Mobile
    • Outsourcing
    • Nearshore
  • Produtos
    • AZAPP
    • Push Gateway
    • SALESFORCE Kickoff Pack
    • Informa - Business By Data
  • Oportunidades
    • Candidatura e Oportunidades
    • Academia
  • Contactos
en pt
   
Salesforce – Platform Events
Share
Salesforce – Plataforma de Eventos
  • Conceito
  • Arquitetura Event-Driven
  • Exemplo de Implementação
  • Considerações
  • Conclusão

O objectivo deste artigo é apresentar uma visão geral sobre a funcionalidade de Salesforce designada por Platform Events, através da descrição de conceitos relacionados, da arquitetura de software e com a apresentação de um exemplo de implementação.

 

Conceito

Platform Events (PEs) são basicamente mensagens escaláveis que contêm dados. Em Salesforce, representam uma entidade semelhante a um sObject no sentido em que também têm campos de sistema e podem ser customizadas com a criação de outros. No entanto, os registos de PEs não podem ser actualizados, apagados nem apresentados através da interface de utilizador.

Um platform event é identificado pelo sufixo de API Name ‘__e’. Por exemplo, WIT_ProcessExec__e.

PEs podem constituir uma maneira simples e ainda assim poderosa de ligar não só apps internas de Salesforce como também permitir troca de dados em tempo real com sistemas externos.

 

Arquitetura Event-Driven

A comunicação baseada em eventos funciona num modelo de publisher-subscriber, em que o sender transmite uma mensagem que pode ser capturada por um ou múltiplos listeners. Os eventos são enviados quer os receivers estejam ou não à escuta e os receivers não confirmam a recepção dos mesmos.

O diagrama seguinte ilustra a arquitetura de software baseada em eventos:

Os elementos que compõem este modelo são apresentados de seguida:

Event

É uma ocorrência de algo importante, por exemplo, a mudança de estado de um item ou de um processo. 

Event message

A mensagem que contém dados com os detalhes acerca do evento.

Event producer

O publisher de uma event message.

Event channel

Canal de eventos através do qual o producer envia as event messages e os event consumers lêem essas messages. O canal é para um platform event e agrupa todas as event messages para esse platform event.

Event consumer

Um subscriber de um canal que recebe messages do mesmo.

Event bus

Serviço de comunicação e armazenamento que permite a transmissão de eventos usando o modelo publish-subscribe. O event bus permite a recepção de event messages a qualquer altura durante a janela de retenção.

 

Disponibilidade

  • Os eventos podem ser publicados através de uma ou mais APIs (REST, SOAP, por exemplo);
  • Apex suporta publicação de eventos;
  • Triggers de Apex podem subscrever eventos;
  • Eventos podem ser publicados declarativamente através do Process Builder e do Flow Builder;

 

Exemplo de Implementação

O exemplo seguinte apresenta uma implementação completa de um evento, desde a definição do object schema até à definição lógica de publicação e subscrição da APEX.

 

  1. Especificação do evento

 

Como mencionado anteriormente, um evento é de certa forma semelhante a um SObject e no qual podem ser adicionados alguns campos. Um evento é criado acedendo a Setup > Platform Events.

 

 

A configuração é iniciada com a atribuição de um nome ao evento e com a definição do Publish Behavior, i.e., quando é que numa transação o evento deve ser publicado [1].

De seguida, pode ser configurada o tipo de informação que se pretende guardar no evento, criando para o efeito campos customizados. Neste exemplo, os campos de texto Action e RecordId foram criados para permitirem a definição do nome de uma acção que deverá ser posteriomente executada sobre um determinado registo.

 

 

  1. Especificação da lógica de subscrição

Após criação e especificação do evento, poderá ser definida a lógica de subscrição em APEX para tratamento dos eventos. Neste exemplo, é criada a classe WIT_EventTrigger_Handler na qual é definida toda a lógica de processamento a executar quando o evento é disparado.

 

 

Como se pode verificar, o tratamento do objecto referente ao evento em APEX é semelhante a qualquer outro SObject.

Depois, é criado o trigger para a subscrição do novo evento e e aplicada a lógica de execução do método previamente apresentado.

 

Assim, de forma simples é definida uma solução bulk de eventos que permite processar todos os eventos WIT_ProcessExec__e publicados e para cada um deles executar uma acção sobre um registo previamente especificado.  

Nota: Após criação do trigger, o mesmo fica visível no ecrã de definição do evento.

 

 

  1. Publicação do evento

Na perspectiva de lógica de publicação, pode-se seguir uma estratégia idêntica com a criação de uma classe que permita oferecer uma solução bulk de publicação de eventos.

 

 

Desta forma, sempre que necessária a publicação de algum(ns) evento(s), apenas é necessário invocar o novo método.

 

Considerações

A utilização de PEs pode ser considerada como uma maneira bastante prática a adoptar aquando do desenho de processos grandes e complexos  permitindo a sua escalabilidade e evitando algumas típicas limitações.  

Na implementação apresentada como exemplo, é demonstrado como um PE pode ser totalmente usado num processo interno de Salesforce, através da publicação e subscrição de eventos utilizando APEX.

Num cenário real é bastante comum enfrentarem-se vários desafios no desenho da solução:  

  • Processos de negócio de grande dimensão têm usualmente multiplas operações de DML combinadas com chamadas de API, em que a determinado momento no fluxo, callouts são executados, por exemplo, para obter dados externos;
  • Muitas vezes, esse tipo de operações requerem/devem ser executadas assíncronamente, devido a complexidade, regras de negócio, disponibilidade da API externa, etc.;
  • No topo desses pontos, é comum que esses processos sejam executados no mesmo contexto de execução de um batch;
  • Portanto, quando processos de negócio são desenhados, é importante realçar:
    • Operações DML não podem ser executadas antes de callouts, caso contrário isto irá resultar num erro 'You have uncommitted work pending. Please commit or rollback before calling out' [2;
    • Future methods não podem ser executados em contexto de batch [3];
    • Future methods não podem invocar outros future methods [3];

 

Conclusão

PEs podem então ser utilizados como uma solução a adoptar para os desafios mencionados anteriormente de uma forma simples mas ainda assim poderosa através de uma arquitectura de publicação/subscrição, permitindo a separação de acções complexas em mais simples, encadea-las e separar contextos de execução, resolvendo desta forma as limitações anteriormente referidas.

 

Referências

[1] https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_define_ui.htm

[2] -  https://help.salesforce.com/articleView?id=000328873&type=1&mode=1

[3] - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_invoking_future_methods.htm

 

#Salesforce #PlatformEvents #worldIT

Voltar ao Blog
Cofinanced by
WorldIT Consulting Services © 2025Privacy Policy CANAL DE DENÚNCIA
Avenida Da Igreja,nº42 - 7º Esq, 1700-239 Lisboa (+351) 217 933 630 (+351) 968 513 098 info@worldit.pt