一种为基于Salesforce数据改变

时间:2021-12-18 05:47:45

Streaming API参考链接:

https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming

 https://resources.docs.salesforce.com/210/latest/en-us/sfdc/pdf/api_streaming.pdf

配景:事情中我们有可能会有这样相关的需求:某些数据很重要,需要实时监控是否有变革,或者某些数据在其他的平台有集成。如果有变革,不刷新页面或者做其他trigger等操纵便可以收到相关变动的推送通知(不管是salesforce平台还是其他外部处事,好比java端等,可以通过此种方法进行实时同步),报告当前的需要监控的记录已经产生了变革。这种场景往往更会呈此刻数据不止存储在salesforce端,还有其他平台有数据的存储或者访谒。这种情况下可以使用Streaming API。

一.Stream API简单介绍

Streaming API供给了两种成果,一种为基于Salesforce数据转变,对订阅的客户端进行通知推送,另一种是不基于Salesforce数据转变,对订阅的客户端进行通知推送,接下来大部分内容基于Salesforce数据转变后,对订阅的客户端进行推送,此外一种感兴趣的可以自行检察。通知推送不止可以应用于salesforce系统,其他系统等也可以通过oauth等连接后接收到通知推送,感兴趣的可以检察API供给的内容。

Streaming API用于制定一套你想要接收的数据的条件,并且指定哪些事件(create/update/delete/undelete)情况下切合的数据推送一条通知到客户端,一条通知就是事件触发的功效发送到渠道的动静。通知的格局为JSON的格局。使用Streaming API可以减少不须要的API请求。

Streaming API使用的推送技术,即处事器端会主动给订阅的客户端发送通知信息,而不是客户端去挪用处事器端返回动静,使用Bayeux协议和CometD用于长轮询。

cometd 参考链接: https://docs.cometd.org/

如果想使用Streaming API,需要enable api的权限以及streaming api的权限

想要接受通知(notifications),当前登录的user必需针对StreamingChannel表拥有read权限

想要创建和打点通知,当前登录的user必需对StreamingChannel拥有Create权限

一种为基于Salesforce数据改变

 二.Streaming API 使用法式

针对开发者来说,更存眷的是这个对象如何使用。使用Streaming API实现订阅者接收切合条件的推送动静可以三步走:

1.创建PushTopic

去除一下PushTopic神奇的面纱,简单的来说,PushTopic是一个标准的sObject,封装了以下的字段:

ApiVersion:用于指定盘问的SQL的版本,37以后系统可以存储24小时以内的事件,必填字段;

Description:PushTopic的描述信息,限定在400个字符以内;

ID:指定一笔记录的全局独一的标识;

isActive:是否可用,关系到PushTopic的限制计数(系统对PushTopic有limitation size);

IsDeleted:指定此PushTopic是否移动到回收站;

Name:PushTopic的名字,界说了渠道的名字,并且此名称必需是独一的,后期订阅者订阅时,使用的就是这个名字;

NotifyForFields:指定哪些字段被评估生成通知;

NotifyForOperations:指定数据哪种事件操纵会生成通知,在api version 29以后,此字段为只读字段;

NotifyForOperationCreate:Create操纵是否会生成通知,api29以后可用;

NotifyForOperationDelete:Delete操纵是否会生成通知,api29以后可用;

NotifyForOperationUndelete:UnDelete操纵是否会生成通知,api29以后可用;

NotifyForOperationUpdate:Update操纵是否会生成通知,api29以后可用;

Query:SOQL语句决定了哪些数据切合触发的事件后会发送到渠道。

恩,新建一个PushTopic,设置了必填字段的值insert以后,一个PushTopic就创建完了。这些字段有几个需要详细的描述一下:

Query:Query在PushTopic的感化不言而喻,界说了哪些数据可以满足条件进行推送。Query语法和SOQL基真不异,但是有一些情况不撑持。限制如下:

select字段无ID;

子连接盘问Semi-joins and anti-joins;

聚合类的盘问,好比SUM,AVG等;

COUNT;

LIMIT;

关系型盘问不撑持,只可以盘问到ID,不能通过“.”的方法盘问到父的其他信息;

盘问中包孕Text Area字段;

ORDER BY;

GROUP BY;

WHERE部分使用了formula类型字段;

NOT   Example : SELECT Id FROM Account WHERE NOT Name = ‘Salesforce.com‘

OFFSET

TYPEOF

NotifyForFields:推送的message包罗一项sObject字段值的信息,会推送哪些字段值取决于NotifyForFields的赋值,NotifyForFields赋值及感化如下:

All :推送所有的字段

Referenced (default) : 推送select以及where部分字段的并集调集,如果不指定此字段值,默认值为Referenced

Select :只推送select部分的字段;

Where;只推送where部分的字段。