Pregunta

Entiendo que un complemento registrado para la validación previa se ejecuta fuera de la transacción de la base de datos, pero no estoy seguro de poder pensar en un escenario en el que esto sería preferible a la preoperación. ¿Alguien puede darme un ejemplo de dónde podría ser útil el registro de pre-validación?

¿Fue útil?

Solución

Tenemos algunos complementos registrados en el evento 'Prevalidación', aunque esto está en premisa, no en línea.

No escribí estos complementos específicos, pero puedo describir uno y dar la justificación para usar 'prevalidación' en lugar de 'preoperación'.

Entidad: cuenta

Evento: Eliminar

Lógica: el complemento ejecuta la validación previa. Comprueba que no hay contactos que hacen referencia a ninguna de las direcciones de la cuenta. Si se encuentra alguno, detenga la ejecución. Si no, elimine la cuenta.

p.ej

La cuenta 'StackOverflow' tiene la dirección 'Jeff Attwood's House' y Contact 'Glosrob'. 'Glosrob' está haciendo referencia a 'Jeff Attwood's House' a través de una personalización. Si un usuario selecciona para eliminar 'stackoverflow', debemos detectar 'GlosRob' está haciendo referencia a una dirección y evitar la eliminación.

El razonamiento detrás de esto fue que el desarrollador descubrió que en la etapa de preoperación, algunos aspectos del Delete ya habían sucedido, a saber, la eliminación de Cascade. La lógica del complemento requiere que verifiquemos todos los contactos: al registrarse en la preoperación, los contactos en la cuenta ya se habían eliminado, lo que hace que el cheque sea obsoleto.

En nuestro escenario anterior, cuando el usuario seleccionado para eliminar la cuenta 'stackoverflow', el contacto 'GlosRob' se eliminaría antes de que se ejecute el complemento. Por lo tanto, cuando el complemento se ejecutó después, permitiría la eliminación.

Como con la mayoría de las cosas en CRM, todo se reduce a requisitos y soluciones, pero creo que eso le da una idea de por qué/cuándo puede usar una etapa de prevalidación. Tenemos algunos otros con un razonamiento similar que se ejecuta en el evento 'Eliminar'.

Otros consejos

Sé que es una publicación muy antigua, vino aquí mientras buscaba una respuesta para la misma pregunta ... luego encontré un punto clave de MSDN sobre el mismo tema y pensé que sería útil si publico el infromo aquí para todos. .

El complemento de prevalidación ocurriría antes de las comprobaciones de seguridad. Para Ej: Si una cuenta es una cuenta "VIP" y no desea que este registro de cuenta se elimine (sin importar que sea un súper usuario/administrador), entonces esto mejor puede suceder en la validación previa. Porque en ese momento no te preocupa realmente quién es el usuario y qué tipo de permisos tiene (incluso él puede no tener ningún permiso para eliminar ningún registro en el sistema), CRM irá y verificará la base de datos de los roles de seguridad del usuario Durante la operación previa y ahí es donde ocurriría el primer golpe de base de datos. Antes de eso, podemos detener la exucución del complemento en función de nuestras reglas de validación.

Espero que tenga sentido...

Gracias

Saludos Srikanth

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top