Salesforce用户界面必须由于Salesforce数据的更改而自动更新。这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然后基于数据变化以后等着自动刷新。所以这种集成模式应该是基于某种特定的行业数据变动很快要求实时性的UI查看那种。
一. 上下文
您使用Salesforce管理客户Case。一位客户服务代表正在和一位正在办案的客户通电话。客户进行支付,客户服务代表需要从支付处理应用程序中查看Salesforce中的实时更新,指示客户已成功支付订单的未付金额。对这个场景更好的解释是当一个用户打开了某个UI场景下,如果后台的数据发生改变以后,即使用户不手动刷新页面情况下也要展示变更后的数据信息
二. 问题和考虑因素
问题: 当Salesforce中发生事件时,如何在Salesforce用户界面中通知用户而不必刷新屏幕并可能潜在的丢失工作内容?
考虑因素:
当基于这种模式应用解决方案时,需要考虑各种各样的因素:
- 所处理的数据是否需要存储在Salesforce中?
- 是否可以构建自定义用户界面层来查看这些数据?
- 用户是否有权调用自定义用户界面?
三. 解决方案
此种集成问题的推荐解决方案是使用Salesforce Streaming API。此解决方案由以下组件组成:
•带有查询定义的PushTopic,允许以下操作:
–指定触发更新的事件
–选择要包含在通知中的数据
•基于JavaScript的Bayeux协议(目前为CometD)实现,可供用户界面使用
•Visualforce页面或Lightning组件
•作为静态资源包含的JavaScript库
详情可以查看:
salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)
四. 流程草图
五. 其他关键点
应用与此模式相关的解决方案有以下好处:
•无需编写自定义轮询机制
•无需用户启动反馈回路
坏处:某些场景并不支持(Push Topic的限制):
•不保证发送通知。
•不保证通知的顺序。
•批量API所做的记录更改不会生成通知。(其实说的不够严谨,只有针对 batch job并且设置了\’Use Bulk Mode\’ 不会生成通知)
六. 常见考题
Customer Support Reps at Universal Containers (UC) work on a Case record in Salesforce while talking to a customer on the phone about a piece of machinery they have purchased from UC. This machine is a connected device and sends data packets to UC as the customer presses buttons on the machine. What integration pattern will allow the support Rep to watch their screen and diagnose problems custad8omer is having in near real-time?
UI Update Based on Data Changes
总结:此种模型基本上需要 streaming api,然后需要的页面作为订阅端,基于轮询操作去实时监听。篇中有错误地方欢迎指出,有不懂欢迎留言。