Hola que tal, he tenido un problema que me ha querido romper la cabeza desde hace dias, explico:
Tengo un log transaccional que guardo en una BD SQLite, el proceso que hace el trabajo de conexion e inserccion en la misma está en el proyecto de datos para poder ser ejecutado desde cualquier trigger, este proceso es llamado desde cualquier lado en 4P para no liar al usuario de esperar a que termine, y pues otra razon para que SQLite tenga 1 entrada a la vez de escritura.
Cuando el proceso del LOG es llamado desde la instancia donde se encuentra no genera ningun error, mas sin embargo, si tengo un proceso en la caja de APP ejecutado en 4P tambien y éste actualiza una tabla L/E, el proceso del LOG que es llamado desde el trigger toma como instancia que lo ejecuta la de APP y jamas llega a culminarse, nisiquiera muestra el usuario del enganche, y no entiendo el porque si es un proceso ejecutado siempre en 4P. muestro una imagen del problema:
La ejecución de procesos, o mejor dicho Tareas en 4P, tiene unos comportamientos peculiares que hay que conocer, y como casi siempre se descubren a base de prueba y error, porque la documentación sigue siendo en este tema y otros un desastre.
Hace 3 años, en Soporte tampoco lo tenían muy claro, y después de insistir en que algo falllaba se llegó a esta conclusión:
Un proceso ejecutado en 4º plano queda desvinculado del enganche que lo lanza; a los efectos, es lo mismo que una función ejecutada de forma remota o una tarea programada.
Cuando se ejecuta el proceso el servidor crea un enganche temporal para gestionarlo, en ese momento, conoce el proyecto donde está el objeto y lo que hereda, pero no conoce todo lo que tiene por encima.
Estoy seguro que este párrafo lo incorporaron en la documentación, pero ahora soy incapaz de encontrarlo. ¡¡¡ La búsqueda en doc.velneo.com es una tomadura de pelo!!!
Los efectos de esto es que efectívamente, depende desde donde llames el proceso en 4P, verás que los mensajes en vAdmin no tienen Usuario ya que el enganche es nuevo y neutro.
En 4º plano el mainProject es siempre el proyecto que contiene el proceso. Si desde el proyecto APP ejecutas un proceso en 4P que está en el proyecto DAT, el mainProject es el proyecto DAT, no el APP como cabría esperar.
Seguramente tu problema está relacionado con esto, ejecutas desde APP un proceso en 4P que a su vez desencadena la ejecución del un proceso en 4P desde el Trigger en el DAT. Me parece que en el Trigger ya no existe el valor sysUserName porque viene de una instancia APP creada sin enganche.
De todas formas, que te lo aclaren en Soporte/Desarrollo que seguro te lo explican mejor.
Hola Paco, gracias por tomarte un tiempo, soporte aun no me responde.
El proceso que se ejecuta en principio en 4P está en la caja de APP, éste realiza modificaciones a una tabla, en casi todos los triggers de las tablas se ejecuta el otro proceso que gestiona con SQLite en 4P tambien y éste está en la caja de datos, siendo ejecutado a ese nivel me he de esperar siempre que el mainProject sea la caja de datos, pero no ocurre… pasa lo que se muestra en la imagen… y peor es el caso que nunca se concreta o acaba, siempre queda en proceso.
Buehh os comento que no me sirvió la explicación de soporte al decirme que en la versión 27 quedo solucionado, me han dicho lo mismo con la incidencia 5025. De igual forma lo ejecute en esa version y el mainProject se mantenía como en la imagen que adjunte al inicio y nunca acababa el proceso por lo que decidí crear una solución con una caja de datos y enviarle todo lo necesario con una función remota para que se conectara e hiciese el trabajo con SQLite, hasta el momento siendo en el mismo servidor o en otro camina bien.