天天看點

salesforce零基礎學習(一百一十一)custom metadata type資料擷取方式更新

本篇參考:

https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_system_custom_metadata_types.htm

https://trailhead.salesforce.com/en/content/learn/modules/platform-developer-i-certification-maintenance-winter-22/learn-whats-new-for-platform-developers-22

我們都知道salesforce裡面 custom setting的使用方法,不了解的小夥伴可以開啟時空門:salesforce 零基礎學習(四十)Custom Settings簡單使用

custom setting好用是好用,但是了解起來可以了解成特殊的表,資料還是要維護的,是以針對不同的sandbox或者生産環境,可能會有一些 manual action來維護資料或者初期的導入。是以針對 list類型的 custom setting,官方更建議使用 custom metadata type來維護。我們可以通過metadata的方式來部署這些内容,這樣可以盡最大的可能去減少因為遺漏導緻的資料不完整進而導緻業務處理有問題的情況。

salesforce零基礎學習(一百一十一)custom metadata type資料擷取方式更新
那我們之前在使用 custom metadata type特别煩人的地方是,我們需要通過搜尋資料的方式來擷取資料,使用方式很類似我們object的query。比如下面的demo

System.debug(LoggingLevel.INFO, '*** Limits.getQueryRows(): ' + Limits.getQueryRows());
Country_Code__mdt countryCode = [
  SELECT Id, MasterLabel, Country_Code__c
  FROM Country_Code__mdt
  WHERE MasterLabel = 'Canada'
  LIMIT 1
];
System.debug(LoggingLevel.INFO, '***after Limits.getQueryRows(): ' + Limits.getQueryRows());      

使用這種方式是需要消耗SOQL的查詢數量的,是以我們在實際使用時,偶爾還是會考慮取舍,使用 list custom setting而不是 custom metadat type。

salesforce零基礎學習(一百一十一)custom metadata type資料擷取方式更新

 針對新的release出來以後,custom metadata同樣也支援了類似 custom setting的查詢方式,這種既不計算了SOQL的查詢數,也使得結果擷取更快。方法提供了getInstance以及 getAll,demo中我們使用getInstance()方法,感興趣的小夥伴可以檢視一下上面連結的其他的方法。

System.debug(LoggingLevel.INFO, '*** Limits.getQueryRows(): ' + Limits.getQueryRows());
// Country_Code__mdt countryCode = [
//   SELECT Id, MasterLabel, Country_Code__c
//   FROM Country_Code__mdt
//   WHERE MasterLabel = 'Canada'
//   LIMIT 1
// ];
Country_Code__mdt countryCode = Country_Code__mdt.getInstance('Canada');
System.debug(LoggingLevel.INFO, '***after Limits.getQueryRows(): ' + Limits.getQueryRows());      

使用getInstance方法以後的執行結果

salesforce零基礎學習(一百一十一)custom metadata type資料擷取方式更新

注意點:目前的這個getInstance方法是基于spring21的更新,對應的API version為API 51,是以如果apex中如果使用此功能,一定要記得version設定為51及以上,否則會報錯。

總結:篇中簡單的介紹了一下 custom metadata type的新取法,對于代碼中深受 limitation所頭疼的小夥伴可以考慮去進行性能調優了。當然,salesforce每一期的release都驚喜不斷,大家也要多關注關注 release note哦,有用的内容找機會可以慢慢的更新一下用法。篇中有錯誤地方歡迎指出,有不懂歡迎留言。

作者:zero

部落格位址:http://www.cnblogs.com/zero-zyq/

本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接

個人下載下傳了一些相關學習的PDF檔案,如果需要下載下傳請通路百度雲 點選此處通路 密碼:jhuy

如果文章的内容對你有幫助,歡迎點贊~

為友善手機端檢視部落格,現正在将部落格遷移至微信公衆号:Salesforce零基礎學習,歡迎各位關注。