Manejo de errores en la consola del desarrollador
Si has realizado pruebas automatizadas, procesos o desencadenadores en Salesforce, pueden ocurrir errores al usar la integración con Salesforce. Este artículo te ayuda a resolver estos errores comunes.
Problema con pruebas Apex
Escenario
Al realizar pruebas automatizadas para la organización, si la prueba incluye una llamada HTTP de Cooby, puede producirse un error.
Solución
Hay 2 métodos para resolver estos errores.
- Clase TestContext: Simula una llamada exitosa para evitar errores.
La clase TestContext contiene métodos para configurar simulaciones de llamadas HTTP durante la ejecución de pruebas.
setPackageMock()
- Propósito: Configura un mock predeterminado para llamadas HTTP al ejecutar pruebas.
- Uso: Este método debe llamarse para garantizar que las llamadas HTTP se simulen durante la prueba.
setMock(HttpCalloutMock mockInstance)
- Propósito: Configura una instancia específica de mock para llamadas HTTP durante las pruebas.
- Parámetros: mockInstance: La instancia de HttpCalloutMock que se utilizará durante las pruebas.
- Uso: Usa este método para definir un mock personalizado para llamadas HTTP durante las pruebas.
- Clase TriggerControl: Desactiva el trigger y previene directamente el comportamiento de la llamada.
La clase TriggerControl contiene métodos para gestionar el estado de los triggers (habilitarlos o deshabilitarlos) para diferentes sObjects.
disable(String sObjectName)
- Propósito: Deshabilita el trigger para el sObject especificado.
- Parámetros:
sObjectName: El nombre del sObject para el cual se debe deshabilitar el trigger.
- Uso: Llama a este método para evitar que se ejecute un trigger para un sObject específico.
enable(String sObjectName)
- Propósito: Habilita el trigger para el sObject especificado.
- Parámetros:
sObjectName: El nombre del sObject para el cual se debe habilitar el trigger.
- Uso: Llama a este método para permitir que se ejecute un trigger para un sObject específico.
isDisabled(String sObjectName)
- Propósito: Verifica si el trigger para el sObject especificado está deshabilitado.
- Parámetros:
sObjectName: El nombre del sObject a verificar.
- Devuelve: Verdadero si el trigger está deshabilitado, falso si no lo está.
- Uso: Usa este método para verificar el estado del trigger para un sObject específico.
disableAll()
- Propósito: Deshabilita todos los triggers.
- Uso: Llama a este método para evitar que se ejecuten todos los triggers.
enableAll()
- Propósito: Habilita todos los triggers.
- Uso: Llama a este método para permitir que se ejecuten todos los triggers.
Problema después de la instalación
Comprendiendo el Script de Post-Instalación
El Script de Post-Instalación se ejecuta como un usuario del sistema especial que representa nuestro paquete. Esto significa que todas las operaciones realizadas por el script parecen ser hechas por nuestro paquete.
La ejecución del Script de Post-Instalación se inicia mediante una llamada de API del sistema, lo cual impone ciertas limitaciones sobre las funciones disponibles de Salesforce durante esta transacción. Algunas de estas limitaciones incluyen:
- Acceso a ciertos objetos estándar como Grupo, Grupo de Colaboración y Miembro de Red, etc.
- Uso limitado de eventos de plataforma.
- Operaciones DML sobre objetos de configuración. Las transacciones API no pueden realizar operaciones DML sobre objetos de configuración o metadatos, como crear o modificar roles, perfiles o configuraciones personalizadas.
- Triggers y Reglas de flujo de trabajo. Algunos triggers y reglas podrían no ejecutarse durante transacciones API, dependiendo de cómo esté estructurada la transacción y si respeta el orden de ejecución.
- Gestión de sesiones. Las transacciones iniciadas por API no mantienen una sesión de usuario igual que las sesiones interactivas. Esto puede afectar operaciones que dependen de mantener estado entre transacciones.
Si alguna automatización en tu organización que se active por Contacto, Prospecto o los objetos de Cooby interactúa con las funciones anteriores, la actualización de datos podría fallar y recibirás un correo con mensajes de error.
Contexto y Desafíos Especiales
Es importante tener en cuenta que el Script de Post-Instalación se ejecuta en el contexto de un usuario especial "fantasma". Este contexto único puede llevar a varios desafíos:
- Restricciones de Funciones: Debido a la ejecución a nivel de sistema, algunas funciones de Salesforce están restringidas, lo cual no ocurre cuando los procesos son ejecutados manualmente por un usuario.
- Diferencias Contextuales: El código que funciona perfectamente en un contexto de usuario común puede fallar durante la ejecución del Post-Instalación por estas restricciones.
- Dificultades de Depuración: Estas fallas pueden ser difíciles de detectar antes del lanzamiento y aún más difíciles de depurar cuando ocurren. Desafortunadamente, no hay forma de ejecutar tu código InstallHandler en este contexto de usuario "fantasma".
Escenario
Cooby modificará ampliamente Contactos/Prospectos durante la instalación (para que nuestras funciones funcionen correctamente). Si el usuario tiene triggers establecidos para estos cambios, ocurrirá un error.
Solución
Si notas errores durante la ejecución del Post-Instalación, por favor:
- [Obligatorio] Revisa los Mensajes de Error: Revisa los mensajes proporcionados para identificar los problemas específicos.
- [Obligatorio] Revisa los Registros de Depuración: Analiza las líneas de error para determinar su causa.
- [Opción 1] Ejecuta manualmente el lote de mantenimiento de datos de Cooby
- [Opción 2] Actualiza o Desactiva Automatizaciones: Desactiva o actualiza temporalmente las condiciones de activación de las automatizaciones que podrían causar estos errores.
Recomendamos revisar y ajustar temporalmente los procesos automáticos de tu organización si ocurren errores. Esto podría implicar revisar o actualizar cualquier automatización, trigger o flujo de trabajo personalizado que entre en conflicto con el Script de Post-Instalación.
Ejecutar manualmente el lote de mantenimiento de datos de Cooby
Escenario
Debido a un error post-instalación, Cooby no se ejecutará correctamente y el usuario no desea desactivar los triggers.
Paso a paso de la operación
- Abrir la consola de desarrollador:
- Inicia sesión en tu organización de Salesforce.
- Haz clic en el ícono de engranaje en la esquina superior derecha.
- Selecciona Consola de Desarrollador en el menú desplegable.
- Ejecutar los trabajos de mantenimiento:
- En la Consola de Desarrollador, haz clic en Debug en la barra de menú.
- Selecciona Abrir Ventana Ejecutar Anónimo (o presiona Ctrl + E).
- En la ventana anónima, introduce el siguiente comando:
cooby.DataMaintenanceManager.run();
- Haz clic en Ejecutar para iniciar el trabajo por lotes.
- Una vez finalizado, habrás completado el trabajo manual por lotes.
Verificación del estado del trabajo por lotes
- Navegar a Apex Jobs:
- Ve a Configuración haciendo clic en el ícono de engranaje en la esquina superior derecha y selecciona Configuración.
- En el cuadro de búsqueda rápida, escribe Apex Jobs y selecciónalo en los resultados.
- Monitorear estado del trabajo:
- En la página de Apex Jobs, verás una lista de todos los trabajos Apex.
- La columna de Estado mostrará el estado actual de tu trabajo por lotes (por ejemplo: En cola, En progreso, Completado o Fallido).
- Nos interesan particularmente cinco clases Apex específicas. Algunas de estas clases pueden mostrar Lotes Totales: 0, lo que indica que no hay nada que cambiar y todo está listo.
Manejo de finalización y errores
Recibir notificación por correo:
- Una vez que todos los trabajos por lotes se hayan completado, podrías recibir un correo de notificación.
- Este correo contendrá detalles sobre cualquier error ocurrido durante la ejecución.
Si detectas errores en la ejecución por lotes, estos están directamente relacionados con los procesos de automatización configurados en tu organización Salesforce. Para resolverlos, sigue los pasos a continuación:
- Revisar Mensajes de Error:
Consulta los mensajes de error en el correo o en la página de Apex Jobs. Suelen contener detalles sobre los procesos automáticos que causaron el error.
- Revisar Registros de Depuración:
Navega a Configuración y busca "Registros de Depuración" en el cuadro de búsqueda rápida.
Revisa los registros para identificar el proceso exacto que generó el error.
- Actualizar o Desactivar Automatización:
Una vez identificado el proceso, puedes desactivarlo temporalmente o modificar sus condiciones de activación para evitar errores.
Esperamos que este documento te ayude a entender mejor cómo funciona Cooby. Si tienes dudas sobre la integración con Salesforce, escríbenos a support@cooby.co 💜
Actualizado el: 14/07/2025
¡Gracias!