今天,因爲一個Bug 小喵查了一下salesforce的執行流程,下面就分享給大家!
當我們保存與插入,更新,或更新插入語句的記錄,Salesforce的可以依次執行以下事件。
注:Salesforce在服務器上執行這些事件之前,瀏覽器運行JavaScript驗證是否有記錄包含任何依賴列表字段。驗證每個依賴列表字段限制了它的可用值。無其他驗證發生在客戶端。
執行順序 :
1. 從數據庫加載原始記錄或初始化一個用於更新插入(upsert)語句的記錄。
2. 從請求加載新記錄的字段值並覆蓋舊的值。
如果請求來自一個標準的UI(user interface)編輯頁面,Salesforce會運行系統驗證去檢查記錄是否符合以下規則:
•符合佈局的具體規則
•在佈局水平和字段定義級別是否是必須入力的值
•有效字段格式
•最大字段長度
注意:當這個請求來自其他資源的時候(比如來自Apex application 或者 SOAP API 調用的時候.),salesforce並沒有在此步驟中執行系統驗證
3. 執行所有的before 觸發器。
4. 再次運行大部分的系統驗證步驟,如驗證所有必填字段沒有一個非空值,並運行所有用戶自定義的驗證規則。
5. 保存記錄到數據庫中,但不提交事務(commit)。
6. 執行所有的after 觸發器。
7. 執行分配規則(assignment rules)。
8. 執行自動響應規則(auto-response rules)。
9. 執行工作流程規則。
10. 如果有工作流將一些字段更新了,再更新該記錄。
11. 如果記錄在工作流更新字段值得時候被更新了,再一次(僅僅再一次)觸發before update和after updata觸發器,同時還有標準的驗證規則也會被執行(自定義的驗證規則不會被執行)。
12. 如果有工作流流程觸發器(workflow flow triggers),執行流(flow)。
13. 執行升級規則。
14. 如果記錄包含一個捲起的彙總字段,或者是一個跨對象工作流程的一部分,執行計算並更新父記錄捲起彙總字段。父記錄經過保存的程序。
15. 如果父記錄被更新,和祖父母記錄包含一個捲起的彙總字段,或者是一個跨對象工作流程的一部分,執行計算並更新父記錄捲起彙總字段。祖父母記錄經過保存的程序。
16. 執行基於共享的評價標準。
17. 要求所有DML操作到數據庫。
18. 執行post-commit的邏輯,如發送電子郵件。
轉自 >>
爲了方便小夥伴們理解,再附上一個口訣 :
- 頁面後臺兩不同,
- 佈局規則最優先,
- 格式長度和必填。
- Before Trigger觸發前,
- 後臺只將外鍵檢。
- 批量插入有例外,
- 驗證規則提前驗。
- Before之後做驗證,
- 自定規則和必填,
- 系統規則不二遍。
- 驗證之後跑去重,
- 存入DB不提交。
- After Trigger觸發後,
- 分配/回覆/工作流,
- 如果字段有更新,
- 驗證/去重不再做,
- Trigger僅再跑一次。
- PB/Flow依次跑,
- 數據操作從頭走,
- Case規則在隨後。
- 父表彙總此時算,
- 工作流把父表更,
- 共享規則重計算。
- 數據DB提交後,
- 後續郵件才發送。
今天,小喵就 拿來即用 的給大家分享一下了
你 Get 到了嗎?
(^_^)~喵~!!