如果我们无法在salesforce中触发后更新值,工作流如何更新字段值

时间:2016-07-08 11:24:57

标签: salesforce salesforce-communities

我有一个问题......如果我们无法在触发后(例如插入后)更新记录的任何字段值( trigger.new 的一部分),那么工作流程如何(评估标准:创建记录)可以修改字段值吗?

3 个答案:

答案 0 :(得分:1)

如果记录是 trigger.new 的一部分,并且如果我们尝试在触发后修改/更新记录,则会在锁定时抛出异常。

在触发后成功执行记录解锁,并且在首次执行After Triggers 后执行工作流规则; 工作流字段更新可以修改记录,因为记录上没有锁定。

希望,它会清除你的怀疑! :)

答案 1 :(得分:0)

使用insert,update或upsert语句保存记录时,Salesforce会按顺序执行以下事件:

  1. 从数据库加载原始记录或初始化upsert语句的记录。
  2. 从请求中加载新记录字段值并覆盖旧值。如果请求来自标准UI编辑页面,Salesforce将运行系统验证以检查记录:
    • 遵守特定于布局的规则
    • 布局级别和字段定义级别的必需值
    • 有效字段格式
    • 最大字段长度
  3. 当请求来自其他来源(例如Apex应用程序或SOAP API调用)时,Salesforce仅验证外键。在执行触发器之前,Salesforce会验证任何自定义外键是否都不引用该对象本身。

    如果创建了多行项目,Salesforce会运行用户定义的验证规则,例如报价订单项和商机订单项。

    1. 执行所有触发前的操作。
    2. 再次运行大多数系统验证步骤,例如验证所有必填字段都具有非空值,并运行任何用户定义的验证规则。 Salesforce第二次运行的唯一系统验证(当请求来自标准UI编辑页面时)是特定于布局规则的强制执行。
    3. 执行重复规则。如果重复规则将记录标识为重​​复并使用阻止操作,则不会保存记录,也不会执行其他步骤,例如在触发器和工作流规则之后。
    4. 将记录保存到数据库,但尚未提交。
    5. 执行所有后触发器。
    6. 执行分配规则。
    7. 执行自动回复规则。
    8. 执行工作流程规则。
    9. 如果有工作流程字段更新,请再次更新记录。
    10. 如果使用工作流字段更新更新记录,则除了标准验证之外,更新触发前和更新后触发还会再触发一次(并且仅再触发一次)。自定义验证规则,重复规则和升级规则不会再次运行。
    11. 执行流程。
    12. 如果有工作流程触发器,则执行流程。

      Process Builder取代了以前在试点计划中提供的流程触发工作流程操作。使用流触发工作流操作的组织可以继续创建和编辑它们,但新组织无法使用流触发工作流操作。

      1. 执行升级规则。
      2. 执行权利规则。
      3. 如果记录包含汇总汇总字段或是跨对象工作流的一部分,则执行计算并更新父记录中的汇总汇总字段。父记录通过保存程序。
      4. 如果更新了父记录,并且祖父母记录包含汇总汇总字段或是跨对象工作流的一部分,则执行计算并更新祖父表记录中的汇总汇总字段。祖父母记录通过保存程序。
      5. 执行基于标准的共享评估。
      6. 将所有DML操作提交给数据库。
      7. 执行提交后的逻辑,例如发送电子邮件。
      8. 有关详细信息,请参阅Salesforce documentation

答案 2 :(得分:0)

工作流字段更新实际上会导致在插入操作完成后发生新的更新操作。

因此,在这种情况下执行的顺序是这样的:

  • 插入触发器之前
  • 插入触发器后
  • 工作流程字段更新
  • 更新触发器之前
  • 更新触发后