使用Salesforce构建解决方案是一项比较简单的任务,但是稍有不慎,你的解决方案也有可能会在系统中发生意外的技术债务。这可能会减慢组织运行的速度,更糟糕的是,可能会因为超出限制而发生致命错误。
在保存记录时,它会经历一个特定的事件序列,即Salesforce执行顺序。
声明式、低代码和代码解决方案都融入了执行顺序,并影响系统运行方式。无论是管理员、开发人员还是架构师,都应该清楚解决方案如何影响现有组织标准功能、受管软件包和现有自定义项并与之交互。
以下是保存记录时在服务器上发生的步骤。
2 从请求中加载新的记录字段值并覆盖旧值。
如果请求来自标准UI编辑页面,Salesforce会运行系统验证以检查记录:
符合特定于布局的规则
布局级别和字段定义级别的必需值
有效的字段格式
最大字段长度
当请求来自其他来源时,例如Apex应用程序或SOAP API调用,Salesforce仅验证外键。在执行Trigger之前,它会验证任何自定义外键都没有引用对象本身。
如果创建了多行项目(例如报价行项目和商机行项目),Salesforce会运行自定义验证规则。
执行配置为在保存记录之前运行的Record-Triggered Flows。
在Trigger之前执行所有操作。
再次运行大多数系统验证步骤,例如验证所有必填字段是否具有非空值并运行任何自定义验证规则。Salesforce不会再次运行的唯一系统验证(当请求来自标准UI编辑页面时)是执行特定于布局的规则。
执行重复规则。如果重复规则将记录标识为重复并阻止操作,则不会保存记录并且不会采取进一步的步骤(例如在Trigger和Workflow Rules之后)。
将记录保存到数据库中,但暂时不要提交。
执行所有After-Triggers。
执行分配规则。
执行自动回复规则。
执行工作流规则。如果有工作流字段更新:
再次更新记录。
再次运行系统验证。自定义验证规则、流程、重复规则、流程和升级规则不会再次运行。
在更新Triggers之前和更新Triggers之后执行,不管记录操作(插入还是更新),多执行一次。
执行升级规则。
执行以下Salesforce Flow自动化:
Processes
Flows launched by processes
Flows launched by workflow rules
当Process或Flow执行DML操作时,受影响的记录会通过保存过程
执行配置为在保存记录后运行的Record-Triggered Flows。
执行权利规则。
如果记录包含Roll-up Summary字段或者是跨对象工作流的一部分,则执行计算并更新父记录中的Roll-up Summary字段。父记录经过保存过程。
执行基于标准的共享评估。
将所有DML操作提交到数据库。
在将更改提交到数据库后,执行post-commit逻辑被执行。提交后逻辑的示例(无特定顺序)包括:
发送电子邮件
Enqueued asynchronous Apex作业
Record-Triggered Flows中的异步路径
在最近的版本中,Salesforce中执行顺序的最大变化是引入了Flow。以下是Spring '22 Release中宣布的重要注意事项和更改。
系统验证检查必填字段中的值、字段类型、长度验证等。
如果记录在UI中更新,系统验证包括编辑/只读字段的页面布局特定设置。
为所有记录保存评估所有活动的验证规则。
自定义验证规则和dup规则只运行一次。
根据自定义代码逻辑进一步更新记录。
分配规则根据与记录匹配的第一条规则更新记录所有者。
分配规则在创建时运行,或者如果它们通过Apex调用以在记录更新时重新运行。
自动响应规则在创建记录时运行,并根据与记录匹配的第一条规则准备要发送的电子邮件。
如果每个对象有多个Triggers,设置它们触发的顺序。
为所有记录保存评估所有活动Workflow Rules。
Approvals被视为Workflow。
对于Workflow Rules,字段更新在所有其他操作之前执行。
所有活动的Process Builders都会针对所有记录保存进行评估。
对于导致重新评估的所有字段更新,所有未运行一次的 WFR/AP/PB最多重新评估5次。
每个Workflow Rules和Process Builders字段更新记录都会导致系统验证、Before Triggers和After Triggers为每个周期运行。
与Trigger一样,对于WFR/AP/PB,无法设置它们的运行顺序。
Before Save Flows在系统验证后立即运行。
每个实体,每个事务只执行一次Flow。
只有具有匹配条目标准的流程才会运行以保存记录。
为同一对象设置运行顺序。
相同类型的Flow按照Flow中指定的顺序运行:
首先运行按1-1000排序的Flow
然后无序Flow
然后运行1001-2000排序的Flow
API 54对Flow的更改:
基于时间的字段更新是一个单独的事务并且仅运行Flow。
在权利规则之前运行,以便权利可以包括安全后流程进行的记录更新。
路由和分配工作时,Trigger、Workflow Rules、审批流程和升级规则不会运行。
再次编辑并保存记录后,将运行标准操作。
此外,以下这些关键要点可以最大限度地提高解决方案和系统的成功率:
执行顺序会影响UI上或通过API保存的每条记录。
根据组件的API,顺序可能会有所不同。
随时了解每个版本以查看所做的任何更改。
与你的整个Salesforce团队共享此信息,包括 BA、管理员、开发人员、测试人员和架构师
添加老师微信可直接沟通求职或 Salesforce入门学习:微信号:18917632715(手机同号)