您位於此處:
設計流程的最佳作法
在您使用「流程產生器」設計程序前,請先瞭解最佳作法。
必要版本
| 提供版本:Salesforce Classic (並非所有組織皆適用) 和 Lightning Experience |
| 提供版本:Essentials、Professional、Enterprise、Performance、Unlimited 及 Developer Edition |
在 2025 年 12 月 31 日之後,現有程序會繼續執行,且您可以啟用、停用和編輯程序,但我們建議使用 Flow Builder。若要移轉現有程序,請規劃您的 切換至 Flow Builder 並使用 移轉至流程 工具。針對新的自動化,請在 Flow Builder 中建立流程。
在測試環境中建立。
為了測試程序是否能正常運作,您必須啟用程序。請在 Sandbox 環境中建立程序,讓您在不影響生產資料的情況下找出問題。
對每個物件使用一個自動化工具。
如果物件有一個程序、一個 Apex 觸發程序及三個工作流程規則,您無法可靠地預估記錄變更的結果。
每個物件只有一個記錄變更程序。
每次建立或更新記錄時,系統會評估其物件所有的記錄變更程序。建議將您的組織限制為每個物件只有一個記錄變更程序。以下是原因。
- 取得物件的組織自動化合併檢視
透過一個合併的物件記錄變更程序,您會看見每一次物件記錄更新時會評估的所有條件,並看見當符合條件時會執行的所有動作。
- 避免達到限制
當您將一個物件的多個程序合併到一個主要程序時,您也會合併這些程序中的動作。動作愈少,組織達到限制 (如 SOQL 查詢數) 的可能性愈低。
- 決定作業順序
如果您為物件建立多個記錄變更程序,Salesforce 無法保證評估這些流程的順序。當您將單一程序中的所有一切自動化時,您可明確地設定順序。第一個評估的是第一個準則條件節點,第二個評估的是第二個準則條件節點,依此類推。
以下的一些功能可讓您輕鬆地達成一個主要程序。
- ISNEW()—某些自動化只會套用到建立的記錄。剩餘的則會套用到已建立與已編輯的記錄。究竟要如何將所有的記錄合併到一個程序中?就是符合以下的公式函數,此函數會偵測正在評估的記錄是否為最近建立:
ISNEW().若要將「僅建立」自動化作業新增至當建立或編輯記錄時啟動的程序,請將相關準則條件的條件轉換為公式,然後將 &&ISNEW() 新增至您的公式。
- 可叫用流程—正如同程序會呼叫流程,程序也會呼叫其他程序。可叫用程序是一種模組化程序,只有在另一個程序告知啟動時才會啟動。
例如,您的「帳戶」流程中有數個準則條件節點,每個節點都會評估一些條件,包括帳戶是否為高值的條件。若準則條件節點沒有其共同擁有的高值條件,則將這些節點移至「首頁帳戶」可叫用程序。然後設定「帳戶」程序會在帳戶為高值的條件成立時,叫用「首要帳戶」程序。
盡可能將動作合併。
程序執行的動作愈多,您的組織就愈可能達到限制,例如 DML 陳述式的數目或 CPU 用量總數。當單一動作可以做到時,請避免建立多個動作。
例如,程序會更新帳戶的地址。此時應建立一個動作來更新所有的地址欄位,而非建立不同的動作來更新各個欄位。
建立可重複使用的動作。
有些程序動作一律可重複使用,像是:電子郵件警示、快速動作、程序、流程及 Apex。但要如何在多個準則條件群組或多個程序中使用其他類型的動作?
- 若要重複使用「建立記錄」動作或「更新記錄」動作,請建立快速動作。快速動作可用於程序、流程及記錄頁面上。
- 若要重複使用其他程序動作,請在可叫用程序中設定動作。在相關的準則條件群組中,新增「程序」動作以呼叫可叫用程序。可叫用程序只能用於程序中。
請留意會覆寫先前變更的動作。
避免讓多個動作群組更新同一個欄位,若有此狀況時請小心。
避免產生無限迴圈。
例如,程序 1 中的「更新記錄」動作觸發程序 2,而程序 2 中的「建立記錄」動作又觸發程序 1,則迴圈可能會導致您的組織超出限制。
請確定立即動作不會取消排程的動作。
當相關聯的準則條件不再成立時,便會取消待處理的已排程動作。請確定程序中較晚的立即動作不會無意中取消待處理的已排程動作。
盡可能地多次測試程序的排列。
對於 Salesforce 中的所有自訂而言,測試您的工作是很重要的。將程序部署至生產環境之前,請務必以您所能想到的可能性,盡可能的多次測試程序。
若要在變更 Salesforce 資料之後存取外部資料,請使用排程動作。
如果 Salesforce 在您的組織中建立、更新或刪除資料,然後在相同交易中存取外部資料,則會發生錯誤。在您的程序中,我們建議使用個別的交易來存取外部系統中的資料。若要這麼做,請透過新增排程動作來結束先前的交易。針對記錄變更程序,請勿使用以欄位為基礎的排程。
例如,事件程序在其從自訂平台事件 (訂單狀態) 接收平台事件訊息時開始。若訂單狀態為新建,則程序會建立一個連絡人,並排程動作以更新外部系統中的訂單狀態。事件程序不會失敗,因為排程動作會建立個別的交易來存取外部系統。
