Aquí vamos a repasar algunos conceptos avanzados de Apex en Salesforce.
Este contenido está dedicado para hacer repasos previos a un examen de certificación o a una entrevista técnica de trabajo. El formato que seguiremos será pregunta-respuesta. Pueden incluir esta información en flashcards para reforzar los conceptos que necesiten mejorar.
¿Cuáles son los Modificadores de Definición de Apex en Salesforce?
Los modificadores de definición de Apex son “Virtual” y “Abstract” que nos sirven para realizar herencia en Salesforce y, rehusar y extender código.
Una clase sólo puede extender una clase virtual o abstracta a la misma vez.
¿Características de una clase virtual?
- Una clase virtual contiene, únicamente, métodos virtuales.
- Los métodos virtuales deben implementar su contenido obligatoriamente.
- Se puede sobrescribir el contenido de un método virtual en la clase hija utilizando la palabra reservada “override“.
¿Características de una clase abstracta?
- Una clase abstracta puede tener métodos virtuales y abstractos.
- Los métodos abstractos son declarados, únicamente, en el padre. Sin embargo, deben ser implementados en la clase hijo.
3 tipos de Sharing Modes de Apex en Salesforce
- With Sharing: Se asegura de respetar los permisos de los objetos, de los campos y los sharing rules del usuario actual. Es decir, funciona en el Contexto del Usuario o User Context.
- Without Sharing: No respeta los sharing rules. Se ejecuta en Contexto del Sistema o System Context.
- Inherited Sharing: Hereda el contexto de la clase padre.
3 casos para usar una Wrapper Class
- Para replicar una estructura de datos en Apex.
- Para combinar y organizar datos en Apex.
- Usualmente, para deserealizar un objeto JSON, creando una clase con las mismas variables y estructura del JSON.
¿Cuándo usar Before y After Triggers?
- Before Triggers:
- Para validaciones complejas.
- Agregar o modificar campos en el mismo objeto.
- After Triggers:
- Validaciones complejas en otros objetos.
- Para acceder a campos luego de que han sido guardados, como IDs de registros.
4 tipos de Variables de Contexto de los Triggers de Salesforce
- DML:
- .isInsert
- .isUpdate
- .isDelete
- .isUndelete
- Timing:
- .isBefore
- .isAfter
- sObject:
- .old
- .new
- .oldMap
- .newMap
- .size
- Otros:
- .isExecuting
- .isAfter
6 Buenas prácticas de Apex y Triggers de Salesforce
- Evitar búcles dentro de búcles.
- Evitar consultas SOQL y operaciones DML dentro de un bucle.
- Gestionar los datos de registros en colecciones como Listas, Mapas y Conjuntos (Sets).
- Utilizar un trigger por objeto.
- Utilizar una clase para gestionar cada trigger (Trigger Handler).
- Evitar escribir IDs directamente en código. Usar Custom Labels, Custom Settings o Custom Metadata Types como opción alterna.
¿Qué son los Governor Limits?
Nos sirven para no monopolizar los recursos compartidos de un ambiente multitenant.
4 tipos de Governor Limits
- Límites de tiempo del CPU
- Memoria utilizada
- Tiempo de ejecución de Consultas
- Números de registros devueltos en una consulta.
¿Qué es una Transacción?
Es un conjunto de operaciones que son ejecutadas y evaluadas como una sola unidad.
¿Qué es el Stack Depth?
Es la profundidad de triggers anidados. El límite máximo de Stack Depth de triggers por transacción es de 16.
¿Qué es el Heap Size?
Es la cantidad de memoria que se utiliza en un objeto durante una transacción en Salesforce.
4 Conceptos importantes sobre la Recursión en el Order de Ejecución de Apex
- Recursion: Ocurre cuando el mismo registro puede ser modificado varias veces durante una misma transacción.
- Casading: Las herramientas de automatización pueden modificar otros registros del mismo tipo y así generar que otra automatización se ejecute en cascada.
- Bucle Recursivo: Usualmente cuando un workflow llama a un Trigger y este trigger hace un update que llama al workflow nuevamente.
- Bucle Infinito: Se suele dar cuando un trigger ejecuta operaciones DML que llaman al mismo trigger infinitamente.
2 Tipos de excepciones en Apex
- Excepciones Estándar: Son las excepciones propias de Salesforce. Por ejemplo: DMLException, SOQLException, etc.
- Excepciones Personalizadas: Son excepciones que podemos crear manualmente y las podemos disparar cuando queramos.
4 características de las Excepciones de Apex
- Los bloques que utilizan son: Try, Catch y Finally.
- Es permitido tener varios bloques Catch.
- Podemos ejecutar excepciones personalizadas cuando queramos.
- La excepción Límite (LimitException) no puede ser capturada por un Catch.
¿En qué consiste el error “Mixed DML Operation”?
Sucede cuando, en una sola transacción, queremos realizar operaciones DML en objetos configurables y no configurables (Setup and non-setup objects).
¿Qué es un Objeto Configurable (Setup Object)?
Es un objeto que afecta al acceso de un usuario. Por ejemplo, ObjectPermissions, PermissionSet, Territory, UserRole, User.
Información Relacionada:
Si quieres aprender más sobre este tema, te invito a ver estos posts sobre Apex del Blog:
- Governor Limits en Salesforce
- Interfaces en Apex de Salesforce
- Herencia de Clases en Apex de Salesforce
- Excepciones de Apex en Salesforce














