viernes, 21 de marzo de 2014

Crear y utilizar un proceso Batch

Salesforce tiene una serie de limites que no se pueden exceder, esto resulta ser un problema cuando insertamos o modificamos grandes cantidades de datos desde una apex.

La solución es implementar un proceso Batch, este realiza las tareas que le indiquemos repartiéndolas en varias transacciones, por lo que reducimos la probabilidades de superar los limites.

Hay que tener en cuenta que este proceso no se ejecuta al instante, sino que se añade a la cola de procesos a ejecutarse, por lo que no podemos saber cuando se ejecutará, esto limita su utilidad práctica.

Para utilizar el Batch, implementaremos la interfaz Database.Batchable, con sus correspondientes métodos.
 global class Batch_DupVacancy implements Database.Batchable<sObject>{
     global final String query;
     global Batch_DupVacancy(String q){
        query = q;
     }
     global Database.querylocator start(Database.BatchableContext i){
           return Database.getQueryLocator(query);
     }

     global void execute(Database.BatchableContext i, List<sObject> scope){
           List<Vacancy__c> lstVac = (List<Vacancy__c>)scope;
           for (Vacancy__c vac :  lstVac) {
                //...
           update lvac; 
     }

     global void finish(Database.BatchableContext i){}

 }

Hacemos la llamada al Batch:
     String query = ' select id, Closing_day__c from Vacancy__c ';
     Batch_DupVacancy batchDV = new Batch_DupVacancy(query);
     Database.executeBatch(batchDV); 

En la anterior llamada por defecto se ejecutan las transacciones en paquetes de 200, pero dependiendo de los procesos que estemos ejecutando en el Batch, nos puede interesar que se ejecuten menos paquetes por transacción, por ejemplo para no superar limites, etc:
     Database.executeBatch(batchDV, 1); 

Advertencia:
  • Solo se pueden tener 5 procesos de este tipo en cola 


Salesforce Oficial:  Batch  -  Limits

Este post pertenece a KaizenStep, el partner preferente de Salesforce en Barcelona. Puedes encontrar información de nuestros servicios en nuestra web o si quieres leer posts de funcionalidades y negocio, puedes consultar nuestro blog de empresa. Si quieres puedes leer más en nuestro blog Salesforce en Español.

No hay comentarios:

Publicar un comentario