septiembre 03, 2009 martosfre
Que gusto poder volver a los tiempos a postear algo....con esto del cambio a nuevo trabajo y las clases en la poli me han alejado un poco. Pero ya estoy de vuelta y espero no alejarme....En todo proyecto de misión crítica( ejm. instituciones bancarias, financieras etc.) donde se necesita realizar varios procesos de de negocio con grandes volúmenes de datos una vez acabo el período de trabajo como son la consolidación de los mismos, cierres de cajas etc es muy necesario contar con procesos batch que ejecuten estos procesos eficientemente de una forma controlada sin necesidad de la participación del usuario ya que por lo general son realizados nocturnamente y toman un tiempo considerable.
Por la misma concepción de lo que representa un proceso batch muchas empresas han adoptado realizarlo directamente en la bdd sin utilizar programas adicionales que retardarían el mismo en la sola recuperación y disposición de los datos, otras han construído sus propios programas y otros como en mi caso estamos tratando de encontrar una solución "diferente" o mixta para lo cual en este post les voy a hablar de un framework llamado SpringBath el cual pretendo utilizar para encaminar mi requerimiento.
SpringBatch
Es un framework open source que permite simplificar el desarrollo de procesos batch de una manera eficiente , robusta y escalable. Entre las características que tiene el framework podemos describir las siguientes:
- Procesamiento batch concurrentes (paralelos)
- Procesamiento batch secuenciales (pasos)
- Procesamiento batch masivo
- Restauración manual o planificado luego de una falla
- Procesamiento parcial
- Procesamiento transaccional
- Procesamiento batch planificado (utiliza frameworks scheduler como Quartz)
Arquitectura
Funcionamiento
El funcionamiento de SpringBatch puede resumirse en el siguiente diagrama:
En donde:
JobLauncher: Representa una interfaz que permite ejecutar la tarea para lo cual recibe parámetros (JobParameters)
Job: Es la entidad que encapsula todo el proceso batch, el cual representa un conjunto de pasos (Steps)
Step: Es un objeto del dominio que encapsula un independiente y secuencial pase de un proceso batch, el cual contiene toda la información necesaria para controlar el proceso batch.
Job Repository: Es el mecanismo persistente que provee todas las operaciones CRUD para el JobLauncher, Job y implementaciones de pasos.
Item Reader: Representa las diferentes entradas los cuales pueden ser en varios formatos como archivos, xml, base de datos los cuales pueden deben ser proveídos uno a la vez.
ItemWritter: Representa la salida para el Step el cual es uno a la vez, es similar al Item Reader pero de forma inversa
ItemProcessor: Represeanta el procesamiento de negocio de un item.
Este representa un resumen pequeño que puede servir para dar una noción acerca de SpringBatch, en el próximo post trataré de describir el proceso técnico espero que les sirve de referencia.
Saludos, dios los bendiga