一文厘清Salesforce执行顺序

使用Salesforce构建解决方案是一项比较简单的任务,但是稍有不慎,你的解决方案也有可能会在系统中发生意外的技术债务。这可能会减慢组织运行的速度,更糟糕的是,可能会因为超出限制而发生致命错误。

在保存记录时,它会经历一个特定的事件序列,即Salesforce执行顺序。

Salesforce执行顺序

声明式、低代码和代码解决方案都融入了执行顺序,并影响系统运行方式。无论是管理员、开发人员还是架构师,都应该清楚解决方案如何影响现有组织标准功能、受管软件包和现有自定义项并与之交互。
在这里插入图片描述

Developer Docs API v54的执行顺序

以下是保存记录时在服务器上发生的步骤。

  1. 从数据库加载原始记录或为upsert语句初始化记录。

2 从请求中加载新的记录字段值并覆盖旧值。

如果请求来自标准UI编辑页面,Salesforce会运行系统验证以检查记录:

符合特定于布局的规则

布局级别和字段定义级别的必需值

有效的字段格式

最大字段长度

当请求来自其他来源时,例如Apex应用程序或SOAP API调用,Salesforce仅验证外键。在执行Trigger之前,它会验证任何自定义外键都没有引用对象本身。

如果创建了多行项目(例如报价行项目和商机行项目),Salesforce会运行自定义验证规则。

  1. 执行配置为在保存记录之前运行的Record-Triggered Flows。

  2. 在Trigger之前执行所有操作。

  3. 再次运行大多数系统验证步骤,例如验证所有必填字段是否具有非空值并运行任何自定义验证规则。Salesforce不会再次运行的唯一系统验证(当请求来自标准UI编辑页面时)是执行特定于布局的规则。

  4. 执行重复规则。如果重复规则将记录标识为重复并阻止操作,则不会保存记录并且不会采取进一步的步骤(例如在Trigger和Workflow Rules之后)。

  5. 将记录保存到数据库中,但暂时不要提交。

  6. 执行所有After-Triggers。

  7. 执行分配规则。

  8. 执行自动回复规则。

  9. 执行工作流规则。如果有工作流字段更新:

再次更新记录。

再次运行系统验证。自定义验证规则、流程、重复规则、流程和升级规则不会再次运行。

在更新Triggers之前和更新Triggers之后执行,不管记录操作(插入还是更新),多执行一次。

  1. 执行升级规则。

  2. 执行以下Salesforce Flow自动化

Processes

Flows launched by processes

Flows launched by workflow rules

当Process或Flow执行DML操作时,受影响的记录会通过保存过程

  1. 执行配置为在保存记录后运行的Record-Triggered Flows。

  2. 执行权利规则。

  3. 如果记录包含Roll-up Summary字段或者是跨对象工作流的一部分,则执行计算并更新父记录中的Roll-up Summary字段。父记录经过保存过程。

  4. 执行基于标准的共享评估。

  5. 将所有DML操作提交到数据库。

  6. 在将更改提交到数据库后,执行post-commit逻辑被执行。提交后逻辑的示例(无特定顺序)包括:

发送电子邮件

Enqueued asynchronous Apex作业

Record-Triggered Flows中的异步路径

Flow行为的重要考虑和变化

在最近的版本中,Salesforce中执行顺序的最大变化是引入了Flow。以下是Spring '22 Release中宣布的重要注意事项和更改

Validation

系统验证检查必填字段中的值、字段类型、长度验证等。

如果记录在UI中更新,系统验证包括编辑/只读字段的页面布局特定设置。

为所有记录保存评估所有活动的验证规则。

自定义验证规则和dup规则只运行一次。

After Triggers、Assignment、Auto-Response Rules Execute

  1. 根据自定义代码逻辑进一步更新记录。

  2. 分配规则根据与记录匹配的第一条规则更新记录所有者。

  3. 分配规则在创建时运行,或者如果它们通过Apex调用以在记录更新时重新运行。

  4. 自动响应规则在创建记录时运行,并根据与记录匹配的第一条规则准备要发送的电子邮件。

  5. 如果每个对象有多个Triggers,设置它们触发的顺序。

Workflow Rules、Approval Processes、Process Builders Run

为所有记录保存评估所有活动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、After Save Flows

Before Save Flows在系统验证后立即运行。

每个实体,每个事务只执行一次Flow。

只有具有匹配条目标准的流程才会运行以保存记录。

为同一对象设置运行顺序。

相同类型的Flow按照Flow中指定的顺序运行:

首先运行按1-1000排序的Flow

然后无序Flow

然后运行1001-2000排序的Flow

API 54对Flow的更改:

基于时间的字段更新是一个单独的事务并且仅运行Flow。

在权利规则之前运行,以便权利可以包括安全后流程进行的记录更新。

Omni Routing

路由和分配工作时,Trigger、Workflow Rules、审批流程和升级规则不会运行。

再次编辑并保存记录后,将运行标准操作。

此外,以下这些关键要点可以最大限度地提高解决方案和系统的成功率:

执行顺序会影响UI上或通过API保存的每条记录。

根据组件的API,顺序可能会有所不同。

随时了解每个版本以查看所做的任何更改。

与你的整个Salesforce团队共享此信息,包括 BA、管理员、开发人员、测试人员和架构师

关于Salesforce个人求职、考证、考试优惠券、进学习群

添加老师微信可直接沟通求职或 Salesforce入门学习:微信号:18917632715(手机同号)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值