Acumatica, posicionado como un ERP (Enterprise Resource Planning) de mercado medio, puede implantarse en una amplia variedad de empresas, ya sean grandes, medianas o pequeñas. A medida que las empresas crecen, aumenta la cantidad de datos que necesitan gestionar. Sin embargo, en mi experiencia en el desarrollo de código personalizado en la plataforma Acumatica, me encuentro con un número significativo de organizaciones con las que trabajo que no dan abasto a la hora de gestionar y procesar datos.
Acumatica dispone de una amplia variedad de pantallas de procesamiento para realizar diversas tareas "en masa" y, además, cuenta con un marco sólido pero fácil de seguir para implementar sus propias pantallas de procesamiento. Sin embargo, los registros se procesan de forma secuencial (1,2,3, etc.). Afortunadamente, es posible habilitar el procesamiento paralelo para clientes con grandes necesidades de procesamiento de datos.
El procesamiento paralelo aprovecha el hecho de que las aplicaciones pueden utilizar más de un hilo de procesamiento a la vez. Piense en los días anteriores a los ordenadores, en los que los oficinistas procesaban manualmente las transacciones a mano. ¿Cómo se aceleraba el número de transacciones que se podían registrar? O bien se buscaba por todas partes al empleado milagroso que fuera superrápido, o simplemente se contrataba a más empleados y se repartía el trabajo equitativamente entre ellos. Acumatica puede configurarse de forma similar.
Para habilitar el procesamiento Paralelo, necesita añadir las siguientes claves al archivo web.config bajo el nodo Configuración/Ajustes:
GIST: https://gist.github.com/lekker-solutions/320b32b5eeb15e36ce29957095862b3d
Para probarlo, vamos a añadir estas claves al archivo web.config y crear una pantalla de procesamiento básica que procese una lista de registros:
GIST: https://gist.github.com/lekker-solutions/46b8a010c4ceae41bea63707b8e9ba22
Aunque hayamos añadido las claves, la pantalla de procesamiento sigue devolviendo la lista completa de Lotes GL cuando se selecciona "Procesar todo".
Esto se debe a que las teclas sólo establecen una regla global en el procesamiento. Todavía tiene que ser habilitado en su pantalla personalizada en sí. El siguiente código muestra cómo hacerlo:
GIST: https://gist.github.com/lekker-solutions/33552d7e645905d0a995a9df7f56db49
Ahora vamos a intentar procesar el botón todo:
Cuando se mira el resultado de la pantalla de procesamiento, se puede ver que todos los registros han sido procesados a pesar de que ese hilo que cogimos sólo vio 10:
A continuación se muestra un diagrama que ilustra la diferencia entre ambos, y dónde se encuentra el punto de interrupción en el código:
Durante el procesamiento secuencial, el hilo (también conocido como el empleado) veía toda la lista de elementos a procesar. En el procesamiento paralelo, el hilo sólo veía el número máximo de elementos (especificado a nivel máximo en el archivo web.config y adicionalmente en las opciones de procesamiento paralelo a nivel de pantalla).
El procesamiento paralelo, aunque no es una bala de plata, puede aumentar significativamente la capacidad de procesamiento para los usuarios de Acumatica que trabajan con grandes cantidades de datos. Con unos pocos cambios en el archivo web.config, puede habilitarlo fácilmente tanto en el código ERP base como en su código personalizado. No hay necesidad de gestionar sus propios hilos y las demás complejidades que ello conlleva.
Espero que este artículo le ayude con el volumen de procesamiento de datos que aumenta a un ritmo cada vez más rápido en este mundo en transformación digital.
¡Feliz codificación!