说一下项目中常见的甲方的需求。背景如下:Order在SF端生成以后,在status为completed以后,需要点击按钮同步到SAP或者其他的MDM,客户希望的是,如果 order的状态为 completed以后,才展示custom action / button,点击以后同步,如果状态为draft场景,则不展示。

我们的solution通常是告诉客户,action/ button 配置在page layout以后,无法进行移除,我们在点击按钮以后,可以先判断状态,如果状态不为completed以后,就给客户报一个错误,告诉客户当前状态不允许同步。尽管需求可以实现,但是总归不是客户最想要的。

当然,和上一篇博客的 dynamic form 相似,salesforce同样也针对此种类似的需求推出了 dynamic action。以后这种类似的需求就可以通过 dynamic action 快速高效的解决了。

一. Dynamic Action

Dynamic Action和dynamic form相同,启用以及配置的入口都是在 lightning app builder中,所以如果你的项目是classic的,肯定是用不了的。和 dynamic form的一点不同是,标准 object也是支持 dynamic action。 只需要在 highlights panel 点击以后,在右侧upgrade 即可。

salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

点击 Upgrade Now按钮以后,可以有两种模式供选择,一种是从0开始配置action,另外一种是基于一个 page layout进行选择。 

salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

 下图demo中是根据一个page layout进行配置。salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

 我们可以看到基于一个page layout配置的情况下,默认这个page layout的所有的action会自动带出来,如果选择另外一种,则此处为空内容。

salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

 我们想要设置action的显隐只需要选中这个action,然后在 Set Action Visibility设置Filter即可。

 demo中我们设置 MyGuide这个action在当前 user的profile是 system administrator情况下展示。 

salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

效果展示

我们以一个非admin账户登录,查看一个opportunity,发现这个quick action 并看不到 

 我们以一个管理员登录,发现是可以看到的。salesforce零基础学习(一百零七)Dynamic Action-LMLPHP

 总结: dynamic action 可以尽最大限度的做一些显隐设置,当然,现在还达不到 当前user基于对当前记录的CRUD权限来控制。目前用的比较多的可能是基于当前记录的字段的值来控制,当然,我们也可以使用 user / permission来控制,至于可以选择哪些字段来设置逻辑,可以自行尝试。篇中有错误地方欢迎指出,有不懂欢迎留言。

09-15 09:07