es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Desencadenador Apex disparando en campos referenciados de manera dinámica a partir de metadatos personalizados.

Me estoy encontrando con una barrera de habilidades al intentar resolver este problema actual. Tengo un objeto personalizado (Acq__c) que tiene una serie de campos de búsqueda en él a Usuario. Cuando se actualizan estos campos, se actualizan también objetos secundarios relacionados para reflejar el nuevo Usuario asociado. Esta parte inicial está bien. Sin embargo, hay una necesidad de poder expandir los campos en los que esta funcionalidad trabaja. Entonces, si se construye un nuevo campo de búsqueda, se puede otorgar fácilmente la misma funcionalidad. Esperaba hacer esto utilizando Tipos de Metadatos Personalizados. En este caso, el trigger que controla la funcionalidad de actualización consultaría los registros del Tipo de Metadatos Personalizados, encontraría todos los campos en el objeto Acq__c que deberían tener esta funcionalidad de actualización, probaría si se han actualizado en la declaración DML y luego se activaría apropiadamente según cuáles se hayan actualizado. Esto permitiría a cualquier usuario que cree nuevas búsquedas en el futuro agregarlas al objeto Acq__c y luego actualizar los Metadatos para expandir el trigger al nuevo campo.

La parte directa del trigger, la actualización, etc. – No tengo problemas con eso. Una vez que consulto los metadatos personalizados y tengo una lista de registros que contienen cada uno una API para un campo en el objeto Acq__c, no estoy seguro de cómo usar esta lista de registros para ver qué campos han sido actualizados y luego necesitarían activar la actualización del objeto secundario.

Espero que todo eso tenga sentido. Cualquier ayuda sería muy apreciada.

N

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en disparadores, Salesforce y Apex, el desafío que enfrentas con el objeto personalizado (Acq__c) se puede resolver utilizando los Tipos de Metadatos Personalizados. El objetivo es permitir que el disparador que controla la funcionalidad de actualización consulte los registros del Tipo de Metadatos Personalizados, encuentre todos los campos en el objeto Acq__c que deben tener esta funcionalidad de actualización y pruebe si se han actualizado en la instrucción DML. Entonces, el disparador debería activarse apropiadamente según los campos que se hayan actualizado.

    Si bien es posible que no tengas problemas con la parte sencilla del disparador, no estás seguro de cómo utilizar la lista de registros derivada de los Metadatos Personalizados para ver qué campos se han actualizado y activar la actualización del objeto secundario en consecuencia.

    Para resolver este problema, necesitas utilizar una combinación de Apex dinámico y reflexión. Específicamente, utilizarías el método get() de la clase SObject para obtener los valores de los campos de forma dinámica. Luego, utilizarías el método getDescribe() de la clase SObjectField para obtener de forma dinámica la información de descripción del campo. Con la información de descripción, puedes determinar el tipo de campo y realizar la actualización apropiada en el objeto secundario.

    En general, este enfoque te permite actualizar el objeto personalizado y también ampliar la funcionalidad para trabajar en cualquier campo de búsqueda nuevo que se pueda agregar en el futuro. Con Apex dinámico y reflexión, puedes determinar qué campos han cambiado y activar la actualización apropiada del objeto secundario.

Comments are closed.