如果你想将Salesforce Flow技能提升到一个新水平,必须要了解Flow中重要的概念和常见的限制。
Flow中的重要概念
01
为什么会有限制?
Salesforce是一个多租户环境,这意味着多个组织共享同一个实例的资源。为确保每个组织不会占用过多容量,Salesforce已强制执行这些限制来管理每个客户的使用情况。
02
Flow Interviews和Transactions是什么?
Interviews是Flow的运行实例,是Flow的一次完整运行。另一方面,Transactions是作为一个单元执行的一组操作。Flow Interviews是除Triggers、Escalation Rules等之外的一种操作类型。这意味着Flow Interviews始终在Transactions内部运行。
但是,多个Flow Interviews可以在同一个Transactions中运行,一个Flow Interviews也可以在多个Transactions中运行。重要的是,Flow Interviews不是Transactions,并且适用不同的限制。
03
SOQL和DML是什么?
SOQL和DML是两种处理不同操作的语言。SOQL用于检索数据,DML用于修改数据。在Flow中,只有数据元素会调用这些操作,获取记录使用SOQL,创建/更新/删除记录使用DML。
Flow中常见的限制
01
每个Flow Interviews的限制
每个Flow在运行时执行的元素:2000
对于每个Flow Interviews,最多只能执行2000个元素。如果有一个循环,循环中的元素(包括loop元素)将乘以迭代次数。例如,如果有100条记录进入一个个包含2个元素的循环,则总元素将为200。
02
每个Transactions的限制
发出的SOQL查询总数:100
最多只能使用100个数据元素来检索数据。
发出的DML语句总数:150
最多只能使用150个修改数据的数据元素。如果这些元素在循环中,它们也会成倍增加。
SOQL查询检索到的记录总数:50000
最多只能检索50000条记录。
由于DML语句而处理的记录总数:10000
最多只能修改10000条记录。
Salesforce服务器上的最大CPU时间:10000毫秒
CPU时间是服务器用于处理解决方案的时间量。最大值为10000毫秒(10秒)。
一批允许的重复更新总数:12
同一记录最多只能更新12次。
如何避免超出限制?
首先也是最重要的,必须确保以最有效的方式构建Flow。但是,如果在遵循所有最佳实践之后,Flow仍然超出限制怎么办?
限制是针对每个Flow Interviews或Transactions的,因此,可以尝试生成多个Flow Interviews或Transactions。
01
如何构建高效的Flow
通过遵循以下这些做法,你甚至可能不会遇到超出限制的问题:
避免过度使用数据元素。
尽量不要在循环中使用数据元素。
尽可能地跳过循环。
制定严格的准入标准。
利用变量和赋值元素来更新记录。
02
生成更多的Flow Interviews
在处理大量数据时,通常会先达到元素限制,然后再达到记录数限制。为防止这种情况,可以使用Record-Triggered和Schedule-Triggered Flow的批量化功能。
批量化是一个复杂的主题,构建Record-Triggered和Schedule-Triggered Flow,就好像它是触发对象的一个记录。然后,Salesforce将尽可能批量处理记录。
03
生成更多Transactions
即使避免了Flow Interviews限制,仍然有可能达到Transactions限制。为避免这种情况,可以尝试生成多个Transactions。
屏幕元素、预定路径和暂停操作都会暂停Flow Interviews。然后,Flow Interviews的其余部分将在新Transactions中运行。这是一个很好的小技巧,但请注意,一旦Transactions完成,就无法回滚操作,因为它们已经被提交了。