1. 程式人生 > >salesforce零基礎學習(九十八)Salesforce Connect & External Object

salesforce零基礎學習(九十八)Salesforce Connect & External Object

本篇參考:

https://trailhead.salesforce.com/en/content/learn/modules/lightning_connect

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.

一. Salesforce Connect

Salesforce Connect是一個可以允許你檢視,搜尋和修改儲存在salesforce系統外部的資料。他獲取

以下的大多數場景都適用情況下推薦使用 salesforce connect:

1. 你有大量的儲存在外部的資料但是你不想拷貝到你的Salesforce org。
2. 你在任何時候都需要少量的資料
3. 你需要實時訪問最新的資料
4. 資料儲存在雲或後臺系統中,但希望在Salesforce org中顯示或處理這些資料。

需要注意的是,如果需要頻繁地訪問大量外部資料,ETL(extract, transform, and load)工具仍然是實現最佳效能的最佳選擇。我們在使用 外部物件前需要去評估一下是否需要使用 salesforce connect還是 ETL工具。通過上面的描述我們可以看到,當想要引用外部系統並且滿足上面大部分場景時候,才需要用到 Salesforce Connect,其他情況需要按照專案實際情況操作。

二. 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,如果能瞭解底層的知識一定是一個很奇妙的體驗。篇中有錯誤地方歡迎指出,有不懂歡迎留