Entender a arquitetura de software orientada a eventos
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Listar os componentes da arquitetura de software baseada em eventos.
- Explicar os benefícios de uma arquitetura de software orientada a eventos.
- Descrever casos de uso para o recurso Eventos de plataforma.
- Descrever as características de um evento de plataforma.
Antes de começar esse módulo
Sabemos que você está ansioso para começar! Mas antes de começar a trabalhar neste módulo, você deve estar familiarizado com alguns conceitos para poder concluí-lo.
Este módulo mostra como você pode publicar eventos de plataforma usando o Apex, API REST, fluxos e processos. Além disso, este módulo mostra como assinar eventos da plataforma usando os acionadores do Apex, além de outros métodos. Para poder entender este módulo, você deve estar familiarizado com, pelo menos, uma dessas tecnologias. Para poder realizar o desafio prático neste módulo, você deve estar familiarizado com os acionadores do Apex. Aqui está uma lista de uma trilha e módulos que você pode usar para aprender sobre o Apex.
- Se você não tem conhecimento prévio de uma linguagem de programação orientada a objetos, siga esta trilha: Trilha Criar habilidades de codificação do Apex
- Se você estiver familiarizado com uma linguagem de programação orientada a objetos, confira estes módulos: Banco de dados e noções básicas do Apex, Acionadores do Apex e Testes do Apex.
Além disso, familiaridade com os conceitos da API Pub/Sub será útil neste módulo, embora não imprescindível. Para saber mais sobre a API Pub/Sub, confira a Documentação da API Pub/Sub.
Entender a arquitetura de software orientada a eventos
Seu sistema de pedidos enviou um pacote? Seus cartuchos de impressora precisam ser substituídos? Não importa sobre o que você queira ser notificado, a plataforma de sistema de mensagens empresarial do Salesforce fornece a entrega de notificações personalizadas seguras e escaláveis no Salesforce e a partir de fontes externas. Com eventos de plataforma, você pode monitorar seus sistemas e comunicar alterações a outros sistemas.
O paradigma da comunicação baseada em eventos gira em torno de um modelo editor-assinante – um remetente transmite uma mensagem que um ou mais receptores capturam. É como uma radiotransmissão – uma torre de transmissão envia um sinal de rádio e os receptores recebem o sinal se estiverem sintonizados na frequência certa.
Assim como a radiotransmissão, a comunicação baseada em eventos flui do remetente para o receptor. Os eventos são enviados independentemente de os receptores estarem ouvindo ou não, e os receptores não confirmam quando recebem um evento. A comunicação baseada em eventos ocorre em tempo real – ou, mais precisamente, quase em tempo real. As ondas de rádio viajam à velocidade da luz, mas os softwares e hardwares baseados em eventos normalmente têm algumas latências.
No módulo do Trailhead, Noções básicas da API da plataforma, usamos a analogia de um radar em um navio pirata para representar a detecção de eventos. Essa analogia funciona bem para o streaming de eventos de captura de dados de alteração, que são baseados em alterações nos registros do Salesforce. Esse modelo de comunicação requer apenas um assinante. Mas com eventos de plataforma, há dois participantes na comunicação: um remetente e um receptor. Eles são dois dos componentes de uma arquitetura orientada a eventos.
Componentes de sistemas orientados a eventos
Antes de continuarmos, vamos definir alguns termos.
Evento
Uma mudança de estado que é significativa em um processo comercial. Por exemplo, a apresentação de uma ordem de compra é um evento significativo, pois o centro de processamento de pedidos espera receber uma notificação antes de processar o pedido.
Mensagem de evento
Uma mensagem que contém dados sobre o evento. Também é conhecida como uma notificação de evento. Por exemplo, uma mensagem de evento pode ser uma notificação sobre um pedido feito, contendo informações sobre o pedido.
Produtor de eventos
O editor de uma mensagem de evento. Por exemplo, um aplicativo para fazer pedidos.
Canal de eventos
Uma corrente de eventos na qual um produtor de eventos envia mensagens de evento e consumidores de evento leem essas mensagens. Para eventos de plataforma, o canal é para um evento de plataforma ou um canal personalizado que agrupa mensagens de evento de vários eventos de plataforma.
Consumidor de eventos
Um assinante de um canal que recebe mensagens do canal. Por exemplo, um aplicativo para processamento de pedidos que é notificado de novos pedidos.
Barramento de eventos
Um serviço de armazenamento e entrega de eventos multilocatário e multinuvens baseado em um modelo de publicação/assinatura. O barramento de eventos habilita a recuperação de mensagens de evento armazenadas a qualquer momento durante a janela de retenção. O barramento de eventos é baseado em um registro de eventos ordenado por tempo, que garante que as mensagens de evento sejam armazenadas e entregues na ordem de recebimento pelo Salesforce.
O diagrama a seguir ilustra uma arquitetura de software baseada em eventos.
Diferentemente dos modelos de comunicação solicitação-resposta, a arquitetura de software criada em um modelo orientado a eventos desvincula produtores de eventos de consumidores de eventos, simplificando assim o modelo de comunicação em sistemas conectados. Nenhuma solicitação precisa ser feita a um servidor para se obter informações sobre determinado estado. Em vez disso, um sistema se inscreve em um canal de eventos e é notificado sempre que há ocorrência de novos estados. Qualquer número de consumidores pode receber e reagir aos mesmos eventos. Quando um evento ocorre, os sistemas obtêm informações e podem reagir a elas quase em tempo real. Os sistemas que enviam eventos e os que recebem os eventos não têm dependências uns dos outros, exceto pela semântica do conteúdo da mensagem.
A plataforma de sistema de mensagens empresarial do Salesforce oferece os benefícios da arquitetura de software orientada a eventos. Os eventos de plataforma são as mensagens de evento que seus aplicativos enviam e recebem. Eles simplificam o processo de comunicação de alterações e de reação a elas sem precisar que você escreva uma lógica complexa. Editores e assinantes se comunicam entre si por meio de eventos de plataforma. Um ou mais assinantes pode ouvir o mesmo evento e executar ações.
Digamos que uma agência de notícias chamada Cloud News envia eventos para clientes inscritos com as últimas notícias sobre as condições do tráfego e das estradas em um destino turístico de retiro nas montanhas. O conteúdo desses eventos não são apenas as notícias em si, mas também os detalhes relacionados como, por exemplo, se uma notícia é urgente ou não e o local do incidente. Os assinantes podem receber esses eventos e determinar que ações tomar com base na urgência da notícia.
Tudo isso parece muito bom, mas quais seriam alguns casos reais em que você poderia utilizar eventos de plataforma? É claro, o uso de eventos de plataforma não é restrito a uma agência de notícias. A seguir estão algumas aplicações úteis.
Exemplos de quando usar eventos de plataforma
Vamos dar uma olhada em alguns cenários de negócios que utilizam eventos de plataforma. Nesses cenários, o Salesforce e os sistemas externos se comunicam por meio de mensagens de eventos de plataforma. No primeiro cenário, um aplicativo no Salesforce notifica aplicativos externos para processamento de pedidos de um pedido de envio de produto. No segundo cenário, um aplicativo de produto externo notifica o Salesforce de devoluções de mercadorias. O último cenário mostra como as mensagens de evento são usadas no Salesforce por meio de acionadores.
Plataforma para aplicativo externo: processamento de pedidos em um aplicativo de fornecedor
Quando uma oportunidade é fechada como ganha no Salesforce, sua empresa ganhou um negócio com um cliente. Digamos que você usa fornecedores para enviar produtos associados a uma oportunidade. Cada fornecedor tem um aplicativo externo que processa o envio de pedidos de produtos específicos. O aplicativo externo ouve os eventos de plataforma. Quando uma oportunidade é fechada, um acionador, que faz parte de um aplicativo de pedido de produto no Salesforce, é ativado e publica uma mensagem de evento de plataforma. Cada aplicativo de fornecedor é notificado sobre o evento. O fornecedor responsável pelo envio do produto específico cria o envio.
Aplicativo externo para aplicativo de plataforma: processar devoluções de mercadorias no Salesforce
Digamos que alguém deseja devolver mercadorias compradas a um fornecedor. Um sistema externo envia solicitações de devolução de mercadorias para o Salesforce para serem processadas. O sistema externo publica um evento de plataforma para alertar o Salesforce da devolução de mercadorias. Um ouvinte de evento (um acionador) no Salesforce recebe o evento e executa algumas ações. Por exemplo, o acionador pode alertar o representante de vendas para a devolução e enviar um email de confirmação para o cliente.
Plataforma para plataforma: reatribuir registros de lead
Quando um lead é atribuído no Salesforce, um acionador de lead é ativado e verifica oportunidades e casos abertos relacionados ao proprietário do lead. Com base nos registros relacionados, o acionador publica um evento que é recebido por um aplicativo do Salesforce. Com base nas informações do evento, o aplicativo reatribui o lead e cria uma publicação no Chatter.
Neste cenário, você pode executar as mesmas ações usando o Flow Builder. Mas usando eventos de plataforma, você se beneficia de um modelo de programação baseado em eventos e de uma maneira padrão de programar em todos os seus aplicativos.
Características de evento de plataforma
Agora que você tem uma ideia de quando usar eventos de plataforma, vamos mergulhar mais fundo nos componentes e características deles.
Você define os dados personalizados contidos em eventos de plataforma. Assim como com objetos personalizados, você define eventos de plataforma no Salesforce. Você cria uma definição de evento de plataforma lhe dando um nome e adicionando campos personalizados. Aqui está uma definição de amostra de campos personalizados para um evento de notícias para a agência Cloud News.
Rótulo/Nome do campo |
Nome da API do campo |
Tipo de campo |
---|---|---|
Localização |
Location__c |
Texto Tamanho: 100 |
Urgente |
Urgent__c |
Caixa de seleção |
News Content |
News_Content__c |
Área do texto (longo) |
Eventos de plataforma e objetos do Salesforce
Um evento de plataforma é um tipo especial de entidade do Salesforce, muito semelhante a um objeto do Salesforce. Uma mensagem de evento é uma instância de um evento de plataforma, mais ou menos da mesma forma que um registro é uma instância de um objeto do Salesforce. Diferentemente do que acontece com registros, você não pode atualizar nem excluir mensagens de evento nem visualizá-las na interface do usuário do Salesforce.
Você pode definir permissões de leitura e criação para eventos de plataforma. Você concede permissões a usuários em perfis ou em conjuntos de permissões.
Usar eventos de plataforma em aplicativos externos e nativos
Eventos de plataforma permitem o fluxo de mensagens de evento dentro do Salesforce e de ou para aplicativos externos. Os aplicativos na Salesforce Platform utilizam um método do Apex para publicar eventos e um acionador do Apex ou o componente do Lightning Emp API para consumir eventos. Como uma alternativa ao código, você pode publicar eventos com a ferramenta declarativa Flow Builder. Aplicativos externos publicam eventos usando a API Pub/Sub ou APIs de dados e consomem eventos usando a API Pub/Sub. Como você pode ver, há uma grande flexibilidade na maneira como você escolhe usar eventos de plataforma!
Use eventos de plataforma nestes casos:
- Para enviar e receber dados de evento personalizado com um esquema predefinido
- Para publicar ou se inscrever em eventos no Apex
- Pela flexibilidade de publicar e processar eventos dentro e fora da Salesforce Platform
Na próxima unidade, falaremos sobre como definir um evento de plataforma e publicar eventos.
Recursos