2012-02-03 59 views
8

Estoy tratando de programar una clase para que se ejecute cada 15 minutos. Sé que podemos establecer Salesforce por cada hora, pero ¿hay alguna manera de reducir la granularidad a 10-15 minutos?¿Cómo programamos una clase para que se ejecute cada 15 minutos en Salesforce?

global class scheduledMerge implements Schedulable { 
    global void execute(SchedulableContext SC) { 
     ProcessTransactionLog p= new ProcessTransactionLog(); 
     p.ProcessTransaction(); 
    } 
} 

Respuesta

14

Puede utilizar este fragmento de código apex para programar su trabajo para que se ejecute cada 15 minutos.

System.schedule('Job1', '0 0 * * * ?', new scheduledMerge()); 
System.schedule('Job2', '0 15 * * * ?', new scheduledMerge()); 
System.schedule('Job3', '0 30 * * * ?', new scheduledMerge()); 
System.schedule('Job4', '0 45 * * * ?', new scheduledMerge()); 
+0

estoy bastante seguro de que también puede utilizar comas para delimitar múltiples valores: 'System.schedule ('Job1', '0 0,15,30,45 * * *?', new scheduledMerge()); ' –

+0

La primera línea de esta respuesta hará que el trabajo (en teoría) se ejecute cada minuto. La forma "cron preferida" para expresar "ejecutar cada 15 minutos en el 15" sería "0 0/15 * * *? '. – jkraybill

+3

Matt, en realidad en Apex CRON debe especificar segundos y los minutos como enteros: --- comas, estrellas y rayas sólo están disponibles para los otros componentes CRON. Entonces su enfoque '0,15,30,45' no funcionará. Además, una palabra de precaución sobre seguir el enfoque de Rajesh: solo puedes tener 25 clases Apex programadas en total, y el enfoque de Rajesh usa 4 de ellas. Pero si tiene tantos trabajos de sobra, esto funcionará muy bien. – zachelrath

0
global class scheduledTest implements Schedulable { 
    global void execute(SchedulableContext SC) { 
     RecurringScheduleJob.startJob(); 
     String day = string.valueOf(system.now().day()); 
     String month = string.valueOf(system.now().month()); 
     String hour = string.valueOf(system.now().hour()); 
     String minute = string.valueOf(system.now().minute() + 15); 
     String second = string.valueOf(system.now().second()); 
     String year = string.valueOf(system.now().year()); 

     String strJobName = 'Job-' + second + '_' + minute + '_' + hour + '_' + day + '_' + month + '_' + year; 
     String strSchedule = '0 ' + minute + ' ' + hour + ' ' + day + ' ' + month + ' ?' + ' ' + year; 
     System.schedule(strJobName, strSchedule, new scheduledTest()); 
    } 
} 
+1

Defina una variable llamada 'ahora' y el método addMinutes (Entero) será preciso. Datetime ahora = System.now(); Fecha y hora nextE = now.addMinutes (10); –

+0

esto se ejecutará cada 15 minutos, incluso cuando configuro el horario apex en 1 hora? – sfdclearner

Cuestiones relacionadas