Change Data Capture 介绍
Salesforce早于DF17的时候,就发布了Change Data Capture,业内简称CDC。
01CDC是做什么的?
Change Data Capture是Lightning Platform上的流产品(streaming product),使您可以有效地将Salesforce数据与外部系统集成。简单来说,CDC 能够其主要功能是追溯和捕捉数据库级别的数据变化。
借助CDC,您可以实时接收Salesforce记录的更改,并同步外部数据存储中的相应记录。CDC能够捕获数据库级的新建,更新,删除和取消删除操作,然后发布对应的事件。简单来说,如果你只知道Trigger能够捕捉insert,update的操作,你就Out了
下面这张图很形象地描述了Salesforce 的CDC是做什么的?
那么再具体来说,CDC是怎么实现数据的同步呢?
可以看看下面的例子,当有一个对象进行更新操作时候,会更新Salesforce的数据,然后通过Change Event 发布相关事件,而同时外部服务监听此事件,从而实现外部数据库和Salesforce数据库的同步。
#实例 #
那么如何通过Apex Trigger监听数据Change Event呢?可以参考下面的例子。
假设有一个Object为Employee__c,希望在每一次新增修改时候,都能新建一个Task。传统的做法是可以通过在对象下写一个after insert 的trigger,这里我们通过CDC来实现。
首先需要在Setup里面选择所需要使用Change Data Capture的对象。
由于CDC可以捕捉数据变化,可以通过在Employee__ChangeEvent里面写一个EmployeeChangeTrigger 的Trigger。值得注意的是,可以通过changetype来识别数据是Insert还是update。而通过event.Field Name, 可以轻松获得该数据的现在值。
1 | trigger EmployeeChangeTrigger on Employee__ChangeEvent (after insert) { |
其他
那么什么时候可以用CDC?这里列了一些常见的例子:
如果Salesforce记录的更改需要同步外部数据存储中的相应记录。
接收Salesforce记录更改的通知,包括创建,更新,删除
捕获所有记录的字段更改。
取消删除操作(undelete operations)。
监听大量更改
最后,这里附上CDC和Platform Event之间的不同。有时候面试会遇到这些问题。
也可以参考Trailhead里面CDC的模块,链接如下:
https://trailhead.salesforce.com/en/content/learn/modules/change-data-capture
参考文献:
Change Data Capture Developer Guide : https://developer.salesforce.com/docs/atlas.en-us.change_data_capture.meta/change_data_capture/cdc_intro.htm
https://developer.salesforce.com/blogs/2018/08/what-is-change-data-capture.html