Platform Event is based on Event-Driven Architecture. This is a type of integration used to communitcate within salesforce or external systems.It is a publish/subscribe model.
Publish Events :
We can publish events in 3 types:
1) Using Apex trigger
2) Using Process builder/Visual Workflow
3) Salesforce API from External Apps
Creating Platform Event in salesforce :
Setup -> Develop ->Platform Events -> Create Platform Event.
Platform Event Object Schema:
Object Name : XYZ
API : XYZ__e
Supported Field types in Platform Events : We can create only below field types in platform Events.
Checkbox
Number
Text
Text Area (Long)
Date
Data/Time
How to publish Platform Events :
We already discussed above 3 ways of publishing Events
1) Using Apex
List learnownlist = new List();
learnown__e Learnown = new learnown__e( Number__c='12345', status__c=1 );
learnownlist.add(Learnown);
List learnownresults = EventBus.publish(learnownlist);
for (Database.SaveResult sr : learnownresults) {
if (sr.isSuccess()) {
System.debug('Successfully published event.');
} else {
for(Database.Error err : sr.getErrors()) {
System.debug('Error returned: ' + err.getStatusCode() );
}
}
}
2) Using Process Builder : We can use process builder or lighting flow to Punish platform Events.
3) Salesforce API :
Login to Workbench and go to Rest API and click on post
/Services/data/v42.0/Sobjects/learnown__e
Subscribe Platform Events :
1) subscribe using Apex triggers.Write After insert trigger on platform event object to subscribe incoming data.
2) use empApi standard methods in Lighting Web Components to subscribe the incoming data.
trigger PlatformEventTrigger on PublishStatusEvent (after insert) {
for (PublishStatusEvent event : Trigger.New) {
System.debug('Event Name:' + event.Topic);
System.debug('Event status:' + event.Status);
if (event.Status == 'FAILURE') {
for(PublishStatusDetail detail : details) {
// Get these details from PublishStatusDetail object
//detail.EventUuid;
//detail.Replay;
//detail.StatusCode;
//detail.FailureReason;
}
}
}
}
Platform Event sample response:
{"schema":"IT2dHRrtIgzcJ0zDBtg3Ww","payload":
{"ShopperID__c":"a377d597ff4d40bba7e0d82cdf62ed9d","CreatedById":"005b0
000001wSB2AAM","code__c":"8018505410660135601874","LoyaltyNumber
__c":"60013560187","Voucher__c":null,"CreatedDate":"2018-11-
07T06:31:56.739Z","IsActive__c":false}
,"event":{"replayId":566}}
Platform Event Limitations :
• Maximum number of platform event definitions that can be created in an
org – 100
• Maximum number of processes that can subscribe to a platform event –
4000
• Maximum number of active processes that can subscribe to a platform
event – 2000
• Maximum number of event notifications published per hour – 1,00,000 limit
• Events that are published cannot be rolled back – 24 hours
Retrieve Platform Event for Deployment : Platform Event object is also a custom object so we can retrieve using Custom object type. We can use “*” as a member to retrieve it.
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>CustomObject</name>
</types>
<version>50.0</version>
</Package>
Reference: Click Here
