Salesforce ci consente di elaborare o eseguire un numero particolare di dichiarazioni/record alla volta. Ci sono alcuni limiti per le dichiarazioni DML, le classi apice, ecc., da eseguire o elaborare. Questi limiti sono noti come limiti del governatore. In questo tutorial, vedremo quali sono i limiti del governatore e come possono essere gestiti. Inoltre, Salesforce Apex fornisce la classe "limite" per conoscere i limiti correlati a callout, classi Apex, componenti Web Lightning, dichiarazioni SOSL e SOQL.
Limiti del governatore
Considera uno scenario in cui Alish e Subash sono due persone che usano l'organizzazione di Salesforce. Alice desidera elaborare o eseguire 1000 istruzioni DML in una transazione. In parallelo, Subash vuole caricare 5000 record alla volta. Se lo fanno in parallelo, Salesforce non accetterà e diventa frenetico. Quindi, i limiti del governatore entrano in foto. In questo caso, Alish può elaborare 100 DML alla volta e Subash può elaborare 500 record alla volta. Possono usare l'apice asincronousbatch per eseguire ogni transazione su un thread separato senza disturbarne ciascuno di essi e completare il proprio compito.
Fondamentalmente, i limiti del governatore in Salesforce limitano l'elaborazione e l'esecuzione in più transazioni. I limiti di "perpastica per transazione" contano per ciascuna transazione e il limite di apice specifico per dimensione "affronta la dimensione del codice. Salesforce supporta due processi: processi sincroni e asincroni. Nel processo sincrono, lo script Apex viene eseguito in un singolo GO mentre nel processo asincrono, lo script Apex viene eseguito divisa in più lavori.
Limiti consentiti
Discutiamo del conteggio dei limiti per diversi scenari:
Esempio di classe limite:
L'apice può specificare i limiti del governatore nella classe "limite". Questa classe fornisce alcuni metodi che indicano ai limiti del governatore. Diamo un'occhiata al seguente esempio che mostra alcuni limiti del governatore:
Sistema.Debug ('Numero di query aggregate possono essere elaborati:'+ limiti.getlimitaggregateQueries ());Produzione:
Può anche essere possibile verificare quante dichiarazioni/righe DML possono essere restituite usando i metodi "Dome" che sono presenti nella classe "limite".
Esempio di utilizzo:
Scriviamo una query SOQL che restituisce i due record dall'oggetto "Workorder". Successivamente, elimina questi due record usando DML "Elimina".
Sistema.Debug ("Dichiarazioni DML:"+limiti.getDMlstatements ());Produzione:
Nell'esempio dato, non ci sono dichiarazioni DML e 0 righe. Il tempo della CPU esistente è di 1 millisecondo. Dopo aver restituito 2 righe dalla query SOQL ed eliminazione di queste due righe, il numero totale di istruzioni DML che viene restituita dai limiti.getDMlstatements () è 1, le righe totali restituite dai limiti.getdmlrows () è 2 e il tempo della CPU necessario per eseguire questa transazione è di 51 millisecondi.
Esempio di best practice: "Non usare mai DML all'interno del loop"
Vediamo come possiamo eseguire il codice senza ottenere il limite del governatore. Per prima cosa creiamo un record sull'oggetto "Product" (API - Product2) dall'oggetto "WorkOrder" assegnando il "Workorder" soggetto al "Nome prodotto" nel ciclo "per" stesso. Vediamo il seguente codice:
Product2 Prod_obj;Possiamo farlo in modo migliore dichiarando un elenco (Prod_s) e quindi memorizzando il Prod_Obj nell'elenco. Possiamo inserire questo elenco nel prodotto al di fuori del loop.
Elenco prod_s = new List ();Conclusione
Ora abbiamo imparato quali sono i limiti Apex in Salesforce con una spiegazione dettagliata. È meglio andare con il processo Apex asincrono per ottenere migliori limiti del governatore rispetto all'apice sincrono. Abbiamo anche appreso i limiti del governatore per diversi scenari e abbiamo dato una dimostrazione di esempio per quanto riguarda il conteggio dei limiti dalla classe "limite". Abbiamo anche verificato il conteggio delle dichiarazioni DML, delle righe e del tempo della CPU eseguendo un'istruzione DML. Abbiamo concluso questa guida discutendo di un esempio di best practice.