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 customer is having in near real-time?
UI Update Based on Data Changes
總結:此種模型基本上需要 streaming api,然後需要的頁面作為訂閱端,基於輪詢操作去實時監聽。篇中有錯誤地方歡迎指出,有不懂歡迎留言。