外部對象(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”的父對象。