salesforce零基礎學習(一百三十三)ListView的button思考

zero.zhang發表於2023-10-16

本篇參考:

salesforce零基礎學習(九十五)lightning out

salesforce零基礎學習(一百一十)list button實現的一些有趣事情

https://help.salesforce.com/s/articleView?language=en_US&id=sf.mass_quick_actions_considerations.htm&type=5

https://trailhead.salesforce.com/content/learn/modules/autolaunched-scheduled-flows/run-autolaunched-flow-from-custom-button

https://developer.salesforce.com/docs/component-library/bundle/lightning:isUrlAddressable/documentation

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建立以及使用場景,有錯誤地方歡迎指出,有不懂歡迎留言。如果大家有其他的更好的方法歡迎留言。

相關文章