Salesforce Apex - disparadores

Salesforce Apex - disparadores

En Salesforce, validar los datos antes/después de la inserción es muy importante y debe tenerse en cuenta. En la mayoría de los escenarios, después de ingresar los datos en el objeto Salesforce, se debe producir algunas inserciones/actualizaciones incorrectas de la manipulación de datos y se debe manejar las inserciones incorrectas/actualizaciones. Para lograr esto, Salesforce introdujo un script de Apex que se conoce como "disparador". Sumerja rápidamente la guía que se ocupa de eventos de activación, variables de contexto, tipos y escenarios con ejemplos en tiempo real.

Disparador de Apex

En Salesforce, Trigger es un código APEX (.apxt) que dispara antes o después de las instancias de manipulación de datos. Basado en el evento que se especifica en el disparador, se dispara en objetos especificados en Salesforce. Además, podemos especificar los contextos que nos ayudan a acceder a los contextos de tiempo de ejecución. Esto nos ayuda a prevenir acciones no deseadas/innecesarias en objetos en Salesforce. Digamos que, en el objeto de cuenta, necesitamos actualizar solo el teléfono cuando la "industria" es "agricultura".

Eventos de activación

Como ya discutimos, un gatillo se dispara antes o después de que ocurran las operaciones de DML. Hay tres operaciones DML que ocurren en el objeto Salesforce.

  1. Si desea que el gatillo se dispare antes de la inserción del registro, puede usar el evento de activación "Antes de insertar".
  2. Si desea que el gatillo se dispare después de la inserción del registro, puede usar el evento de activación "After Insert".
  3. Si desea que el activador se dispare antes de la actualización del registro, puede usar el evento de activación "Antes de la actualización".
  4. Si desea que el activador se dispare después de la actualización del registro, puede usar el evento de activación "After Update".
  5. Si desea que el gatillo se dispare antes de la eliminación del registro, puede usar el evento de gatillo "antes de eliminar".
  6. Si desea que el gatillo se dispare después de la eliminación de registro, puede usar el evento de activación "After Eliminar".

Un evento de gatillo más que se puede disparar después de undeletion es "después de Undetelete".

Tipos de activación

Básicamente, hay dos tipos de desencadenantes: el gatillo "antes" y el gatillo "después".

  1. Antes del gatillo - Se dispara cuando se inserta, actualiza o elimina un registro. Utilizamos este desencadenante para validar o actualizar los registros antes de guardarlo en la base de datos (objeto Salesforce) si queremos establecer la "industria de cuentas" en "banca" si la "calificación de cuenta" no es nula.
  1. Después del gatillo - Se dispara cuando se actualiza/elimina otro registro en función del registro existente si queremos crear un nuevo "contacto" después de que se cree o se actualice la "cuenta".

Activar variables de contexto

Es importante ver qué escenario de activación se dispara. Necesitamos rastrear en qué contexto de activación se dispara el gatillo. Todas las variables de contexto de disparador devuelven verdadero si el gatillo se dispara debido a ese evento. Veamoslos uno por uno.

1. Isinsert: Si el gatillo se dispara debido a un evento de inserto DML, IsinSert se hace realidad.

Ejemplo: Creación de contacto cuando se crea "cuenta".

2. update: Si el gatillo se dispara debido a un evento DML de actualización, ISUPDate se hace realidad.

Ejemplo: Si el "nombre de la cuenta" no es nulo, puega los "ingresos anuales".

3. isdelete: Si el gatillo se dispara debido a un evento DML Delete, ISDelete se hace realidad.

Ejemplo: Los registros de la cuenta no pueden eliminar si la "calificación de cuenta" está "caliente".

4. isundelete: Si el gatillo se dispara debido a un evento de DML no delgado, Isundelete se hace realidad.

Ejemplo: Los registros de la cuenta se recuperan de Salesforce Recycle Bin.

Sintaxis de activación:

Podemos crear un script Apex que se dispara en función de las instancias de DML utilizando la palabra clave "disparador" seguida del nombre del activador. Pregunta sobre qué objeto Salesforce debe ocurrir el disparador durante la creación del script de Apex en sí mismo. Todos los eventos de activación se especifican después del objeto Salesforce.

Trigger Trigger_name en Salesforce_object_api (Trigger_events)
declaraciones…

Configuración del medio ambiente

1. Vaya a la "Consola de desarrollador" y vaya al archivo "Seleccionar nuevo". Luego, elija "Apex Trigger".

2. Pregunta el nombre del script y el objeto Salesforce de modo que el disparador se dispare en este objeto. Haga clic en "Enviar" para crear un nuevo activador APEX.

Escenario 1: Antes de insertar

Cuando la cuenta se crea con la industria de la "educación", disparamos un desencadenante que asigna el campo de "tipo" al "socio tecnológico" [Objeto - Cuenta].

disparar antes de_insert en cuenta (antes de insertar)
para (cuenta de cuenta_iter: disparador.Nuevo)
// Verifique si la industria es 'educación'
if (cuenta_iter.Industria == 'Educación')
// establecer el tipo en 'socio de tecnología'
Cuenta_iter.Type = 'Technology Partner';


"Primero, iteramos los registros de la cuenta y verificamos si la industria es" educación "o no. Si es "educación", asignamos el "socio de tecnología" al campo "Tipo".

Caso de prueba:

Vaya a la pestaña "Cuentas" desde el lanzador de aplicaciones y cree una cuenta con la industria como "educación". Compruebe si el campo "Tipo" está poblado con "Socio de tecnología" o no.

Al hacer clic en "Guardar", puede ver que "Tipo" se crea con "Socio de Tecnología".

Escenario 2: después de insertar y después de la actualización

Cuando la cuenta se crea con la calificación "cálida", disparamos un disparador que crea un contacto con "Contact LastName" como "Linuxhint-Account", "Título" como "Gerente" y "Departamento" como "Ventas" [Objeto " - Cuenta].

Trigger After_insert_trigger en Account (después de insertar, después de la actualización)
List contact_list = new List ();
// iterar a través de registros de cuenta
para (cuenta de cuenta_obj: disparador.nuevo)
if (cuenta_obj.Calificación == 'caliente')
// crear un nuevo objeto de contacto
Contactar cont_obj = new Contact ();
// Asignar los valores a tres campos
cont_obj.LastName = 'LinuxHint-Account';
cont_obj.Title = 'Manager';
cont_obj.Departamento = 'ventas';
// Agregar estos tres campos a la lista
lista de contactos.agregar (cont_obj);

// Insertar en el objeto de contacto
insertar contact_list;

Primero, creamos una lista del tipo de "contacto" e iteramos el objeto "cuenta". Dentro del bucle "para", verificamos si la "calificación de cuenta" es "cálida" o no. Si es "cálido", creamos "contacto" y asignamos tres campos con los valores y agregamos este objeto a la lista de contactos (declarado anteriormente). Finalmente, insertamos estos tres campos en el objeto "Contacto" usando el DML inserto.

Caso de prueba:

Vaya a la pestaña "Cuentas" desde el lanzador de aplicaciones y cree una cuenta con la "calificación" como "cálida". Compruebe si el registro de contacto se crea con tres campos especificados.

Al hacer clic en "Guardar", puede ver que "Contacto" se crea con tres campos. Ir a la pestaña "Contactos".

Podemos ver que se crean tres campos. Vaya a la pestaña "Detalles" para ver los campos.

Escenario 3: antes de la actualización

Cuando la campaña se actualiza con el tipo de "Conferencia", disparamos un desencadenante que actualiza el campo "Estado" a "Completado" [Objeto - Campaña].

disparar antes_update_trigger en la campaña (antes de la actualización)
para (campaña campaña_iter: disparador.Nuevo)
// verifique si el tipo es 'conferencia'
if (campaña_iter.Type == 'conferencia')
// Actualizar el estado a 'completado'
campaña_iter.Status = 'completado';


Primero, iteramos los registros de la campaña y verificamos si el "tipo" es "conferencia" o no. Si es "Conferencia", actualizamos el campo "Estado" a "Completado".

Caso de prueba:

Vaya a la pestaña "Campañas" desde el lanzador de aplicaciones y abra cualquier registro existente.

Este registro es de tipo "seminario web" y su estado está "planificado". Ahora, edite este registro actualizando el tipo de "conferencia".

Podemos ver que el "estado" se actualiza a "completado".

Escenario 4: Eliminar (antes)

Cuando intentamos eliminar los registros del objeto de campaña cuando el estado está "completado" o el tipo es "conferencia", lanzamos un error de tal manera que no podremos eliminar los registros. Mostramos el error usando el método adderror () [objeto - campaña].

disparar delete_trigger en la campaña (antes de eliminar)
para (campaña Camp_iter: Trigger.viejo)
// Verifique si el estado == 'completado' o tipo == 'Conferencia'
if (CAMP_ITER.Estado == 'completado' || Camp_iter.Type == 'conferencia')
// especificar el mensaje de error.
Camp_iter.Adderror ('No puede eliminar este registro si el estado == completado o tipo == Conferencia.');


Caso de prueba:

Vaya a la pestaña "Campañas" del lanzador de aplicaciones y abra cualquier registro existente con el estado "completado" o con el tipo de "conferencia".

Haga clic en "Eliminar" en el menú desplegable a la derecha.

Podemos ver que se lanza el error y no se elimina.

Conclusión

El activador es un script de Apex que se dispara antes o después de las instancias de manipulación de datos. Basado en el evento que se especifica en el disparador, se dispara en objetos especificados en Salesforce. Aprendimos los cuatro escenarios diferentes para disparar el disparador tras la inserción, actualización y eliminación con diferentes ejemplos en diferentes objetos. Aquí, utilizamos los objetos de cuenta, contacto y campaña para la demostración. Puede seguir los mismos ejemplos en sus objetos personalizados.