Salesforce学习笔记之Actions and Recommendations
设置Actions and Recommendations(Salesforce提供的标准元素),Salesforce上的文档说有两种方法,即Deployment和Process Builder(通过加类型为Create a Record,记录类型为RecordAction的action),其实,本质是对RecordAction的操作。明白了这一点,就完全可以用Flow或者Apex来实现了。
开始用Process Builder设置Actions and Recommendations时,发现一个问题。就是加进去的Flow,有些执行一遍之后,下次更新了记录后,这个Flow又会再次出现在Actions and Recommendations里,甚至有的Flow,没有去执行,下次更新了记录后,在Actions and Recommendations里又加了一条相同的Flow。原因就在于Process Builder无法检测是否已经有这个Flow(也就是说存在相同的RecordAction记录),只会机械地检测Process的触发条件(记录是不是第一次创建还是更新过),以及action的显示条件,如果符合显示条件,就加一条RecordAction记录。
后来写了个Apex方法,传入RecordAction的ActionDefinition列表(因为从Flow中调用,List<String>类型的参数,只能传一条string,所以只能用逗号连上多个string,然后在apex里用split方法得到数组),然后在RecordAction里检查是否存在,再返回不存在的ActionDefinition列表(因为只有不存在的才需要创建)。返回类型设置为List<List<String>>,首先,在Process Builder里调用apex,无法得到返回值,所以只能在Flow中调用,而在Flow中调用,虽然返回类型是List,却只能得到一个值,所以只好再套上一个List,这样就能在Flow那头得到一个collection,可以用Loop组件来循环了。这些其实也可用apex做,但考虑到这样一来,就需要较多的硬编码,所以还是把定义触发条件放在Flow里,只把检查RecordAction是否存在的功能用apex来做。
这样,做了一个Record triggered Flow,先调用上面的apex方法,得到不存在,需要创建的RecordAction列表,然后遍历列表,逐个检查是否满足创建条件,如果满足则建RecordAction记录(这个和Process Builder里基本一样)。这样就避免了重复建RecordAction记录,在Actions and Recommendations里出现重复项的问题。
但还有一个问题,就是无法知道Flow到底有没有执行过。因为在Actions and Recommendations里点开一个Flow并运行完成后,相应的RecordAction就被删除了,无从寻觅。后来发现有个RecordActionHistory对象,如果State域的值为Completed,说明已经执行过。
但是Salesforce的文档说:
The RecordActionHistory object is a big object. For this reason, when you use synchronous SOQL, SOAP, REST, Bulk, or Apex APIs to read this object, queries must follow a specific pattern or they fail.
这似乎意味着使用这个对象要小心,有可能对性能有影响。实际上,在Developer console里用soql查询RecordActionHistory,似乎也明显比其它对象慢。所以每次建RecordAction前,都去查RecordActionHistory,可能不一定可行。
补充:刚发现无法在trigger里通过apex查询RecordActionHistory,但是可以用Flow的Get Records元素来查(但也不是一直行,相当tricky)。
另外在调试时还发现一个问题,在比较传进去的RecordAction的ActionType域的值和一个String类型时,提示出错:
FlowPicklistValue cannot be cast to class java.lang.String
解决办法是用String.valueOf()方法,将这个域的值转成String。这也可算是Salesforce的bug。
Salesforce学习笔记之Actions and Recommendations的更多相关文章
- Salesforce学习笔记之Actions and Recommendations(续)
上次对这个Actions and Recommendations进行了初步研究,因为一些问题没有得到很好的解决,又花了很多时间,终于得到了一个比较好的解决方案.小结一下. 1. 生成Actions a ...
- Caliburn.Micro学习笔记(二)----Actions
Caliburn.Micro学习笔记目录 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions, ...
- Salesforce学习笔记之代码若干
有几段试验性的代码因为公司要更新沙盒,删除了.在本地虽然还保存了副本,但怕以后刷新时误删,所以贴一份在这里,以便需要时拷贝. 1.用aura组件包装一个flow foo.cmp: <aura:c ...
- Salesforce学习笔记之吐槽
迄今感到的几个不方便 1. SOQL里没有SELECT * ,只好根据参考手册和用vs code的一个插件Schema Explorer来辅助生成SELECT语句. 2. SOQL不支持注释,Deve ...
- Salesforce学习笔记(一)
Force平台简介 一.Force平台应用程序的优点1.以数据为中心的应用程序(一个对象就是一个数据库表) 由于该平台以数据库为中心,它让你能够编写以数据为中心的应用程序.以数据为中心的应用程序是基于 ...
- 58、salesforce学习笔记(五)
Set集合 Set<String> set1 = new Set<String>(); set1.add('1'); set1.add('2'); Set<String& ...
- 56、salesforce学习笔记(三)
Date类型 Datetime nowDatetime = Datetime.now(); Datetime datetime1 = Datetime.newInstance(2015,3,1,13, ...
- 54、salesforce学习笔记(一)
Decimal priceDecimal = -4.50; System.debug('小数的绝对值为:'+priceDecimal.abs()); System.debug('priceDecima ...
- Salesforce学习笔记之lwc
1.在Flow中使用Lightning Web Component(lwc)时,发现一个问题.给这个组件设置了一个输入参数,其值取自前一个Screen.第一次运行时,参数的值正确,但是如果这时退回前一 ...
随机推荐
- centos7.5安装gdal编译环境
安装准备的环境: 名称 类型与版本 软件连接 服务器 linux-centos7.5 jdk 1.8.0_25 ant 1.9.14 http://mirror.bit.edu.cn/apac ...
- CMD运行JAVA出现“错误:编码GBK的不可映射字符”
问题: 原因: 字符编码问题.由于java文件中有中文字符,而cmd在编译时解码默认使用GBK,所以导致无法解码出正确的中文字符. 解决办法: 使用-encoding指令指定运行编码为UTF-8.
- Azure Load Balancer(一) 为我们的Web项目提供负载均衡
一,引言 上节,我们讲到使用 Azure Traffic Manager 为我们的 Demo 项目提供负载均衡,以及流量转发的功能.但是Azure 提供类似的功能的服务远远不止这一个,今天我们就来讲一 ...
- nginx location proxy_pass 后面的url 加与不加/的区别
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 首先是l ...
- python beautifulsoup基本用法-文档搜索
以如下html段落为例进行介绍 <html> <head> <title>The Dormouse's story</title> </head& ...
- Numpy random函数
import numpy as np # 生成一个随机数组 np.random.randint(0,6,3) # array([1, 1, 3]) # 生成一个随机数组(二维数组) np.random ...
- PHP uniqid() 函数
实例 生成一个唯一的 ID: <?phpecho uniqid();?>高佣联盟 www.cgewang.com 定义和用法 uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ...
- 笨办法学python 第四版 中文pdf高清版|网盘下载内附提取码
笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用.这本书以习题的方式引导读者一步一步学习编 程,从简单的打印一 ...
- JavaWeb项目的部署以及远程调试
Linux环境下软件的安装 Linux环境下的程序的安装.更新.卸载和查看. rpm 命令:相当于windows程序的添加/卸载程序,进程程序的安装,查看,卸载. 本地程序安装:rpm -ivh 程序 ...
- Linux系统中玩到让你停不下来的命令行游戏!
大家好,我是良许. 在使用 Linux 系统时,命令行不仅可以让我们在工作中提高效率,它还可以在生活上给我们提供各种娱乐活动,因为你可以使用它玩许多非常有意思的游戏,这些游戏可都不需要使用专用显卡. ...