salesforce零基础学习(一百三十三)ListView的button思考

salesforce,listview,button · 浏览次数 : 8

小编点评

**ListView Button的操作** * Mass Quick Action最多创建或修改 100 个记录。 * Flow 可以实现选择数据或不选择数据情况下的多条数据操作。 * Lightning Out 可以实现 ListView 的操作。 **Flow 的操作** * 通过 Screen Flow 或 autolaunched flow,基于隐藏的 ids变量获取选择的数据。 * 通过 Custom Button 调用 Flow 的 URL 执行操作。 **Button 的创建** * Mass Quick Action 和 Flow 可以创建 ListView 或 Related ListView 的按钮。 * Button 的操作基于 pre-defined value 或用户选择。 **优缺点和考虑点** **Mass Quick Action** * 功能强大,可扩展性强。 * UI 不友好。 **Flow** * 可扩展性增强。 * UI 不友好。 **使用 Lightning Out** * 可扩展性强。 * UI 不友好。

正文

本篇参考:

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创建以及使用场景,有错误地方欢迎指出,有不懂欢迎留言。如果大家有其他的更好的方法欢迎留言。

与salesforce零基础学习(一百三十三)ListView的button思考相似的内容:

salesforce零基础学习(一百三十三)ListView的button思考

本篇参考: salesforce零基础学习(九十五)lightning out salesforce零基础学习(一百一十)list button实现的一些有趣事情 https://help.salesforce.com/s/articleView?language=en_US&id=sf.mass_

salesforce零基础学习(一百二十三)Transaction Security 浅入浅出

本篇参考: https://help.salesforce.com/s/articleView?id=sf.enhanced_transaction_security_policy_types.htm&type=5 https://developer.salesforce.com/docs/atla

salesforce零基础学习(一百三十九)Admin篇之Begins/Contains/Starts With 是否区分大小写

本篇参考: https://help.salesforce.com/s/articleView?id=sf.customize_functions_begins.htm&type=5 https://help.salesforce.com/s/articleView?id=sf.flow_ref_o

salesforce零基础学习(一百三十八)零碎知识点小总结(十)

本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_5level_SOQLqueries.htm&release=250&type=5 https://developer.salesforce.com/to

salesforce零基础学习(一百三十七)零碎知识点小总结(九)

本篇参考: https://help.salesforce.com/s/articleView?id=release-notes.rn_lab_conditional_visibiliy_tab.htm&release=250&type=5 https://help.salesforce.com/s

salesforce零基础学习(一百三十二)Flow新功能: Custom Error

本篇参考: https://help.salesforce.com/s/articleView?id=sf.flow_ref_elements_custom_error.htm&type=5 https://developer.salesforce.com/docs/atlas.en-us.apex

salesforce零基础学习(一百三十)Report 学习进阶篇

本篇参考: https://help.salesforce.com/s/articleView?id=sf.reports_summary_functions_about.htm&type=5 https://www.youtube.com/watch?v=bjgZTgYe_84 在Salesfor

salesforce零基础学习(一百三十一)Validation 一次的bypass设计

本篇参考: https://admin.salesforce.com/blog/2022/how-i-solved-it-bypass-validation-rules-in-flows 背景:作为系统的全局考虑,我们在设计validation rule / flow / trigger时,往往会使

salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧

本篇参考: https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-alert-confirm-prompt https://help.salesforce.com/s/a

salesforce零基础学习(一百二十一)Limitation篇之Heap Size Limitation

本篇参考: https://help.salesforce.com/s/articleView?id=000384468&type=1 https://help.salesforce.com/s/articleView?id=000385712&type=1 此前讲过CPU limitation:s