Event-Driven Development in Salesforce : Amit Chaudhary
by: Amit Chaudhary
blow post content copied from Apex Hours
click here to view original post
In this session we will talk about Event-Driven Development in Salesforce. Let’s take a look into the many ways events have changed the way we develop on Salesforce – we’re going to be taking a look at Lightning Message Service, CustomEvent, the EMP API, Platform Events, Change Data Capture, WebSocket, and Consent Events!
Event Driven Development
- Decouples point to point integrations
- Real-time notifications through Publishing & Subscribing
- Send messages and data to a single destination

Events & Salesforce
How does it translate?

Browser Events
Communication across the page
JavaScript Events : Communicate across the the dom using DOM events or Custom events. They adhere to a generic specification that can be used across all types of browser pages and applications.
Lightning Message Service : Specific to Salesforce – they allow you to communicate in a similar way to JS events however route through a secure message channel
Custom Events
Allow you to Define, Dispatch and Subscribe to an event within the browser. These are not controlled by locker service in any way.

Publishing Event
const event = new CustomEvent('message',{
detail: {
value: this.value
},
bubbles:true
});
this.dispatchEvent(event);
Subscribing Event
connectedCallback(){
window.addEventListener('message', this.handleMessage, false);
}
handleMessage = (event) => {
let detail = event.detail.value;
}
disconnectedCallback(){
window.removeEventListener('message', this.handleMessage, false);
}
Lightning Message Service
Same concept, different approach
import CHANNEL_NAME from '@salefsorce/messageChannel/Channel_Name__c';
doSomething(){
const payload = {};
publish(this.messageContact,CHANNEL_NAME,payload);
}
MessageContext : Opens up LMS to the component through createMessageContext();
Publish : Allows you to publish a message through the message channel
Subscribe : Allows you to subscribe to a message channel and pass the result to a method
Platform Events
Platform Event is based on Event-Driven Architecture which enable apps to communicate inside and outside of Salesforce. Platform events are based on the publish/subscribe model and work directly with a message bus which handles the queue of incoming events and processes listening for them. This is built in real time integration patterns in the Salesforce Platform which helps to reduce point-to-point integration
Here is some terminology we should remember :-
- Event : A change in state that is meaningful in a business process.
- Event message / Notification : A message that contains data about the event.
- Event producer : The publisher of an event message over a channel.
- Channel : A conduit in which an event producer transmits a message. Event consumers subscribe to the channel to receive messages. Also referred to as event bus in Salesforce.
- Event consumer : A subscriber to a channel that receives messages from the channel.

Publish Messages
- Apex
- Flows
- APIs
Subscribe to Message
- Apex Triggers
- Flow
- External Applications
Publishing
As easy as creating a record
public static void PublishServiceAlert() {
ServiceAlert__e alert = new ServiceAlert__c();
alert.VehicleId__c = '500S000000EjcSOIAZ';
alert.Message__c = 'This is a message';
Database.SaveResult sr = EventBus.publish(alert);
}
Or using the Rest API
/services/data/v51.0/sobjects/Event_Name__e/
Subscribing
Subscribe via Trigger
trigger ServiceAlertTrigger on ServiceAlert__e (after insert) {
for (ServiceAlert__e event : Trigger.New) {
// Do something
}
}
Via Flow
EMP API
Quickly subscribe to events in Lightning Components to listen in real time
handleSubscribe() {
const messageCallback = function(response) {
// Do Something
};
subscribe(this.channelName, -1, messageCallback.bind(this)).then(response => {
console.log('Subscription request sent to: ', JSON.stringify(response.channel));
this.subscription = response;
});
}
Honorable Mentions
Change Data Capture : Sends platform events containing all of the fields changed on a record.
Consent Events : Sends platform events each time a privacy related field or object is changed.
Real-time Event Monitoring : Sends platform events each time an event monitoring related action is taken.
Websockets
Listen to external events as they’re streamed
Recording
Please check below recording for more details.
Agenda
- Event Driven Development
- Browser Events
- Pub Sub
- Web Sockets
- Honorable Mentions
The post Event-Driven Development in Salesforce appeared first on Apex Hours.
April 24, 2021 at 10:29PM
Click here for more details...
=============================
The original post is available in Apex Hours by Amit Chaudhary
this post has been published as it is through automation. Automation script brings all the top bloggers post under a single umbrella.
The purpose of this blog, Follow the top Salesforce bloggers and collect all blogs in a single place through automation.
============================

Post a Comment