Risoluzione dei problemi dei processi con i registri debug Apex
I registri debug consentono di visualizzare informazioni dettagliate sui processi al termine dell'esecuzione. Ad esempio, analizzare il motivo per cui un processo non viene attivato quando un record soddisfa i criteri del processo oppure esplorare la sequenza dei processi in esecuzione:
Versioni (Edition) richieste
| Disponibile in: Salesforce Classic (non in tutte le organizzazioni) e Lightning Experience |
| Disponibile in: Essentials Edition, Professional Edition, Enterprise Edition, Performance Edition, Unlimited Edition e Developer Edition |
Dopo il 31 dicembre 2025, i processi esistenti continuano a essere eseguiti ed è possibile attivarli, disattivarli e modificarli; tuttavia, si consiglia di utilizzare Flow Builder. Per migrare i processi esistenti, pianificare il passaggio a Flow Builder e utilizzare lo strumento Migrazione al flusso. Per le nuove automazioni, creare flussi in Flow Builder.
Assicurarsi che i filtri includano eventi FINER nella categoria WORKFLOW. Per informazioni, vedere Livelli del registro debug.
Quando di utilizzano i registri debug per la risoluzione dei problemi di un processo, tenere presente quanto segue.
- Nei registri debug, i processi creati in Process Builder vengono visualizzati come flussi e regole di flusso di lavoro. I nomi generati sono simili ai nomi dei processi, ma non corrispondono perfettamente.
- I processi di modifica dei record sono visualizzati come flussi di tipo Flusso di lavoro. I processi invocabili sono visualizzati come flussi di tipo Processo invocabile. I processi degli eventi sono visualizzati come flussi di tipo CustomEvent.
- Le azioni immediate che vengono eseguite in un blocco sono legate nel flusso. Se un'azione non riesce, le azioni che seguono non possono essere eseguite.
- Le azioni pianificate vengono eseguite dopo un elemento
FLOW_WAIT. Le azioni vengono eseguite allo stesso modo delle azioni immediate dopo la ripresa del processo. WF_CRITERIA_BEGINeWF_CRITERIA_ENDsi riferiscono ai criteri delle regole di flusso di lavoro sempre impostati su true e non ai criteri definiti nel processo.- Di seguito è descritta la corrispondenza tra gli elementi di Process Builder e gli eventi di debug del flusso.
Elemento di Process Builder Evento di debug del flusso Criteri FLOW_RULE_...Crea un record FLOW_ELEMENT_...Aggiorna record FLOW_ELEMENT_...Pubblica in Chatter FLOW_ACTIONCALL_...Invia per l'approvazione FLOW_ACTIONCALL_...Avvisi tramite email FLOW_ACTIONCALL_...Flussi FLOW_ACTIONCALL_...Processi FLOW_ACTIONCALL_...Apex FLOW_ACTIONCALL_...Pianificazione FLOW_WAIT_...
Nell'esempio è descritto un processo con un'azione Pubblica in Chatter immediata.
Dal primo snippet sono evidenti i seguenti elementi.
- Il processo viene attivato da un lead denominato "Federica Bianchi".
- Il nome del processo è
Hello_World. Il numero aggiunto al nome del processo è l'ID della versione del processo:301R000000009n0. - Il processo viene impostato per l'attivazione quando viene creato un record (
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
In questo snippet, il processo confronta i valori correnti del record con i valori che aveva prima della modifica. myVariable_current contiene tutti i valori dei campi correnti del record. myVariable_old contiene tutti i valori dei campi del record immediatamente prima della modifica. In questo esempio,myVariable_old non ha valori (nullo), perché il processo valuta un lead appena creato.
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
Quando il processo è stato avviato:
- Questa istanza del processo inizia con l'evento
FLOW_START_INTERVIEW_BEGIN. - Ogni evento
FLOW_START_INTERVIEW_LIMIT_USAGEvisualizza l'utilizzo di un determinato limite all'avvio del processo. In questo esempio, la transazione non ha eseguito alcuna operazione calcolata nel conteggio di un limite. - Viene impostato un numero limitato di variabili. Il processo utilizza queste variabili per eseguire la logica in un secondo momento.
myVariable_oldnon è impostato su nulla perché il record non esisteva prima di questa transazione.myVariable_currentviene impostato sui valori correnti del record lead.myVariable_waitStartTimeVariableè impostato sull'ora corrente.
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
Il processo valuta i primi criteri.
Nei registri debug, un evento FLOW_RULE_DETAIL rappresenta un nodo di criteri del processo. myRule_1 corrisponde al primo nodo di criteri del processo. Poiché il risultato di myRule_1 è true, il processo esegue le azioni associate ai primi criteri.
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
In questo snippet vengono eseguite le azioni immediate per i primi criteri. Nel nome myRule_1_A1, "A1" indica che questo elemento corrisponde alla prima azione del gruppo di azioni, che crea un'operazione. Gli eventi di FLOW_BULK_ELEMENT_LIMIT_USAGE indicano che l'azione ha aumentato il conteggio dell'utilizzo della transazione rispetto a due limiti: il numero di istruzioni DML emesse e il numero di righe DML elaborate.
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
Quindi, il processo viene completato.
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
Debug delle azioni pianificate
Le azioni pianificate vengono registrate separatamente dalle azioni immediate. Dopo l'ora pianificata, un processo automatizzato esegue le azioni pianificate. Le azioni vengono tuttavia eseguite come l'utente che ha in origine causato l'esecuzione del processo. Il registro utilizza il fuso orario UTC anziché il fuso dell'utente.
L'esempio fornisce istruzioni dettagliate su un registro debug di un processo con un'azione Crea un record pianificata.
Tutti gli eventi che iniziano con FLOW_WAIT_ forniscono informazioni su una pianificazione del processo. myWait_myRule_int indica sempre una pianificazione, dove int identifica il nodo di criteri a cui è associata la pianificazione.
In questo snippet:
- Vengono valutate le pianificazioni associate al primo nodo di criteri (
myWait_myRule_1). - L'ora definita per la prima pianificazione è trascorsa (
myWaitEvent_myWait_myRule_1_event_0). FLOW_WAIT_RESUMING_DETAILindica che l'intervista viene ripresa in modo che il processo possa eseguire le azioni pianificate.- La variabile
myVariable_currentviene aggiornata con i valori più recenti del record che ha avviato il processo in origine.
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
In questo snippet, il processo assicura che il campo data del record non abbia valore null. Nello specifico, verifica il campo data a cui si fa riferimento nella pianificazione.
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
A questo punto, si passa ad eseguire le azioni associate alla pianificazione. La prima è ..._myRule_1_event_0_SA1.
myRule_1corrisponde al primo nodo di criterievent_0corrisponde alla prima pianificazione associata ai criteriSA1corrisponde alla prima azione della pianificazione.
L’azione crea un record. Con gli eventi FLOW_BULK_ELEMENT_LIMIT_USAGE, si nota che l'azione ha aumentato il conteggio dell'utilizzo della transazione rispetto a due limiti: il numero di istruzioni DML emesse e il numero di righe DML elaborate.
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
Questo snippet visualizza la logica interna che Generatore di processi esegue in automatico. Il processo utilizza una variabile per segnalare che ha eseguito l’azione per questa pianificazione, in modo che l’azione non venga duplicata in modo accidentale.
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
Quindi, il processo valuta se eseguire qualcuna delle altre pianificazioni. Si noti che le condizioni per la ..._event_0 non sono più soddisfatte. In ragione dell’assegnazione delle variabili nello snippet precedente, il processo non esegue nuovamente le azioni associate a tale pianificazione.
Poiché è presente una sola pianificazione, il processo viene completato.
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

