本篇參考:
salesforce零基礎學習(九十五)lightning out
salesforce零基礎學習(一百一十)list button實現的一些有趣事情
Salesforce雖然功能很強大,但是需要吐槽的就是ListView建立custom button操作。本篇整理一下目前可以進行ListView以及Related ListView的Button的操作。
一. Mass Quick Action
1. 介紹
透過Mass Quick Action,使用者可以從ListView或者 Related ListView最多一次建立或者修改100條記錄。為了瞭解客戶修改了哪些資訊,salesforce會在儲存以前提供一個window彈出用來展示需要更新的欄位資訊。
需要注意的是: 只有 Create A Record 以及 Update a Record這兩種Action Type支援Mass Quick Action.
2. Demo
1) 需求是Account列表有Mass Edit按鈕,點選可以批次修改Account的Active以及Rating欄位值。 從下方gif中我們可以看到,此種型別必須要求同一種Record Type,否則無法使用。
2)我們將Demo中的Mass Quick Action進行修改,設定一下Predefined Value,我們發現儘管這兩個欄位在UI上預設展示,但是提示沒有欄位變更,所以更新以後我們發現資料沒有什麼變化。這個設計是很不討巧的並且很容易讓人有疑惑。
3. 優缺點和考慮點
優點:
- 和主流的UI相符合,Popup當頁彈出;
- 可配置,實施方便。
缺點:
- 只能用於單一的Record Type;
- 只支援 Create Record以及Update Record,如果需求很複雜,無法透過此種方式實施。
考慮點:
- 此種方式必須最低選擇一條記錄,即使是建立記錄的情況,也需要選擇,編輯場景OK,建立的場景容易有歧義;
- 針對UI上的欄位的Predefined Value不好使並且有歧義,針對有預設值情況,可能需要使用者自己選擇;
- 沒有較多的可擴充套件性。
二. Flow
1. 介紹
透過Screen Flow或者 autolaunched flow,基於官方的隱藏的ids變數可以獲取到選擇到的資料進行操作。Flow可以實現選擇資料或者不選擇資料情況下的多條資料操作。比如批次建立某個表的資料,或者選擇某些資料進行相關操作。透過Custom Button呼叫Flow的URL便可以執行Flow,透過retUrl引數可以設定Flow執行完成後的連結。
2. Demo
我們還是以上個場景的需求進行舉例,透過flow方式來實現。因為需要進行UI操作,我們可以選擇Screen Flow,當然如果直接設定預設值不需要有UI的話,我們可以選擇 autolaunched flow。這裡我們只介紹Screen Flow的場景, autolaunched感興趣的小夥伴自行嘗試。
1) 建立Flow: 我們透過下方gif可以檢視設計思路。 先建立一個Screen接收兩個選擇的內容。之後對選擇的id資料進行迭代,迭代的每個item中設定Account資訊並且將AccountList新增Account,最後一步進行AccountList的更新操作即可。
這裡需要注意一點: 引數ids大小寫敏感,一定要寫成ids並且設定為multiple value即collection。
2)基於Flow的URL配置custom button,這裡我們可以看一下官方提供的trailhead進行更好地理解。
3. 優缺點和考慮點
優點:
- 可擴充套件性增強
- 基於配置,快速實現
- 跨record type資料可以一起操作
缺點:
- UI不夠友好:透過上方的gif,我們可以看到UI上不是popup,而是跳轉到一個新的頁面進行操作,而且還需要動態考慮跳轉以及報錯的情況,必要的時候需要aura進行一些處理保證更加友好,比如toast以及navigation等。
考慮點:
- 沒有選擇資料情況下如何更好的提示使用者
- 資料失敗或者資料成功情況下,官方沒有提供action來進行使用者友好操作,如果想要特別靈活,需要使用一定的開發內容。
三. 透過Lightning Out來實現
1. 介紹
我們可以透過visualforce page來獲取到ids資訊並且list button支援apex page相關配置,如果我們還想透過lwc/aura元件來構建UI情況下, 我們可以考慮lightning out。
2. Demo
參考上方以前的文章內容,有具體的demo實現。
3. 優缺點和考慮點
優點:
- 可擴充套件性強
- 跨Record Type資料可以一起操作
缺點:
- UI不夠友好:透過上方的gif,我們可以看到UI上不是popup,而是跳轉到一個新的頁面進行操作。
- 部分功能不支援lightning out,需要增加測試成本。
考慮點:
- 目前是beta版本,尚未GA。
四. 透過Lightning Aura來實現(部分功能)
1. 介紹
如果我們沒有獲取選中Id的需求,只是批次資料建立的場景,可以使用Aura來實現。Aura實現 isURLAddressable介面。然後透過URL方式進行訪問,從而實現操作方式。
2. Demo
我們想批次建立Lead資料,基於指定的命名規則來操作然後批次儲存。部分程式碼實現如下:
MassCreateLead.cmp
<aura:component implements="lightning:isUrlAddressable"> demo used, please add component to finish this </aura:component>
放在列表以及效果如下:
3. 優缺點和考慮點
優點:
- 可擴充套件性強
- 跨Record Type資料可以一起操作
缺點:
- UI不夠友好:透過上方的gif,我們可以看到UI上不是popup,而是跳轉到一個新的頁面進行操作。
- 無法獲取到選擇資料的Id,僅用於建立資料場景。
- 不支援Experience Cloud
總結:篇中總結關於ListView的Button建立以及使用場景,有錯誤地方歡迎指出,有不懂歡迎留言。如果大家有其他的更好的方法歡迎留言。