外部對象(External Object)
在Salesforce中,管理員或開發(fā)者可以通過“外部對象”將其他系統(tǒng)中的數(shù)據(jù)虛擬地展現(xiàn)為Salesforce的對象。每個外部對象都要連接到一個外部數(shù)據(jù)源(External Data Source)。
在開發(fā)的時候,外部對象和Salesforce內(nèi)部的標(biāo)準(zhǔn)或自定義對象沒有不同,可以和標(biāo)準(zhǔn)或自定義對象一樣使用,也可以用SOQL查詢。但是Salesforce本身不存儲這些外部對象的數(shù)據(jù),而是通過其對應(yīng)的外部數(shù)據(jù)源的連接來進(jìn)行CRUD操作。
外部數(shù)據(jù)源(External Data Source)
在設(shè)置界面中搜索“外部數(shù)據(jù)源”,點(diǎn)擊“外部數(shù)據(jù)源”鏈接,即可進(jìn)入“外部數(shù)據(jù)源”的頁面。
點(diǎn)擊“新建外部數(shù)據(jù)源”按鈕,即可進(jìn)入“新建外部數(shù)據(jù)源”界面。在此界面中,用戶除了設(shè)定基礎(chǔ)的名稱屬性外,還需要選擇“類型”,比如OData等。

以建立一個OData為例:
OData定義
引自維基百科:
OData協(xié)定,英文全名是Open Data Protocol(OData),它是一個開源的協(xié)定,以簡單和標(biāo)準(zhǔn)的方法,來建造或消除可查詢和可操作的RESTful API。它創(chuàng)始于2007年的微軟公司。
新建外部數(shù)據(jù)源步驟
- 在新建外部數(shù)據(jù)源界面中,填入外部數(shù)據(jù)源的名稱,并將類型選擇為“Salesforce Connect: OData 2.0”
- 在URL輸入框中填入OData的URL。這里使用Salesfore Trailhead中的示例URL:http://orderdb.herokuapp.com/orders.svc
- 點(diǎn)擊保存按鈕,保存外部數(shù)據(jù)源
至此,一個新的OData外部數(shù)據(jù)源就建立完成了。Salesforce可以從URL中的外部數(shù)據(jù)源中獲得數(shù)據(jù)。
驗(yàn)證與同步
在新建的OData外部數(shù)據(jù)源詳細(xì)界面中,可以看到“外部對象”部分是空的。要讓Salesforce得到外部數(shù)據(jù)源的數(shù)據(jù),需要點(diǎn)擊“驗(yàn)證與同步”按鈕。
然后,Salesforce會與外部數(shù)據(jù)源通信,并得到外部數(shù)據(jù)源中的數(shù)據(jù),列出來。
在出現(xiàn)的列表中會有外部數(shù)據(jù)源包含的表格名稱等屬性,并有“已同步”列,代表了該數(shù)據(jù)是否已經(jīng)同步。剛開始此列是空的。
選擇所有列,并點(diǎn)擊“同步”按鈕。然后Salesforce會將外部數(shù)據(jù)源中的數(shù)據(jù)同步過來,并在“外部對象”部分顯示出來。管理員可以編輯或刪除這些對象。
外部對象詳細(xì)信息
雖然Salesforce本身不存儲外部對象的數(shù)據(jù),而是通過外部數(shù)據(jù)源的連接來進(jìn)行CRUD操作,但是在Salesforce同步了外部數(shù)據(jù)源的對象后,會在系統(tǒng)中建立一個對象的定義。
接著上面的例子,在同步了示例的OData外部數(shù)據(jù)源后,在“外部對象”部分點(diǎn)擊“OrderDetails”,就可以看到此外部對象的詳細(xì)信息。
外部對象的詳細(xì)信息和Salesforce標(biāo)準(zhǔn)或自定義對象非常相似。有一點(diǎn)不同的是外部對象的“API名稱”是以“__x”結(jié)尾,而非自定義對象的“__c”。但是其字段的結(jié)尾還是“__c”。
在外部對象的使用過程中,也需要和Salesforce中已經(jīng)存在的對象進(jìn)行聯(lián)系。外部對象的字段在同步時默認(rèn)是數(shù)字、日期、字符串等基本類型。它們可以被更改為查找關(guān)系類型(Lookup),從而與標(biāo)準(zhǔn)或自定義對象建立聯(lián)系。
外部對象相關(guān)的關(guān)系類型有兩種。
- 間接查找關(guān)系(Indirect Lookup Relationship):子對象是外部對象,父對象是內(nèi)部對象
- 外部查找關(guān)系(External Lookup Relationship):父對象是外部對象,子對象可以是內(nèi)部或外部對象
在外部對象中建立間接查找關(guān)系(Indirect Lookup Relationship)
當(dāng)一個外部對象的字段類型被設(shè)置為“間接查找關(guān)系”時,此外部對象會作為子對象連接到另一個對象中。
間接查找關(guān)系的要求父對象擁有一個同時是“外部ID”和“唯一”的字段。此字段會作為父對象中和外部對象建立聯(lián)系的字段。
繼續(xù)上面的例子。我們要將剛才建立的外部對象“Orders”中“API 名稱”為“customerID__c”的字段鏈接到標(biāo)準(zhǔn)對象“客戶”中。
- 在“客戶”對象中建立自定義字段,類型選擇為“數(shù)字”(和外部對象的“customerID__c”字段類型一致),API名稱設(shè)置為“Ext_Customer_ID__c”,并在第二步勾選“獨(dú)有”和“外部ID”復(fù)選框
- 繼續(xù)完成自定義字段的建立
- 進(jìn)入剛才建立的外部對象“Orders”的詳細(xì)信息頁面
- 點(diǎn)擊字段“customerID”左邊的“編輯”按鈕
- 在字段的編輯頁面點(diǎn)擊“更改字段類型”按鈕
- 選擇“間接查找關(guān)系”,點(diǎn)擊“下一步”
- 在“相關(guān)項(xiàng)”下拉列表中選擇“客戶”,這是間接查找關(guān)系字段將要連接的對象
- 在“目標(biāo)字段”下拉列表中選擇“Ext_Customer_ID__c”,也就是剛才在“客戶”對象中建立的字段。這個字段是間接查找關(guān)系的目標(biāo)字段
- 繼續(xù)完成字段的建立
這樣,“客戶”對象就成為了外部對象“Orders”的父對象。在“客戶”對象詳細(xì)信息頁面可以看到“Orders”的相關(guān)列表。
在外部對象中建立外部查找關(guān)系(External Lookup Relationship)
當(dāng)一個外部對象的字段類型被設(shè)置為“外部查找關(guān)系”時,此外部對象會作為子對象連接到另一個外部對象中。
繼續(xù)上面的例子。我們要將剛才建立的外部對象“OrderDetails”中“API 名稱”為“orderID__c”的字段鏈接到外部對象“Orders”上。
- 進(jìn)入剛才建立的外部對象“OrderDetails”的詳細(xì)信息頁面
- 點(diǎn)擊字段“orderID”左邊的“編輯”按鈕
- 在字段的編輯頁面點(diǎn)擊“更改字段類型”按鈕
- 選擇“外部查找關(guān)系”,點(diǎn)擊“下一步”
- 在“相關(guān)項(xiàng)”下拉列表中選擇“Orders”
- 繼續(xù)完成字段的建立
這樣,“Orders”對象就成為了外部對象“OrderDetails”的父對象。