本篇参考:https://trailblazer.salesforce.com/ideaview?id=08730000000BroxAAC

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

我们在项目中可能会有类似的需求: 甲方爸爸在看了某个表的数据详情页以后说, 这个页面整体符合需求了,但是我们业务上希望的是,当页面中的某个状态为某些值情况下展示某个或者某些section或者展示某些字段,不满足的情况下,section展示或者相关字段展示也没有用,因为业务不看。你们实施团队能不能实现这种的啊?

此时作为开发人员可能只有两条路:

1. 告诉甲方爸爸,这个是salesforce的标准的 page layout,标准功能实现不了这种需求,要么就不做这个需求了吧,也不影响使用;
2. 告诉甲方爸爸,啊,这种需求必须能做,只是需要开发,但是我们可以搞定。

作为开发来说,我们肯定是想往1来推,标准的page layout保证了稳定性以及高可配,方便后续的维护,如果遇见很tough的客户,我们就只能进行了自定制之路。当然,以后如果有类似的需求以后,我们可能就可以通过配置的方式搞定,使用的就是我们今天的主角: Dynamic Form

一. Dynamic Form
我们知道 salesforce 一直致力于 no code / less code的宗旨, 同样的,针对类似的需求,salesforce推出了 dynamic form去最大化的适配动态表单的需求。

有几点优势:

  1. 和 page layout 进行了分离,在 lightning app build的record page进行配置,section / field 想放在哪里放哪里,不像原来只能按照 page layout展示而展示;
  2. 可以通过 visibility rule 去 设置 field / section的展示与隐藏的逻辑;

有几点需要注意:

1. dynamic form 目前只支持自定义的 object,标准 object暂时不支持,期待后续的release可以不断的进行拓展;
2. dynamic form 影响的不只是用户所看见的详情页面,当用户进行编辑或者新建/克隆等操作时,同样会遵循 visibility rule。

二. Dynamic Form的使用

1. Dynamic Form只允许在 Lightning App builder中进行使用,当我们找到一个 lightning record page(new/ edit),选择 record detail组件,右侧会展示 Upgrade Now的按钮

2. 通过下图就可以看出来 dynamic form的三大核心功能。

3. dynamic form不会改变 page layout

4. dynamic form有三个维度: accordion / section / field。我们按照需求可以进行不同维度的配置,不同的维度可以进行不同的配置,可看图中描述。

5.  field级别除了可以设置显隐以外,还可以设置UI的行为

6. 这里我们做一个简单的demo, is draft为true, goods price隐藏,这里我们针对 goods price设置 field visibility,点击 Advanced 按钮,我们可以看到 设置除了记录字段级别以外,还可以根据 user / permission维度来控制

7. 我们进行了一个 Field Visibility简单配置,点击done即完成了一个配置

结果演示:

1. is draft为false, goodsprice正常展示

2. is draft为true,goodsprice动态的隐藏。

 三. 现在项目是否应该用 Dynamic Form

尽管dynamic form很强大,但是我们不是项目中有类似需求就直接上来,如果不对其进行认真的评估,很容易后期出差错,累死自己和团队。所以在是否应该使用之前,我们需要先了解几点:

1. 目前只针对自定义表使用,标准的表不支持,如果客户对UI要求严格,可能达到整体功能不统一;

2. dynamic form拥有很多的 limitation,这些都是在文档中有介绍的,比如不支持 blank space,一个section一个列最多100个字段等等,我们在使用以前一定需要先了解limitation是否影响到了我们的红线;

3. dynamic form经历了去年的beta到今年的正式发布,还是有很多的known issue,官方也列出来了。在使用以前一定先看一下 known issue是否会影响到我们的使用。

总结:dynamic form作为一个高可配的动态表单,相信后续的升级完善以后,对于管理员来说会越来越得到使用,对于开发来说也是一个很好的功能。针对开发来说,使用以前了解好限制,找好workaround方案。 篇中只是简单的描述了一下 dynamic form的使用,实际上会更加强大,感兴趣的小伙伴可以自己来玩了。篇中有错误欢迎指出,有不懂欢迎留言。

salesforce零基础学习(一百零六)Dynamic Form的更多相关文章

  1. salesforce零基础学习(九十六)Platform Event浅谈

    本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...

  2. salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...

  3. salesforce 零基础学习(十六)Validation Rules & Date/time

    上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...

  4. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  5. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

  6. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  7. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

    注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...

  8. salesforce lightning零基础学习(十五) 公用组件之 获取表字段的Picklist(多语言)

    此篇参考:salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type) 我们在lightning中在前台会经常碰到获取pi ...

  9. Salesforce 集成篇零基础学习(一)Connected App

    本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...

  10. salesforce零基础学习(一百一十三)Trigger中获取IP地址的过程

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.228.0.apexcode.meta/apexcode/apex_class_Auth ...

随机推荐

  1. LVM磁盘配额

    目录 一.LVM概述 1.1.逻辑卷管理 1.2.LVM机制的基本概念 二.LVM管理命令 三.磁盘配额概述 3.1.实现磁盘配额的条件 3.2.Linux磁盘限额的特点 3.3.常用命令及选项 3. ...

  2. linux命令打基础

    目录 一.shell概述 二.linux命令分类 三.linux命令行 3.1 格式 3.2 编辑Linux命令行 四.Linux基础命令 4.1 pwd:查看当前的工作目录 4.2 cd:切换工作目 ...

  3. etcd raft 处理流程图系列2-wal的读写

    本文仅介绍wal的基本处理,如create.open.close.read等操作.鉴于篇幅原因,下面介绍replayWAL(启动raft节点时执行)函数涉及的读文件操作:从wal目录中加载snapsh ...

  4. 攻防世界misc——János-the-Ripper

    攻防世界misc---János-the-Ripper 附件题目,题目的文件名为:misc100. 下载后,拖入linux中,binwalk发现有隐藏文件.用"strings  János- ...

  5. 控制流程之if判断与while、for循环

    一.if判断 1.什么是if判断? 接收用户输入的名字 接受用户输入的密码 如果用户输入的名字=正确的名字 并且 用户输入的密码=正确的密码 告诉用户登录成功 否则, 告诉用户登录失败 2.为何要有i ...

  6. 关于协议栈XDATA,内存溢出的小结

    [第二部分的内容仅供参考,自己不是十分确定] ************************************************************** ************** ...

  7. HashMap底层实现-基础

    1.数据结构 1.7 数组+链表,键值对是以Entry内部类的数组存放的.键计算得到哈希值是该数组的下标.又称桶数组当存在哈希冲突时,会通过Entry类内部的成员变量 Entry<k,v> ...

  8. SQL injection:Summary ,Overview and Classification

    What is SQL injection (SQLi)? SQL注入是一种web安全漏洞,让攻击者干扰应用程序对其数据库的查询. 它通常使得攻击者查看他们通常无法检索的数据. 这可能包括属于其他用户 ...

  9. 初探 Python Flask+Jinja2 SSTI

    初探 Python Flask+Jinja2 SSTI 文章首发安全客:https://www.anquanke.com/post/id/226900 SSTI简介 SSTI主要是因为某些语言的框架中 ...

  10. Pikachu-RCE模块

    一.概述 1.1 RCE漏洞 可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 1.2 远程系统命令执行一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令 ...