Qué es un trigger y cuándo se dispara
El código que Salesforce ejecuta solo cuando alguien crea, edita, borra o recupera un registro. Su anatomía, sus siete eventos y dónde vive dentro de tu org.
✓ En esta sub-lección
- 01Leer y escribir la cabecera de un trigger: nombre, objeto y eventos.
- 02Elegir los eventos correctos para una necesidad de negocio.
- 03Explicar por qué un trigger siempre recibe una lista y no un registro.
La nutria: ¿Te acuerdas? · Repaso del Módulo 5
¿Qué es this dentro de una clase?
Hasta ahora tu código se ejecutaba cuando tú lo lanzabas: pulsabas Execute en la Developer Console y ya. Un es distinto: nadie lo lanza. Salesforce lo ejecuta solo, cada vez que ocurre algo con un registro. Es el paso que convierte lo aprendido en los Módulos 3, 4 y 5 en automatización de verdad.
La nutria: El paralelo de Admin
La anatomía
1 · EL OBJETO
2 · CUÁNDO
3 · CON QUÉ EVENTO
EN FLOW · ELEMENTO START
Object: Account
- A record is created · Fast Field Updates
- A record is created · Actions and Related Records
2 flows distintos en Flow…
EN APEX · LA CABECERA
trigger AccountOnboarding on Account (before insert, after insert) { // tu lógica }
Un solo trigger cubre lo que en Flow son 2 flows. Por eso, al migrar, el trigger mira qué evento está corriendo (lección 2).
trigger LeadWelcome on Lead (after insert) {
for (Lead l : Trigger.new) {
System.debug('Nuevo lead: ' + l.LastName + ' · ' + l.Company);
}
}- trigger: la palabra clave. Un trigger vive en su propio archivo, igual que una clase del Módulo 5.
- El nombre: por convención, el objeto seguido de lo que hace o de «Trigger» (LeadWelcome, OpportunityTrigger).
- on Lead: un solo objeto por trigger, por su nombre de API (Invoice__c si es personalizado).
- (after insert): uno o varios eventos, separados por comas.
Los siete eventos
Un evento combina dos cosas: la operación (insert, update, delete, undelete) y el momento (before, antes de guardar; after, después de guardar). La diferencia entre before y after es la lección 3; por ahora quédate con que existen los dos.
| Evento | Cuándo | En un Record-Triggered Flow |
|---|---|---|
| before insert | Se va a crear, aún sin guardar | Se crea · Fast Field Updates |
| after insert | Recién creado, ya con Id | Se crea · Actions and Related Records |
| before update | Se va a guardar un cambio | Se actualiza · Fast Field Updates |
| after update | El cambio ya está guardado | Se actualiza · Actions and Related Records |
| before delete | Se va a borrar | Se borra |
| after delete | Ya está en la Papelera | No existe |
| after undelete | Recuperado de la Papelera | No existe |
Siempre llega una lista
Es la diferencia más importante con Flow. Un flow trabaja con un registro, $Record, y Salesforce agrupa por ti las interviews. Un trigger recibe todo el lote a la vez en Trigger.new, que es una List: uno si alguien guarda desde la pantalla, hasta 200 si llegan de Data Loader. Por eso el código de dentro es un for: aquí bulkificar no es un consejo, es la forma en que llegan los datos.
Dónde se escribe un trigger… y dónde no
Un flow lo puedes crear y activar directamente en producción; un trigger no. Se escribe en un sandbox o en una Developer Org y se despliega, como un change set, con una condición más: el despliegue solo se acepta si los tests cubren al menos el 75 % del código (Módulo 10). Tu Developer Org es tu laboratorio: en ella sí escribes directamente.
El encargo de este módulo
La nutria: Los seis flows que se migran
La nutria: ¿Y por qué migrar flows que funcionan?
La nutria: ¿Y por qué no un Flow? Porque Flow no escribe en el log