本篇參考:後端
https://trailhead.salesforce.com/en/content/learn/modules/lightning_connectapp
https://help.salesforce.com/articleView?id=platform_connect_about.htm&type=5工具
咱們在作salesforce開發的時候,除了須要瞭解最基本的先後端開發時,還須要對salesforce的設計以及government limit等有一些基礎的瞭解。好比咱們知道salesforce一個表能夠建立若干個字段,可是無論當前的字段有多少,這個表的數據每條所佔的內存大約是2K,無論當前的表的數據存儲了1個字段仍是多個字段。性能
公司根據不一樣的需求可能選擇不一樣類型的 license,不一樣的 license有不一樣的 data storage。
經過查詢 salesforce help文檔能夠查看到, Professional, Enterprise , Unlimited Edition 都是10G的數據內存
當咱們的 license購買的 data storage有限時,咱們能夠給salesforce提case加錢去擴充,plus能夠增長200M。然而不是全部的場景都須要各類擴充,由於擴充也意味着在salesforce中的數據不斷變多,使用時相關的性能也會受相應的影響。某些case狀況下可能咱們想使用ERP或者其餘的系統的數據,咱們最開始想的是在salesforce建立一個 custom object或者一個 big object,而後數據遷移過來,當對端系統有改變,經過rest等方式將改動數據再推送過來。其實這種case下salesforce提供了另一種可能,就是這篇所說的salesforce connect 以及 External Object.ui
一. Salesforce Connectspa
Salesforce Connect是一個能夠容許你查看,搜索和修改存儲在salesforce系統外部的數據。他獲取設計
如下的大多數場景都適用狀況下推薦使用 salesforce connect:3d
1. 你有大量的存儲在外部的數據可是你不想拷貝到你的Salesforce org。
2. 你在任什麼時候候都須要少許的數據
3. 你須要實時訪問最新的數據
4. 數據存儲在雲或後臺系統中,但但願在Salesforce org中顯示或處理這些數據。rest
須要注意的是,若是須要頻繁地訪問大量外部數據,ETL(extract, transform, and load)工具仍然是實現最佳性能的最佳選擇。咱們在使用 外部對象前須要去評估一下是否須要使用 salesforce connect仍是 ETL工具。經過上面的描述咱們能夠看到,當想要引用外部系統而且知足上面大部分場景時候,才須要用到 Salesforce Connect,其餘狀況須要按照項目實際狀況操做。orm
二. Salesforce Connect簡單設置和集成
官方給了一個實際的業務場景的demo,這裏進行簡單的描述。系統的客戶的訂單以及訂單詳細信息維護在外部ERP系統,系統管理員被要求在客戶詳情頁能夠查看到當前的客戶對應的訂單信息以及訂單詳細。其中訂單信息以及訂單詳細信息不用維護到salesforce系統,每條顧客信息不會有大量的數據,每次訪問須要展現最新的訂單信息。這種業務場景咱們推薦考慮使用 External Object。 步驟以下:
1. 建立 External DataSource
首先按照trailhead的demo安裝一個 app exchange,連接以下:https://login.salesforce.com/packaging/installPackage.apexp?p0=04tE00000001aqG&isdtp=p1. 用來安裝一些須要用到的字段以及其餘的metadata。安裝好之後,切換到classic之後,app選擇到External Object,tab選擇到 Quickstart,正常會展現一個button叫作Set Customer IDs ,點擊這個button之後會展現下面的圖了,證實數據初始化成功,這個在實際項目中確定不須要,只是trailhead爲了保證數據能夠進行關聯而作的初始化操做。
初始化操做結束之後,咱們開始進行 external data source的建立,在 setup 處搜索 external data source點擊左側的item便可查看當前系統的external data source信息。點擊 New External Data source便可建立。
咱們按照要求配置相關信息,須要注意的是,實際的項目中必定要使用認證證書,URL爲官方提供的demo數據。
點擊Save之後建立好一個External Data Source。
2.建立 External Object
當咱們建立完 External Data Source即可以更方便的建立 External Object了。咱們進入剛剛建立的 External Data Source,點擊 Validate And Sync按鈕。
這裏咱們針對外部數據只選擇了Order 以及Order Detail兩個 External Object,點擊 Sync,點擊之後即可以生成了 External Object。
setup 搜索External Object,點擊左側即可以進入相關的生成的External Object了。
3. 設置各表之間的關係。這步很重要,咱們建立了外部對象,綁定了外部的data source,目的是要使用這些數據,因此搞清楚各個表之間的關係,瞭解外部對象之間以及外部對象和內部對象之間的關聯關係很重要。當前的demo中,咱們能夠看到, Account有一個或者多個Order,一個Order有一個或者多個 Order Detail.其中 Account是 salesforce Object, Order以及Order Detail是外部對象,咱們先根據下面的表搞清楚關係。
Type of Relationship(關係類型) | Child Object(子Object) | Parent Object(父Object) | Must External Data Contain Salesforce IDs? 外部數據是否包含Salesforce Id |
Lookup | Standard, Custom, or External | Standard or Custom | Yes |
External Lookup | Standard, Custom, or External | External | No |
Indirect Lookup | External | Standard or Custom | No |
經過上面的圖表,咱們能夠看到 針對外部對象和內部對象以及外部對象和外部對象的關係,能夠有三種關係類型,分別是 lookup / External Lookup / Indirect Lookup。
lookup類型用於當父表是salesforce表,字表是External狀況,而且External Data Source的數據包含了Salesforce Id狀況下,能夠在 External Object中建立 lookup類型的字段,關聯到salesforce的表上;
External Lookup用於 父表是外部表,而且字表是salesforce內部或者外部狀況下,能夠建立一個 External Lookup類型字段;
Indirect Lookup用於父表是 salesforce中的表,字表是外部的表,而且不經過salesforce Id關聯,經過 外鍵形式的字段進行關聯,能夠建立一個Indirect Lookup類型字段。
根據咱們如今的場景, Account 和 Order,由於Order是外部表,適用於 Indirect Lookup; Order 和 Order Detail 表都是外部表,父是 External,因此只能是 External Lookup。
知道類型之後,咱們對錶中的字段進行 change type操做,將 Order表中的 customerId字段修改爲 indirect lookup類型,關聯到account的customer id字段;同理對 Order Detail的orderID字段修改爲 External Lookup類型,關聯到Order表的order id。
這幾個表建立完關聯關係,之後,咱們須要更改 account以及order的page layout,將related list相關的信息拖出來,既能夠在有外鍵關聯的 account的數據的關聯列表中查看到 External Object的Order信息以及點進去Order查看到 Order Detail信息。
總結:篇中主要講了一下Salesforce Connect以及 External Object的簡單使用。項目中不必定使用到,可是涉及到大型項目,有這個概念,知道什麼場景使用它便可。Salesforce設計很神奇的地方是不一樣的功能不一樣的後綴。自定義表 __c, Big Object使用 __b, External Object使用 __x,若是能瞭解底層的知識必定是一個很奇妙的體驗。篇中有錯誤地方歡迎指出,有不懂歡迎留言。