本篇参考: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. 题解 P6688 可重集

    己所欲者,杀而夺之,亦同天赐 解题思路 一定不要用自动溢出的 Hash!!!!!!! 我真的是调吐了... 思路非常简单明了 : 需要我们创新一下 Hash. 首先我们的 Hash 要满足无序性.. ...

  2. C++ //继承同名静态成员处理方式

    1 //继承同名静态成员处理方式 2 #include <iostream> 3 #include <string> 4 using namespace std; 5 6 cl ...

  3. Android开发音视频方向学习路线及资源分享,学完还怕什么互联网寒冬?

    接触Android音视频这一块已经有一段时间了,跟普通的应用层开发相比,的确更花费精力.期间为了学习音视频的录制,编码,处理也看过大大小小的几十个项目.总体感觉就是知识比较零散,对刚入门的朋友比较不友 ...

  4. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  5. STM32—位带操作

    STM32中的位带操作: 名字为位带操作,实际上是对位的操作,位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见. 51 单片机中通过关键字 sbit 来实现位定义, STM32 ...

  6. one_gadget的一些姿势

    概要 one_gadget是libc中存在的一些执行execve("/bin/sh", NULL, NULL)的片段,当可以泄露libc地址,并且可以知道libc版本的时候,可以使 ...

  7. 在java程序中使用protobuf

    目录 简介 为什么使用protobuf 定义.proto文件 编译协议文件 详解生成的文件 Builders 和 Messages 序列化和反序列化 协议扩展 总结 简介 Protocol Buffe ...

  8. CTF-flask模板注入学习

    今天又看到了一道这样的题,之前一直都学不明白的东西 反反复复给你看的时候,就想搞明白了. 我们做题的,需要知道flask是怎么运行的就行了. 这个就是一个最简单的flask应用,当我们访问的时候,就会 ...

  9. IOC概念和原理:BeanFactory 接口与ApplicationContext

    IOC(概念和原理)1.什么是 IOC(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理(2)使用 IOC 目的:为了耦合度降低(3)做入门案例就是 IOC 实现2.IOC ...

  10. noip模拟14

    T1 离散化后线段树维护\(dp\),\(fi\)表示最小值为\(i\)时最多点亮多少个, 区间操作即可. Code #include<cstring> #include<cstdi ...