您位於此處:
使用 Apex 除錯記錄疑難排解流程
使用除錯記錄,在您執行中的程序結束之後尋找關於程序的詳細資訊。例如,請在記錄符合程序的條件時,調查程序沒有觸發的原因,或者探索執行程序的順序。
必要版本
| 提供版本:Salesforce Classic (並非所有組織皆適用) 和 Lightning Experience |
| 提供版本:Essentials、Professional、Enterprise、Performance、Unlimited 及 Developer Edition |
在 2025 年 12 月 31 日之後,現有程序會繼續執行,且您可以啟用、停用和編輯程序,但我們建議使用 Flow Builder。若要移轉現有程序,請規劃您的 切換至 Flow Builder 並使用 移轉至流程 工具。針對新的自動化,請在 Flow Builder 中建立流程。
請確定您的篩選條件包含「工作流程」種類中的 FINER 事件。如需詳細資訊,請參閱除錯記錄層級。
使用除錯記錄疑難排解程序時,請考慮下列考量事項。
- 流程產生器中建立的流程在除錯記錄中會顯示為流程和工作流程規則。產生的名稱和程序名稱具有一些相似之處,但是不會一對一互相對應。
- 記錄變更流程會顯示為「工作流程」類型的流程。可叫用流程會顯示為「InvocableProcess」類型的流程。事件流程會顯示為「CustomEvent」類型的流程。
- 區塊中執行的立即動作會在流程中串連起來。如果中間一個動作失敗,後面的動作將不會執行。
- 排程動作會在
FLOW_WAIT元素之後執行。程序恢復之後,已排程動作會以類似於立即動作的方式執行。 WF_CRITERIA_BEGIN和WF_CRITERIA_END是指一律設定為 true 的工作流程規則條件,而非您程序中定義的條件。- 以下是流程產生器中的元素與流程除錯事件對應的方式。
流程產生器元素 流程除錯事件 條件 FLOW_RULE_...建立記錄 FLOW_ELEMENT_...更新記錄 FLOW_ELEMENT_...張貼至 Chatter FLOW_ACTIONCALL_...提交待批准 FLOW_ACTIONCALL_...電子郵件警示 FLOW_ACTIONCALL_...流程 FLOW_ACTIONCALL_...程序 FLOW_ACTIONCALL_...Apex FLOW_ACTIONCALL_...排程 FLOW_WAIT_...
此範例涵蓋使用立即「張貼至 Chatter」動作的流程。
以下是您可以透過此第一個程式碼片段得知的內容。
- 名為「Madison Rigby」的商機會觸發程序。
- 流程的名稱為
Hello_World。附加至名稱的編號是程序版本的識別碼:301R000000009n0. - 程序設定為在建立記錄 (
ON_CREATE_ONLY) 時觸發。
10:11:26.594 (595241802)|EXECUTION_STARTED
10:11:26.594 (595255829)|CODE_UNIT_STARTED|[EXTERNAL]|Workflow:Lead
10:11:26.594 (685753138)|WF_RULE_EVAL_BEGIN|Workflow
10:11:26.594 (686312384)|WF_CRITERIA_BEGIN|
[Lead: Ms. Madison Rigsby 00QR0000001HqC4]|Hello_World301R000000009n0|
01QR00000000Nz8|ON_CREATE_ONLY|0
在此程式碼片段中,程序會比較記錄目前的值與變更前所擁有的值。myVariable_current 包含所有記錄的目前欄位值。myVariable_old 包含記錄變更前的所有欄位值。在此範例中,myVariable_old沒有值 (Null),因為程序正在評估新建立的商機。
10:11:26.594 (688919502)|WF_FORMULA|
Formula:ENCODED:[treatNullAsNull]true|Values:
10:11:26.594 (689128428)|WF_CRITERIA_END|
true
10:11:26.594 (695758445)|WF_SPOOL_ACTION_BEGIN|
Workflow
10:11:26.594 (714823342)|WF_ACTION|
Flow Trigger: 1;
10:11:26.594 (714900811)|WF_RULE_EVAL_END
10:11:26.594 (719777561)|WF_FLOW_ACTION_BEGIN|
09LR000000005Td10:11:26.594 (720281142)|WF_FLOW_ACTION_DETAIL|
09LR000000005Td|[Lead: Ms. Madison Rigsby 00QR0000001HqC4]|Id=09LR000000005Td|
CurrentRule:Hello_World301R000000009n0 (Id=01QR00000000Nz8)
10:11:26.722 (722465931)|FLOW_CREATE_INTERVIEW_BEGIN|
00DR00000000o82|300R00000004PQB|301R000000009n0
10:11:26.722 (740702983)|FLOW_CREATE_INTERVIEW_END|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|Hello World
10:11:26.594 (748183550)|WF_FLOW_ACTION_DETAIL|
Param Name: myVariable_current,
Param Value: ENCODED:{![treatNullAsNull]{!ID:this}},
Evaluated Param Value: {Entity type: Lead, id: 00QR0000001HqC4MAK}|
Param Name: myVariable_old,
Param Value: {!old},
Evaluated Param Value: null
當程序啟動時:
- 此程序的例項會從
FLOW_START_INTERVIEW_BEGIN事件開始。 - 每個
FLOW_START_INTERVIEW_LIMIT_USAGE事件都會在程序啟動時顯示指定限制的使用量。在此範例中,交易尚未完成任何會計入上限的動作。 - 一些變數已設定好。程序稍後會使用這些變數來執行邏輯。
myVariable_old設為無,因為此交易之前並不存在記錄。myVariable_current設定為商機記錄的目前值。myVariable_waitStartTimeVariable設定為目前時間。
10:11:26.750 (750700361)|FLOW_START_INTERVIEWS_BEGIN|1
10:11:26.750 (751285739)|FLOW_START_INTERVIEW_BEGIN|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
Hello World
10:11:26.750 (751341782)|FLOW_START_INTERVIEW_LIMIT_USAGE|
SOQL queries: 0 out of 100
10:11:26.750 (751367432)|FLOW_START_INTERVIEW_LIMIT_USAGE|
SOQL query rows: 0 out of 50000
10:11:26.750 (751384035)|FLOW_START_INTERVIEW_LIMIT_USAGE|
SOSL queries: 0 out of 20
10:11:26.750 (751397896)|FLOW_START_INTERVIEW_LIMIT_USAGE|
DML statements: 0 out of 150
10:11:26.750 (751412225)|FLOW_START_INTERVIEW_LIMIT_USAGE|
DML rows: 0 out of 10000
10:11:26.750 (751427529)|FLOW_START_INTERVIEW_LIMIT_USAGE|
CPU time in ms: 0 out of 15000
10:11:26.750 (751472968)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Heap size in bytes: 0 out of 6000000
10:11:26.750 (751490226)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Callouts: 0 out of 100
10:11:26.750 (751505266)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Email invocations: 0 out of 10
10:11:26.750 (751519128)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Future calls: 0 out of 50
10:11:26.750 (751533892)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Jobs in queue: 0 out of 50
10:11:26.750 (751547542)|FLOW_START_INTERVIEW_LIMIT_USAGE|
Push notifications: 0 out of 10
10:11:26.750 (752380627)|FLOW_VALUE_ASSIGNMENT|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
myVariable_old|
10:11:26.750 (754872639)|FLOW_VALUE_ASSIGNMENT|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
myVariable_current|
{LastModifiedDate=2018-02-28 18:11:26, Company=Acme Wireless, Email=null,
HasOptedOutOfFax=false, Latitude=null, MobilePhone=null, Industry=Apparel,
CreatedById=005R0000000J01RIAS, Street=null, PhotoUrl=null,
ConvertedOpportunityId=null, MasterRecordId=null,
LastModifiedByID=005R0000000J01RIAS, Status=Contacted, IsDeleted=false,
ConvertedAccountId=null, IsConverted=false, HasOptedOutOfEmail=false,
LastViewedDate=null, City=null, Longitude=null, LeadSource=External Referral,
CreatedByID=005R0000000J01RIAS, GeocodeAccuracy=null, State=null,
CreatedDate=2018-02-28 18:11:26, Country=null, Id=00QR0000001HqC4MAK,
LastName=Rigsby, AnnualRevenue=500000.0, Jigsaw=null, EmailBouncedDate=null,
Description=null, ConvertedDate=null, DoNotCall=false, Rating=null,
PostalCode=null, Website=null, LastReferencedDate=null, NumberOfEmployees=5,
Salutation=Ms., ConvertedContactId=null, OwnerId=005R0000000J01RIAS,
Phone=null, EmailBouncedReason=null, FirstName=Madison, IsUnreadByOwner=true,
Title=null, SystemModstamp=2018-02-28 18:11:26, LastActivityDate=null,
Fax=null, LastModifiedById=005R0000000J01RIAS,
LastTransferDate=2018-02-28 18:11:26, JigsawContactId=null}
10:11:26.750 (755116990)|FLOW_ELEMENT_BEGIN|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
FlowAssignment|myVariable_waitStartTimeAssignment
10:11:26.750 (755457410)|FLOW_ASSIGNMENT_DETAIL|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
myVariable_waitStartTimeVariable|ASSIGN|2/28/2018, 10:11 AM
10:11:26.750 (756105710)|FLOW_VALUE_ASSIGNMENT|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|myVariable_waitStartTimeVariable|2018-02-28T18:11:27Z
10:11:26.750 (756182849)|FLOW_ELEMENT_END|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
FlowAssignment|myVariable_waitStartTimeAssignment
程序會評估第一個條件。
在除錯記錄中,FLOW_RULE_DETAIL 事件代表程序條件節點。myRule_1 會對應至程序中的第一個條件節點。由於 myRule_1 的結果為 true,因此程序會執行與第一個條件相關聯的動作。
10:11:26.750 (757306870)|FLOW_ELEMENT_BEGIN|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
FlowDecision|myDecision
10:11:26.750 (757582110)|FLOW_RULE_DETAIL|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
myRule_1|true
10:11:26.750 (757616076)|FLOW_VALUE_ASSIGNMENT|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
myRule_1|true
10:11:26.750 (757683580)|FLOW_ELEMENT_END|
2416dcc6212273331b3d50a38a161dd464e3e-7fdd|
FlowDecision|myDecision
在此程式碼片段中,會執行第一個條件的立即動作。在名稱 myRule_1_A1 中,「A1」表示此元素與動作群組中的第一個動作對應,這會建立工作。FLOW_BULK_ELEMENT_LIMIT_USAGE 事件表示動作將交易的使用計數增加到兩個限制:發出的 DML 陳述式的數量及已處理的 DML 列數。
10:11:26.750 (1898050716)|FLOW_ELEMENT_BEGIN|
68211d9d9f918ee32db47d21247161de215ce5-7d38|
FlowRecordCreate|myRule_1_A1
10:11:26.750 (1898121764)|FLOW_ELEMENT_DEFERRED|
FlowRecordCreate|myRule_1_A1
10:11:26.750 (1898261705)|FLOW_ELEMENT_END|
68211d9d9f918ee32db47d21247161de215ce5-7d38|
FlowRecordCreate|myRule_1_A1
10:11:26.750 (1345712687)|FLOW_START_INTERVIEW_END|
68211d9d9f918ee32db47d21247161de215ce5-7d38|Hello World
10:11:26.750 (1898350543)|FLOW_BULK_ELEMENT_BEGIN|
FlowRecordCreate|myRule_1_A1
10:11:26.750 (1928183118)|FLOW_BULK_ELEMENT_DETAIL|
FlowRecordCreate|myRule_1_A1|1
10:11:26.750 (2267557291)|FLOW_VALUE_ASSIGNMENT|
68211d9d9f918ee32db47d21247161de215ce5-7d38|
myRule_1_A1|true
10:11:26.750 (2267878414)|FLOW_BULK_ELEMENT_LIMIT_USAGE|
1 DML statements, total 1 out of 150
10:11:26.750 (2267929106)|FLOW_BULK_ELEMENT_LIMIT_USAGE|
1 DML rows, total 1 out of 10000
10:11:26.750 (2268002776)|FLOW_BULK_ELEMENT_END|
FlowRecordCreate|myRule_1_A1|1|370
接著程序會完成。
10:11:27.977 (1978733709)|FLOW_START_INTERVIEWS_END|1
10:11:27.989 (1989764561)|WF_FLOW_ACTION_END|09LR000000005Td
10:11:27.989 (1998560773)|WF_ACTIONS_END| Flow Trigger: 1;
10:11:27.989 (1998600044)|CODE_UNIT_FINISHED|Workflow:Lead
10:11:27.989 (2000437095)|EXECUTION_FINISHED
除錯已排程動作
排程動作會與立即動作分開記錄。排程的時間到了之後,自動化程序會執行已排程動作。但是,動作仍會依照使用者原本促使程序執行的方式執行。記錄使用國際標準時間 (UTC) 而非使用者的時區。
此範例會使用排程的「建立記錄」動作,為您逐步解說程序的除錯記錄。
任何以 FLOW_WAIT_ 開始的事件都會提供關於流程排程的資訊。myWait_myRule_int 一律表示排程,其中 int 會識別與排程相關聯的條件節點。
在此程式碼片段中:
- 系統會評估與第一個條件節點 (
myWait_myRule_1) 相關聯的排程。 - 第一個排程的定義時間已過 (
myWaitEvent_myWait_myRule_1_event_0)。 FLOW_WAIT_RESUMING_DETAIL表示訪問已恢復,以便程序可以執行其排程的動作。myVariable_current變數會更新為來自原先啟動程序之記錄的最新值。
10:21:35.461 (1461109547)|FLOW_BULK_ELEMENT_BEGIN|
WaitInfo|myWait_myRule_1
10:21:35.461 (1467206801)|FLOW_WAIT_EVENT_RESUMING_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWait_myRule_1|myWaitEvent_myWait_myRule_1_event_0|DateRefAlarmEvent
10:21:35.461 (1467428864)|FLOW_WAIT_RESUMING_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWait_myRule_1|0FoRM0000004C9I
10:21:35.461 (1503485017)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWaitEvent_myWait_myRule_1_event_0|true10:21:35.461 (1509382975)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myVariable_current|{Id=00QRM000003abIU2AY, IsDeleted=false,
MasterRecordId=null, Salutation=null, FirstName=Another, LastName=Lead,
Title=null, Company=Acme, Street=null, City=null, State=null, PostalCode=null,
Country=null, Latitude=null, Longitude=null, GeocodeAccuracy=null, Phone=null,
MobilePhone=null, Fax=null, Email=null, Website=null, PhotoUrl=null,
Description=null, LeadSource=Advertisement, Status=New, Industry=null,
Rating=null, AnnualRevenue=null, NumberOfEmployees=null, InternalSource=null,
OwnerId=005RM000001cEmFYAU, HasOptedOutOfEmail=false, IsConverted=false,
ConvertedDate=null, ConvertedAccountId=null, ConvertedContactId=null,
ConvertedOpportunityId=null, IsUnreadByOwner=false,
CreatedDate=2018-03-01 18:12:05, CreatedById=005RM000001cEmFYAU,
LastModifiedDate=2018-03-01 18:12:05, LastModifiedById=005RM000001cEmFYAU,
SystemModstamp=2018-03-01 18:12:05, LastActivityDate=null, DoNotCall=false,
CreatedByID=005RM000001cEmFYAU, LastModifiedByID=005RM000001cEmFYAU,
CampaignId=null, CampaignMemberStatus=null, HasOptedOutOfFax=false,
LastViewedDate=null, LastReferencedDate=null,
LastTransferDate=2018-03-01 18:12:05, Jigsaw=null, JigsawContactId=null,
ConnectionReceivedDate=null, ConnectionSentDate=null, EmailBouncedReason=null,
EmailBouncedDate=null}
10:21:35.461 (1512457819)|FLOW_BULK_ELEMENT_END|
WaitInfo|myWait_myRule_1|0|47
在此程式碼片段中,程序會確認記錄的日期欄位非為 null。具體來說,程序會檢查排程中參照的日期欄位。
10:21:35.461 (1514489368)|FLOW_ELEMENT_BEGIN|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowDecision|myPostWaitDecision_myWaitEvent_myWait_myRule_1_event_0
10:21:35.461 (1528928534)|FLOW_RULE_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myPostWaitRule_myWaitEvent_myWait_myRule_1_event_0|true
10:21:35.461 (1529027007)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myPostWaitRule_myWaitEvent_myWait_myRule_1_event_0|true
10:21:35.461 (1529230456)|FLOW_ELEMENT_END|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowDecision|myPostWaitDecision_myWaitEvent_myWait_myRule_1_event_0
現在執行與排程相關聯的動作。第一個為 ..._myRule_1_event_0_SA1。
myRule_1會對應至第一個條件節點event_0會對應至與條件相關聯的第一個排程SA1會對應至排程中的第一個動作。
動作會建立記錄。透過 FLOW_BULK_ELEMENT_LIMIT_USAGE 事件,我們看到動作將交易的使用計數增加到兩個限制:發出的 DML 陳述式的數量及已處理的 DML 列數。
10:21:35.461 (1529433132)|FLOW_ELEMENT_BEGIN|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1
10:21:35.461 (1529526210)|FLOW_ELEMENT_DEFERRED|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1
10:21:35.461 (1529619300)|FLOW_ELEMENT_END|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1
10:21:35.461 (1534801023)|FLOW_BULK_ELEMENT_BEGIN|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1
10:21:35.461 (1681358347)|FLOW_BULK_ELEMENT_DETAIL|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1|1
10:21:35.461 (1963485392)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWaitEvent_myWait_myRule_1_event_0_SA1|true
10:21:35.461 (1973349443)|FLOW_BULK_ELEMENT_LIMIT_USAGE|
1 DML statements, total 1 out of 150
10:21:35.461 (1973886332)|FLOW_BULK_ELEMENT_LIMIT_USAGE|
1 DML rows, total 1 out of 10000
10:21:35.461 (1974083134)|FLOW_BULK_ELEMENT_END|
FlowRecordCreate|myWaitEvent_myWait_myRule_1_event_0_SA1|1|429
此程式碼片段會顯示一些流程產生器為您執行的內部邏輯。此程序會使用變數來註明已針對此排程執行動作,避免程序意外重複動作。
10:21:41.527 (7529131090)|FLOW_ELEMENT_BEGIN|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowAssignment|myWaitEvent_myWait_myRule_1_event_0_postWaitExecutionAssignment
10:21:41.527 (7529875281)|FLOW_ASSIGNMENT_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWaitEvent_myWait_myRule_1_event_0_postActionExecutionVariable|ASSIGN|true
10:21:41.527 (7529943822)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWaitEvent_myWait_myRule_1_event_0_postActionExecutionVariable|true
10:21:41.527 (7530040052)|FLOW_ELEMENT_END|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
FlowAssignment|myWaitEvent_myWait_myRule_1_event_0_postWaitExecutionAssignment
程序接著會評估是否執行其他排程。請注意,..._event_0 的條件不再符合。由於先前的程式碼片段指派了變數,因此程序不會重新執行與該排程相關聯的動作。
僅有ㄧ個排程存在,因此程序完成。
10:21:41.527 (7530094566)|FLOW_ELEMENT_BEGIN|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
WaitInfo|myWait_myRule_1
10:21:41.527 (7530148328)|FLOW_ELEMENT_DEFERRED|
WaitInfo|myWait_myRule_1
10:21:41.527 (7530225216)|FLOW_ELEMENT_END|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
WaitInfo|myWait_myRule_1
10:21:41.527 (7530291079)|FLOW_BULK_ELEMENT_BEGIN|
WaitInfo|myWait_myRule_1
10:21:41.527 (7530832531)|FLOW_WAIT_EVENT_WAITING_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWait_myRule_1|myWaitEvent_myWait_myRule_1_event_0|DateRefAlarmEvent|false
10:21:41.527 (7530895796)|FLOW_WAIT_WAITING_DETAIL|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWait_myRule_1|0|
10:21:41.527 (7530968776)|FLOW_VALUE_ASSIGNMENT|
2ef1ba5afce469a1e74b7b869161e25400a2-7f29|
myWaitEvent_myWait_myRule_1_event_0|false
10:21:41.527 (7531068544)|FLOW_BULK_ELEMENT_END|
WaitInfo|myWait_myRule_1|0|1
