Apex Academy
Módulo 9·Checkpoint·50 min

Checkpoint del Módulo 9

La entrega: la sincronización nocturna con el ERP. Un programador que despierta a las 2:00, un Batch que envía las renovaciones pendientes tanda a tanda y cuenta los resultados, y un Queueable que manda el resumen al terminar.

En Admin esUn flow programado, un Data Loader y un correo de resumen, encadenados sin nadie delante

✓ En esta sub-lección

  1. 01Combinar Scheduled, Batch y Queueable en un solo proceso.
  2. 02Hacer callouts desde un Batch con Database.AllowsCallouts.
  3. 03Contar resultados entre tandas y lanzar el siguiente paso desde finish.

La nutria: ¿Te acuerdas? · Repaso de la lección 6

En un mismo execute tienes que llamar al ERP y guardar. ¿En qué orden?

Seis tareas preparando piezas. La última pide juntarlas: cada noche laborable, todas las renovaciones que el ERP todavía no tiene se le envían por tandas, cada una se marca como enviada, y al terminar el ERP recibe un resumen de cuántas entraron y cuántas fallaron.

PiezaQué hace en la entregaTarea
ScheduledDespierta a las 2:00 y lanza el Batch.5
Batch + StatefulRecorre las pendientes en tandas y cuenta resultados.4
Database.AllowsCalloutsDeja al Batch llamar al ERP en cada tanda.6
Queueable desde finishEnvía el resumen cuando no quedan tandas.3 y 6
Database.update(…, false)Una renovación que no se puede guardar no frena a las demás.Módulo 8
Scheduledstarttanda 1tanda 2tanda 3tanda 4tanda 5finish → Queueable

synced

0

failed

0

para mañana

0

Paso 1 de 9

Una noche laborable cualquiera: 500 renovaciones que el ERP aún no tiene. Pulsa Reproducir.

Sigue una noche entera: del despertador a las tandas, y de finish al resumen.

Dos decisiones merecen atención. El tamaño de tanda es 100, no 200: cada tanda hace una llamada con todas sus renovaciones, y el ERP acepta como mucho 100 por petición. Y el callout va antes del Database.update, por la regla de la tarea 6. Si el ERP falla, la excepción deshace solo esa tanda, que seguirá pendiente (ERP_Synced__c = false) y entrará la noche siguiente.

La nutria: ¿Y por qué no un Flow? Porque son tres flows que no se hablan

El equipo lo pintó primero con clics: un flow programado sobre las renovaciones pendientes, con una acción HTTP Callout por interview. Tres problemas. El tope de 250.000 interviews al día para toda la org. Una petición por renovación, cuando el ERP pide tandas de 100. Y el resumen: cada interview es independiente, así que no hay un contador común para decir «entraron 9.800, fallaron 12». Con Stateful, el Batch lleva esa cuenta y en finish la entrega.

Lo que viene: el Módulo 10

Todo este módulo ha supuesto que el código funciona. ¿Cómo lo demuestras antes de desplegarlo? Con tests. Y el asíncrono tiene truco: Test.startTest() y Test.stopTest() hacen que los trabajos encolados se ejecuten al momento, para poder comprobar su resultado. Es el Módulo 10, y sin él nada de esto llega a producción.