Procesos en tercer plano


([N2] zenonburgos) #1

Hola foro como están, quiero consultar sobre los procesos en tercer plano. Desarrollando mi sistema de inventario me encontré con momentos amargos en los que no encontré una respuesta clara a mis consultas y es sobre el manejo de saldos en un kardex, algo que solo pude lograr a través de un proceso que evalúa las entradas y las salidas y me modifica un campo también llamado Saldo en mi tabla. El único problema fue que para calcular ese saldo en la nube tardaba por lo menos 5 minutos en hacerlo -¿se imaginan dar clic a un artículo y esperar 5 minutos para ver su registro de movimientos? mis jefes me matarían-, pues bien, llegué a descubrir lo que es 1º, 2º y 3º plano, disparar mi proceso desde otro proceso en tercer plano y zas! la consulta no tarda ni 2 segundos. Mi pregunta: ¿de qué me sirve entonces el primer plano? presiento que detrás de este gran logro que es el tercer plano se esconde una gran desventaja para mi, ¿podrían aconsejarme sobre lo que me espera? que pasará con 30,000 registros? ahora en mis pruebas tengo apenas 50 y hasta ahora en cuanto más registros agrego no veo que se vaya poniendo lento y eso me hace ser optimista. Uds me dirán. Gracias a todos.


([N2] ramiro) #2

Buenas tardes:

Programar para la nube es un juego de constantes equilibrios entre lo que se debe hacer en el lado del Cliente y lo que se debe hacer en el lado del Servidor.

En términos generales debes evitar presentar grandes listas de registros en el lado del cliente (la información tiene que viajar desde el servidor al cliente) pero, sobre todo, debes evitar las modificaciones masivas de datos en esa parte puesto que la diferencia de rendimiento es brutal respecto de hacerlo en el servidor (el tercer plano). Si tienes que seleccionar listas de registros en la parte cliente y después modificarlos, crea un manejador del proceso, pásale la lista de registros y ejecuta el manejador en tercer plano ¡siempre!

El proceso de recálculo de stock normalmente se desencadena artículo a artículo: pues bien, crea un proceso que haga las tareas que necesites y ejecútalo siempre en tercer plano a través de un manejador al que le has pasado la ficha del artículo o la lista de movimientos a recalcular. Lo importante es que las modificaciones las hagas en donde están los datos: en el servidor.

Cumpliendo bien las reglas de dónde hacer cada cosa, el rendimiento en la nube es satisfactorio incluso con grandes volúmenes de datos.

Saludos. Ramiro


([N2] zenonburgos) #3

Gracias verdaderamente por tus consejos, pensé que tendría cierta limitación algo así como que Velneo me pondría límite por usar demasiado su servidor (cosas de novato verdaderamente), seguiré entonces utilizando mis procesos y búsquedas en tercer plano sin preocupación.


([N2] zenonburgos) #4

Hola de nuevo, creo que llegué al temido momento que me esperaba con el ventajoso tercer plano. Resulta que he hecho un drag & drop en dos rejillas, en la primera que tiene como origen una tabla temporal importo artículos desde un archivo txt, a la segunda arrastro los artículos de la primera y debido que lo hacía en primer plano tardaba alrededor de 5 minutos en pasarlos, por lo cual decidí llamar el proceso original desde otro proceso pero en tercer plano y ocurrió lo que me temía, me despliega un mensaje de que no se ha podido conectar al servidor y después de pasar varios minutos tratando de conectarme de nuevo con vDevelop o vAdmin infructuosamente decidí revisar en mi cloud y el servidor estaba detenido. Esta prueba la hice varias veces y volvió a funcionar cuando dejé de llamar el proceso en tercer plano desde otro proceso (como estaba originalmente). Que creen que ocurre? como ejecuto un proceso directamente en tercer plano? ya que creo que lo que detecta mal es que llame un proceso desde otro.


([N2] AyudaVelneo) #5

Hola zenonburgos:

No hay ningun problema en llamar a un proceso desde otro proceso. Para ejecutar procesos en tercer plano lo mas habitual es llamar a ese proceso desde otro proceso en primer plano.

Lo que habria que ver es que ejecutas en cada uno de los procesos y sobre todo como lo ejecutas.

Un saludo


([N2] zenonburgos) #6

Anexo imagen para que me ayuden. Gracias.



([N2] AyudaVelneo) #7

Hola Zenonburgos:

Este proceso… ¿desde donde lo ejecutas?.. En la primera línea, aunque lo tienes comentado, llamas al mismo proceso.

Además si te fijas en el destino del proceso tienes “Lista”… sin embargo en la última línea tienes puesto “Añadir ficha a la salida”… Si es de tipo lista, el proceso espera que devuelvas una lista.

Un saludo


([N2] zenonburgos) #8

Hola, me disculpo por la poca explicación de mi proceso. Lo que está comentado es el resultado de una serie de pruebas, lo que sucede es que dupliqué este mismo proceso para llamarlo desde otro… en fin un lío. Tal como está es como me funciona sin llamarlo desde otro proceso, este proceso es llamado desde el drop de la segunda rejilla que es en donde arrastro los artículos de la tabla temporal. Aunque funciona correctamente voy a ponerle atención a lo que acabas de aconsejarme. Gracias