[contenido incrustado]
P. ¿Explica el código para programar Apex por lotes para que se ejecute a intervalos regulares?
global class SampleBatchScheduler implements Schedulable {
// Execute at regular intervals
global void execute ( SchedulableContext ctx ) {
String soql = ‘SELECT Id, Name FROM Account’ ;
SampleBatch batch = new SampleBatch ( soql ) ;
Database . executebatch ( batch , 200 ) ;
|
Una vez que haya implementado la interfaz programable, use el método system.schedulable para ejecutar la clase.
El método system.schedule () toma 3 parámetros:
1. Nombre del trabajo
2. Una expresión que se usa para representar la hora y la fecha de la operación.
3. El objeto de la clase que desea ejecutar.
Una expresión se escribe en forma de ‘Segundos, minutos, horas, día del mes, día del mes de la semana, año opcional’.
‘Segundos’: 0-60
‘Min’: 0-60
‘Horas’: 0-24
‘Días-Meses’: 1-31
‘Mes’: 1-12
‘Día-Semana’: 1-7
‘Año opcional’: –
P. ¿Qué es el tipo de devolución de system.schedule?
El método System.schedule devuelve el ID del trabajo en formato de cadena.
String jobID = system . schedule ( ‘Merge Job’ , sch , m ) ;
|
class MySchedule implements Schedulable
public void execute ( SchedulableContext BC )
//———//
MySchedule mysc = New MySchedule ( ) ;
String str = ‘0 0 10 * 3 2’ ;
// MyJob is Name, str is Time Format, mysc is Object
System . schedule ( ‘MyJob’ , str , mysc ) ;
|
‘0 30 12? 1 3 ‘
P. Desea programar un trabajo por lotes de una sola vez y no de nuevo. ¿Cómo hacerlo?
System.scheduleBatch () se usa para ejecutar una programación de un trabajo por lotes solo una vez para un tiempo futuro. Este método tiene 3 parámetros.
parámetro 1: instancia de una clase que implementa la interfaz Database.Batchable.
param 2: Nombre del trabajo.
parámetro 3: intervalo de tiempo después del cual el trabajo debe comenzar a ejecutarse.
param 4: Es un parámetro opcional que definirá el no. de eso procesado a la vez. System.scheduleBatch () devuelve el ID del trabajo programado.
Podemos usar la identificación del trabajo para cancelar el trabajo.
Este método devuelve el ID de trabajo programado, también llamado ID de CronTrigger .
String cronID = System . scheduleBatch ( reassign , ‘job example’ , 1 ) ;
CronTrigger ct = [ SELECT Id , TimesTriggered , NextFireTime
FROM CronTrigger WHERE Id = : cronID ] ;
|
Este método está disponible solo para clases por lotes y no requiere la implementación de la interfaz Programable. Esto facilita la programación de un trabajo por lotes para una ejecución.
P. ¿Cómo obtener el recuento de trabajos programados de Apex mediante programación?
Puede consultar mediante programación los objetos CronTrigger y CronJobDetail para obtener el recuento de trabajos programados de Apex.
P. Si hay uno o más trabajos programados activos para una clase de Apex, ¿puede actualizar la clase o cualquier clase a la que se hace referencia en la interfaz de usuario de Salesforce?
Si hay uno o más trabajos programados activos para una clase de Apex, no puede actualizar la clase ni ninguna de las clases a las que hace referencia esta clase a través de la interfaz de usuario de Salesforce. Sin embargo, puede habilitar implementaciones para actualizar la clase con trabajos programados activos mediante la API de metadatos.
P. ¿Apex Scheduler se ejecuta en modo de sistema?
El planificador se ejecuta como sistema: todas las clases se ejecutan, tenga o no el usuario permiso para ejecutar la clase.
P. ¿Cómo llamar a Apex por lotes desde una clase programable?
Cree una instancia de batchClass y luego pase la instancia en database.executebatch
batchable b = new batchable ( ) ;
database . executebatch ( b ) ;
|
Una forma más sencilla de programar un trabajo por lotes es llamar al método System.scheduleBatch sin tener que implementar la interfaz Programable.
P. ¿Cómo obtener el nombre del trabajo y el tipo de trabajo para los trabajos programados?
Puede obtener el nombre del trabajo y el tipo de trabajo del registro CronJobDetail asociado con el registro CronTrigger.
P. La llamada no es compatible con Apex programado, entonces, ¿cuál es la alternativa?
Las llamadas de servicios web síncronos no son compatibles con Apex programado. Para poder hacer llamadas, realice una llamada asincrónica colocando la llamada en un método anotado con @future (callout = true) y llame a este método desde Apex programado. Sin embargo, si su Apex programado ejecuta un trabajo por lotes, las llamadas son compatibles con la clase por lotes.
P. ¿Cuáles son las limitaciones de Apex programado?
1. Podemos programar solo 100 trabajos a la vez.
2. Max no. El número de trabajos programados de ápice en 24 horas es de 2,50 000 número de trabajos (puede cambiar con las actualizaciones de Salesforce).
3. Las llamadas de servicios web síncronos no son compatibles con Apex programable.
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://www.sfdcamplified.com/2021/01/intermediate-to-advance-level-interview-questions-on-schedulable-apex.html#utm_source=rss&utm_medium=rss&utm_campaign=intermediate-to-advance-level-interview-questions-on-schedulable-apex