自定義元數據類型的優點
Salesforce中的設定都是以元數據(Metadata)存在的。在Salesforce中,用戶可以新建自定義對象、自定義字段等,這些數據結構都以元數據的形式存儲在系統中。當用戶遷移Salesforce數據時,如果不使用數據遷移工具(比如Data Loader或者導入導出工具),那么Salesforce中只能遷移元數據,而其中的記錄就無法被同時遷移。
自定義元數據類型的優勢在於用戶可以像新建自定義對象和字段一樣新建自定義元數據類型,而且可以向其中添加記錄,然后可以將數據結構和數據記錄一起打包到軟件包中,並直接導入到其他系統中。
示例:自定義元數據類型的創建和使用
在這里通過一個例子說明如何新建和使用自定義元數據類型。比如要建立一個實現歐冠聯賽規則的自定義元數據類型。
新建自定義元數據類型
在設置界面中搜索“自定義元數據類型”,點擊“自定義元數據類型”鏈接,即可進入“全部自定義元數據類型”的一覽表界面。
點擊新建按鈕,即可像新建自定義對象一樣新建一個自定義元數據類型。
注意在“可見性”的設置中,需要選擇是否讓所有Apex代碼和API都可以使用此類型,並且在“設置”中可見。如果需要更高的安全性,可以選擇“僅相同的受管軟件包中的 Apex 代碼可以看到此類型”一項。
點擊保存之后,可以看到自定義元數據類型已經成功建立,在詳細信息頁面,可以看到“API名稱”一項,是以“__mdt”結尾,這一點和自定義對象類似,不過自定義對象是以“__c”結尾。
在此界面中,可以新建“自定義字段”、“驗證規則”、“頁面布局”等,和自定義對象中的類似。“自定義字段”的“API名稱”和自定義對象中的自定義字段一樣,都以“__c”結尾。
注意自定義元數據類型的標准字段名字和自定義對象中的不完全一樣。
在此建立一些自定義字段,結果如圖:
添加數據記錄
至此,只完成了自定義元數據類型的數據結構的建立,還沒有數據記錄。現在的“歐冠聯賽規則”自定義元數據類型和自定義對象沒有區別。
在詳細信息頁面中,點擊“管理 歐冠聯賽規則”按鈕,即可添加數據記錄。
建立數據記錄的結果如圖:
在Apex中使用自定義元數據類型
在Apex中,可以像使用自定義對象一樣使用自定義元數據類型。比如使用剛才建立的“歐冠聯賽規則”自定義元數據類型:
List<Champions_League_Rule__mdt> clRuleList = [SELECT MasterLabel, Stage__c, Description__c, Count_Away_Goals__c FROM Champions_League_Rule__mdt];
for(Champions_League_Rule__mdt clRule : clRuleList) {
System.debug('名字:' + clRule.MasterLabel + '\n比賽階段:' + clRule.Stage__c + '\n描述:' + clRule.Description__c);
}
在控制台中會輸出相應的記錄內容。
雖然自定義元數據類型和自定義對象在大多數方面類似,但是自定義元數據類型和其包含的記錄在單元測試中都是可見的,所以在進行單元測試時,也可以直接調用自定義元數據類型及其記錄。
將自定義元數據類型加入軟件包
下一步就是將自定義元數據類型及其數據記錄加入軟件包。
在設置界面下搜索“軟件包”,點擊“軟件包”鏈接,即可進入軟件包的管理界面。
在“軟件包”部分點擊“新建”按鈕,並輸入數據即可新建一個軟件包。在這里新建一個“歐冠聯賽”軟件包。
保存后,進入“歐冠聯賽”軟件包的詳細信息頁面。在“組件”標簽下點擊“添加”,即可進入添加組件的頁面。
在“組件類型”下拉列表中,可以看到剛才建立的自定義元數據類型“歐冠聯賽規則”,選中之后,頁面中會自動出現所有記錄。在這里可以選擇若干或所有記錄。點擊“添加到軟件包”按鈕,即可將此自定義元數據類型和選中的記錄加入到軟件包中。
當成功保存后,回到軟件包的詳細信息頁面,點擊“上載”按鈕,設定軟件包的信息,即可上載軟件包,供其他用戶使用。
當其他用戶安裝了此軟件包,“歐冠聯賽規則”的記錄就可以供其使用了。