背景:不瞭解個人人若是隻看過個人博客,會覺得我是一個發亮稀少,或者表情嚴肅的程序狗。可是其實和我作過項目的基本都知道,我是一個年紀輕輕騷話不斷的小逗比。以此爲背景,前幾天同事問我說岳奇,我有一段代碼是公用的邏輯,可是想在trigger和batch都共用到,兩個邏輯差很少,區別就是那麼一小點點。怎樣才能判斷當前這個方法運行的上下文是在trigger裏面仍是batch裏面啊。此時的我就和他說:哦個人上帝,先必應,在谷歌,找不到解決方案再找我,我就能夠和你很自信的說這個實現不了了,搞定~~~固然,玩笑歸玩笑,本着朋友的信任,基本上朋友問的問題我都知無不言,因此我說,以我幹salesforce 開發5年的經驗來看,這個確實好像實現不了,只能告訴你若是想知道是否batch運行能夠System.isBatchable()。我對apex的概念仍是有點落後的,以前apex develop guide沒事確實也掃過一遍,當時掃的時候仍是V36.0,如今都已經看不到了。安全
這幾天對象出差,在家呆着刷劇也無聊,尋思很久沒有看最新release的開發文檔了,掃一掃哪些好用的新功能,混個臉熟。結果我發現前幾天的回覆是多麼的無知,特此寫下此篇,告誡本身不要太自負,溫故而知新,說之前先多查查,多肯定。ide
一. Quiddity學習
Quiddity是salesforce winter21新加的枚舉類,apex若是使用,api version須要50及以上。咱們經過上面的鏈接能夠看到這個枚舉類中包含的枚舉元素。元素不少,找幾個單獨說一下:ui
還有不少其餘的枚舉元素用於不一樣的場景,感興趣的自行查看,那麼如何在apex中獲取當前的枚舉呢,更簡單了。只須要經過 Request獲取當前的請求,而後調getQuiddity便可。具體以下:this
//Get info about the current request Request reqInfo = Request.getCurrent(); //Get the identifier for this request, which is universally unique //Same as requestId in splunk or REQUEST_ID in event monitoring String currentRequestId = reqInfo.getRequestId(); //Enum representing how Apex is running. e.g. BULK_API vs LIGHTNING Quiddity currentType = reqInfo.getQuiddity(); //Use this with a switch statement, //instead of checking System.isFuture() || System.isQueueable() || ...
經過上面的博客連接,咱們能夠對這個功能作更好的拓展,作一個功能閥,保證咱們的代碼只在部分場景運行。可擴展性不少,你們能夠基於自身的業務去進行使用。下面截圖是上述類似代碼trigger上下文的apex class的執行結果。spa
總結:本篇原本還想介紹一下Security的stripInaccessible方法實現sf針對數據訪問權限的安全化策略,後來過了一遍新的文檔,發現仍是有好多更新的內容沒有查看,做罷了越更越多的特性點,仍是推薦我的能夠本身養成自我學習的習慣。篇中有錯誤歡迎指出,有不懂歡迎留言。自信是好東西,前提是有支撐着你自信的能力,我此次很慚愧。技術不斷的更新變化,擁抱變化,不斷努力。共勉。3d