Hook (Puntos de inserción en procesos)

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.

Hooks.rar (49.2 KB)

1 me gusta

Muchas gracias Manuel!

Un grandísimo aporte.

Buenos días Manuel

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

¿Puede haber algún problema?

Gracias

Buenos días Gonzalo.

Pues lo he grabado esta mañana con 7.19.1 no se si podrá ser por eso.

¿Tienes algún servidor de desarrollo en esa versión para probar?

Pues no tengo niguno de momento. tengo que actualizar, pero lo estaba retrasabdo. Una razón más para actualizarme.

Si alguien lo ha probado y puede confirmar que es por la versión me quedaría más tranquilo.

Gracias y un saludo

Hola Gonzalo,

Yo lo he instalago en un vServer en cloud en 7.19 y sin problemas.

Muchas Gracias Manuel , eres un Crack!!

Hola Manuel.

Gracias por la aportación.
Un par de cosas:

  • ¿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.

Saludos
Paco Satué

Buenos días Paco.

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.

Hola Manuel.

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.

Saludos
Paco Satué

hookingSearch.zip (744 Bytes)

Gracias Paco, ahora voy algo justo de tiempo. En cuanto pueda lo implemento y los pruebo.

Saludos

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.

Adjunto imagen de los mensajes. El 2Generación ya es el proceso del Hook
Screenshot_1

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