Es un “plugin” heredable que permite definir puntos de inserción, puntos de ejecución, hooks, anclajes, como mejor se entienda.
Nace de la necesidad de poder ejecutar determinados procesos sin tocar el proyecto base la solución.
Su declaración y mantenimiento es realmente sencillo.
Un solo proceso javascript llamada HOOK_XXXX con el origen que se necesite
Añadir un registro al panel de mantenmiento de hooks
En el rar viene un documento con las instrucciones e imágenes.
Lo primero, gracias por la aportación. Seguro que le sacaré partido.
Pero tengo un problema. Cuando instalo la solución me crea una solución sin nombre y sin instancias de aplicación o datos. Tengo el servidor con la versión 7.18
¿Has contemplado que cada proyecto que hereda el Hook pueda ejecutar un proceso distinto?
Por ejemplo, tenemos un proyecto base PROY_BASE que heredan tanto el proyecto PROY_01 como el PROY_02. Para el mismo HOOK_BASE quiero que el PROY_01 ejecute un proceso PROY_01/PRO_01 y que el PROY_02 ejecute un proceso PROY_02/PRO_02
Creo que la función getAllHooks() no busca en toda la cadena de herencia. Al no ser recursiva solo busca en el primer nivel de herencia.
Con tiempo lo miro con más detalle y ya te cuento.
Si PROY_01 y PROY_02 tienen instancias de datos distintas si funcionará por que hooks es una tabla más.
Ahora bien, si ambos proyectos comparten las instancia de datos del proyecto PROY_BASE si habrá un problema. Me refiero, debería salir el mensaje de proceso inexistente ya que el PROY_01 no tiene acceso al proceso que estará declarado en PROY_02.
Te hablo de manera teórica, la verdad que no he probado.
Con respecto a getAllHooks, en teoría si debería funcionar. No uso recursividad, si no que voy llamando a la función getHooks al que le paso el proyecto. getAllHook recorre todos los proyectos heredados llamando a la misma función. Igualmente lo reviso.
Gracias por los apuntes, muy interesante el tema de la herencia.
En mi caso, lo normal es que los proyectos PROY_01 y PROY_02 compartan la misma tabla HOOKS que está en la instancia de datos de PROY_BASE.
PROY_BASE puede contener toda la lógica común de la empresa y los proyectos PROY_01 y PROY_02 pueden ser el ERP y el CRM.
Los requisitos serían:
El formulario HOOKERS se debe poder ejecutar desde cualquier proyecto de la Herencia
Los HOOKS estarán normalmente en el proyecto PROY_BASE, aunque no es obligatorio
Los Procesos que se ejecutan desde un HOOK deben poder estar en cualquier proyecto de la Herencia
Teniendo en cuenta esto:
Si desde el proyecto PROY_01 añadimos un Proceso PROY_01/PROCESO_01 al HOOK_BASE_A, entonces el proyecto PROY_02 no deberá poder editar ese registro de la tabla HOOKERS y si podrá añadir un Proceso PROY_02/PROCESO_02.
Tened en cuenta que getAllProcesos() devuelve los procesos a los que cada Proyecto puede acceder.
Por lo tanto debe haber un sistema de detección de error para evitar que desde PROY_02 se intente ejecutar el proceso PROY_01/PROCESO_01 y viceversa.
En cuanto a lo de la recursividad, es necesario o de lo contrario los scripts getAll… fallan.
Adjunto el script hookingSearch.js corregido.
Compruébalo y me comentas.
Buenos días. Muchas gracias @manuel.rd por el aporte. Lo he instalado y la verdad es que es una herramienta magnífica.
Tengo no obstante un problemilla. En el trigger posterior al alta, ya tengo el id del registro en si. (lo muestro en un mensaje y me aparece). Después de ello lanzo el Hook y si leo el id no me muestra el valor.
Ahora si que me aparece. Desde el trigger posterior he lanzado un proceso que cargo lista del mismo vencimiento y lo modifico y creo una extensión. Me daba problemas modificar el vencimiento en el anterior al alta. Ahora parece que todo OK