Metodo futuro vs. Apex accodabile in Salesforce

Pubblicato: 2023-11-20

Nel frenetico mondo dello sviluppo di Salesforce, comprendere gli strumenti e i metodi migliori per una codifica efficiente ed efficace è fondamentale. Questo articolo approfondisce due concetti chiave: Future Method e Queueable Apex. Entrambe sono tecniche potenti utilizzate in Salesforce per gestire operazioni asincrone, ma hanno caratteristiche e casi d'uso distinti.

Esploreremo le sfumature di Future Method e Queueable Apex, confrontandone le funzionalità, i vantaggi e quando utilizzarli ciascuno nei tuoi progetti Salesforce. Che tu sia uno sviluppatore esperto o nuovo in Salesforce, questo confronto fornirà informazioni preziose, aiutandoti a prendere decisioni informate per ottimizzare il tuo codice.

Resta sintonizzato mentre sveliamo le complessità e riveliamo il potenziale di Future Method e Queueable Apex in Salesforce!

Sommario

Perché il metodo futuro?

Se desideri eseguire processi in un thread separato, in un secondo momento e desideri eseguire il codice in modo asincrono, dobbiamo utilizzare metodi futuri.

Quando viene utilizzato?

Vengono utilizzati per operazioni di lunga durata come chiamate a servizi Web esterni o qualsiasi operazione che desideri eseguire nel proprio thread

Perché Queueable Apex?

Come il futuro viene utilizzato anche per eseguire il codice asincrono e consente di aggiungere lavori in una coda e migliorare il modo di eseguire il codice asincrono rispetto al metodo futuro.

Quando viene utilizzato?

Per i processi Apex eseguiti per un lungo periodo, come operazioni estese di database o chiamate a servizi Web esterni, è possibile eseguirli in modo asincrono implementando l'interfaccia Queueable

Leggi anche: Come implementare l'SSO di Salesforce utilizzando OAuth?

Differenze tra l'apice futuro e quello accodabile:

Metodo futuro Apice accodabile
1. Il futuro non verrà mai utilizzato per lavorare su SObject o tipi di oggetto.

2. Quando utilizziamo il metodo futuro non possiamo monitorare i lavori in corso.

3. Il metodo future non può essere chiamato all'interno della classe future o batch.

4. Il metodo futuro non verrà mai messo in coda.

1. I lavori accodabili possono contenere la variabile membro come SObject o tipi Apex personalizzati.

2. Quando si utilizzano lavori accodabili, verrà creato AsyncApexJob che possiamo monitorare come lavori pianificati.

3. Queueable Apex può essere chiamato dalla classe future e batch.

4. Utilizzando Queueable Apex si concatenano i lavori accodabili e nella Developer Edition sono solo 5 lavori.

Apice accodabile

La classe Queueable è una classe che viene creata implementando l'interfaccia predefinita “Queueable”. Questa interfaccia consente di eseguire i lavori asincroni o il codice del lavoro rispetto al metodo futuro. Ti consentirà di monitorare i lavori in coda (questa coda viene creata dall'interfaccia Queueable in modo che i lavori possano essere eseguiti in modo asincrono).

Sintassi:

 la classe pubblica <Nome della classe Queueable> implementa Queueable {
//Questo è l'unico metodo contenuto nell'interfaccia Queueable e necessario per ereditare questo metodo nella classe Queueable.
esecuzione public void (contesto QueueableContext) {
//Codice che deve essere eseguito
}
}

Qualsiasi processo Apex che richiede molto tempo in esecuzione, come operazioni estese di database o chiamate a servizi Web esterni, è possibile eseguirli in modo asincrono implementando l'interfaccia Queueable e aggiungendo un lavoro alla coda dei lavori Apex.

Il tuo processo Apex asincrono viene eseguito in background nel proprio thread e non ritarda l'esecuzione della logica Apex principale. Ogni lavoro in coda viene eseguito quando le risorse di sistema diventano disponibili. Un vantaggio derivante dall'utilizzo dei metodi di interfaccia è che alcuni limiti del regolatore sono più elevati rispetto a quelli di Apex sincrono, ad esempio i limiti delle dimensioni dell'heap.

Metodo Future Apex

L'apex futuro viene utilizzato per eseguire i processi in un thread separato, in un secondo momento quando le risorse di sistema diventano disponibili. Per utilizzare Future Apex non è necessario creare alcuna classe, è sufficiente utilizzare l'annotazione "@future" per identificare i metodi che vengono eseguiti in modo asincrono e per indicare che il metodo descritto di seguito in questa annotazione è un metodo futuro.

Quando si utilizza l'elaborazione sincrona, tutte le chiamate ai metodi vengono effettuate dallo stesso thread che sta eseguendo il codice Apex e non può verificarsi alcuna elaborazione aggiuntiva fino al completamento del processo. Puoi utilizzare metodi futuri per qualsiasi operazione che desideri eseguire in modo asincrono nel proprio thread. Ciò offre il vantaggio di non impedire all'utente di eseguire altre operazioni e di fornire limiti di governo e di esecuzione più elevati per il processo.
Sintassi:

 classe globale <NomeClasse> {
//Di seguito è riportata l'annotazione futura che definisce il metodo indicato come metodo futuro.
@futuro
public static void <FutureMethodName>(List<Id> recordIds) {
Elenco<Contatto> account = [Seleziona Id, Nome, Cognome dal contatto Dove Id IN :recordIds];
// elabora i record dei contatti per fare cose fantastiche
}
}

Leggi anche: Come collegare Pipedrive e l'integrazione di Salesforce?

I metodi futuri vengono generalmente utilizzati per

Richiami a servizi Web esterni. Se stai effettuando chiamate da un trigger o dopo aver eseguito un'operazione DML, devi utilizzare un metodo futuro o accodabile. Un callout in un trigger manterrebbe aperta la connessione al database per tutta la durata del callout.

Operazioni che desideri eseguire nel proprio thread quando il tempo lo consente, come una sorta di calcolo ad alta intensità di risorse o l'elaborazione di record

Nota: il motivo degli oggetti non può essere passato come argomento al metodo futuro perché l'oggetto può cambiare tra il momento in cui si chiama il metodo e il momento in cui viene effettivamente eseguito. I metodi futuri verranno eseguiti quando le risorse di sistema saranno disponibili. Quando un metodo futuro viene eseguito, potrebbe avere un vecchio valore oggetto, il che può causare il verificarsi di ogni sorta di cose brutte.

Cose da ricordare

  • Il metodo futuro dovrà essere statico
  • Il tipo di reso deve essere nullo
  • I parametri specificati devono essere tipi di dati primitivi, matrici di tipi di dati primitivi o raccolte di tipi di dati primitivi
  • Puoi chiamare metodi futuri nello stesso modo in cui chiami qualsiasi altro metodo. Tuttavia, un metodo future non può chiamare un altro metodo future
  • Non più di 50 chiamate di metodo per invocazione Apex
  • Le chiamate asincrone, come @future o executiveBatch, chiamate in un blocco startTest, stopTest, non vengono conteggiate nei limiti del numero di lavori in coda
assumere sviluppatori della forza vendita

Esempio di metodo futuro e classe accodabile

Metodo futuro e classe accodabile

Qui ottengo il valore di 4 valute nel dollaro canadese. Per GBP, USD, AUD, CAD. E salvando il valore nella valuta dei metadati personalizzati. Per HTTPREQUEST qui ho utilizzato il metodo Future. E poiché sta aggiornando più record contemporaneamente durante l'esecuzione del batch, ho utilizzato Queueable Apex che aggiorna più record alla volta.

Aggiornamento personalizzato dei metadati personalizzati

Aggiornamento personalizzato dei metadati personalizzati

Classe accodabile

Classe accodabile

Chiamare il metodo Future e inviare l'elenco da aggiornare nella classe Queueable

Chiamata al metodo Future

Emizentech è un'autentica ed esperta società di consulenza per la forza vendita e i nostri esperti sviluppatori della forza vendita possono fornirti assistenza professionale per il tuo prossimo progetto di forza vendita.

Leggi anche: Come creare un componente Salesforce Lightning Map?