Bproc de Scheduler

Bproc de Scheduler

¿Qué es?

Se trata de un tipo de Bproc que permite integrar el sistema GO con funcionalidades propias o de terceros, permitiendo a un usuario de FINNEGANS desarrollarlas para que se ejecuten automáticamente en un momento específico con una frecuencia determinada.

Su objetivo es extender las funcionalidades estándar con soluciones personalizadas de clientes.

¿Cómo funciona?

Un Bproc de Scheduler puede ser programado para que se ejecute de acuerdo a un cronograma semanal determinado.

Dispone de un cronograma de ejecución que indica qué días de la semana debe ejecutarse, si se ejecuta por única vez en el día o bien debe repetirse, en cuyo caso se indica con una frecuencia en minutos debe hacerlo. Por último el rango horario en que debe iniciar su ejecución (se puede indicar un mismo horario para todos los días de la semana).

Una vez habilitado el Bproc de Scheduler, un servicio se ocupa de monitorear todos los Bprocs y ejecutarlos cuando corresponda de acuerdo a su programación.

Para el caso de ocurrir un error en su ejecución, el servicio envía un email de Alerta a los usuarios configurados en el Bproc para este fin.

Ventajas de disponer de Bproc de Scheduler

La integración de aplicaciones con Bproc puede ofrecer varios beneficios significativos para una organización. Aquí hay algunos de los beneficios clave de utilizar una herramienta sistémica para lograr esta integración:

  • Automatización de Tareas: permite automatizar la ejecución de procesos y tareas, lo que reduce la necesidad de intervención manual. Esto ahorra tiempo y minimiza errores humanos.
  • Mayor Eficiencia: Al programar tareas y procesos de manera eficiente, se puede optimizar el uso de recursos y evitar la duplicación de esfuerzos.
  • Gestión Centralizada: permite centralizar la administración y programación de tareas desde un solo lugar, lo que facilita el control y la supervisión de las operaciones programadas.
  • Gestión de Errores: Incluye capacidades para gestionar errores, como la repetición de ejecuciones fallidas y notificaciones de errores graves.
  • Monitorización y Registro: ofrece herramientas de monitorización y registros detallados de la ejecución de cada Bproc, lo que facilita la solución de problemas y la generación de informes.
  • Ahorro de Costos: La automatización reduce los costos operativos al minimizar la necesidad de mano de obra para tareas repetitivas y al aumentar la eficiencia de los recursos.
  • Escalabilidad: son escalables y pueden manejarse un gran número de Bprocs, lo que es esencial para organizaciones en crecimiento o con cargas de trabajo cambiantes.
  • Flexibilidad: permite adaptar y personalizar los Bprocs según las necesidades específicas de cada cliente, lo que permite una mayor flexibilidad en la gestión de tareas.
  • Integración: permite integrarse con otras herramientas y sistemas a través del uso de código java (Esquema de trabajo Low Code), lo que facilita la automatización de flujos de trabajo complejos y la colaboración con diversas aplicaciones.
Aspectos a tener en cuenta

Seguridad y Privacidad:

  • Es importante señalar que la integración con aplicaciones, sobre todo cuando estas son de terceros, puede presentar desafíos en términos de seguridad y mantenimiento, por lo que es crucial brindar soporte a los clientes respecto de las aplicaciones que quieren integrar, para que las mismas se gestionen adecuadamente y no afecten la integridad del sistema.
  • Los clientes deben ser informados de las implicaciones de seguridad y privacidad que representa compartir datos sensibles o no con otras aplicaciones.

Caso de Uso

Un caso de uso puede ser, por ejemplo, crear una especie sistema ETL, que mueve automáticamente de forma diaria, en un horario de baja demanda (por ej: 2 a.m.), los datos de la base de datos transaccional a un sistema Data Warehouse en la nube.

El BPROC “Actualizar Data Warehouse” del tipo Scheduler realiza los siguientes procedimientos:

  1. Extracción de datos: En este paso, los datos se recopilan y se extraen de diversas fuentes de datos, el origen de los datos pueden ser múltiples como las bases de datos transaccionales, archivos planos, APIs de terceros, Planillas. La extracción implica recuperar los datos de estas fuentes en su formato original.
  2. Transformación de los datos: Una vez que los datos se han extraído, se realizan unas series de transformaciones sobre ellos. Estas transformaciones incluyen limpieza de los datos, eliminación de redundancia, conversión de formatos, nuevos datos calculados y agregado de la metadatos. El objetivo es preparar los datos de manera que sean coherentes y útiles para su posterior análisis o almacenamiento.
  3. Carga de datos: En esta tercera etapa, los datos transformados se cargan en la base de datos del Data Warehouse.
  4. Comunicación: Si ocurriera algún tipo de error al ejecutar cualquiera de los pasos anteriores, el servicio notifica acerca del problema a los usuarios configurados para Alertas en la configuración del propio Bproc.

Configuración de un Bproc Scheduler

Programación:
Permite establecer qué días de la semana debe ejecutarse y con qué frecuencia debe repetirse su ejecución si corresponde dentro de estos días.

Parámetros:

  • Cuales son los días de la semana
  • Si no se repite en el día
    • El horario de ejecución
  • Si se repite en el día
    • El rango horario (cualquiera de estas dos opciones)
      • Desde y Hasta
      • Desde y Duración (Se calcula el Hasta como Desde + Duración)
    • La frecuencia de ejecución:
      • Minutos de espera entre ejecución y ejecución

Script de Ejecución:
El configurador brinda un área de texto llamado Script donde un usuario desarrollador puede codificar con lenguaje Java el proceso de negocio que debe ejecutarse.

IMPORTANTE: Para que el código funcione correctamente se debe implementar cumpliendo con la interfaz correspondiente. La misma se describe más adelante en la sección de Información técnica.

Informe de Alerta y Errores
El servicio que se ocupa de la ejecución de estos Bprocs según cronograma, envían una notificación por mail, si ha ocurrido un error al efectuar la ejecución.

El Bproc te permite configurar a cuales emails debe enviar las alertas correspondientes.

Pasos a seguir:

  1. Creación del Bproc
    Se crea un Bproc de Schedule que inserta un registro en el log del sistema.

  2. Se ingresa a la vista de Bprocs:
    MENÚ → Configuración →Diseño de espacio de trabajo → DICCIONARIOS → Bproc

  3. Seleccionamos crear un bproc nuevo y completamos los campos necesarios para el tipo Scheduler

  4. Configurar la solapa “Programación”

  5. Se agregan los usuarios de aviso de Alerta por errores de ejecución

  6. Al guardar el Bproc como Activo, este será ejecutado por el servicio cuando su programación lo indique.

  7. El usuario puede ingresar al monitor de Scheduler y desde allí ver el estado de sus últimas ejecuciones, y Activar o Desconectar Bprocs existentes
    MENÚ → Configuración →Diseño de espacio de trabajo → ACTUALIZACIONES → Monitor de Bproc de Schedulers

Especificación técnica: Bproc de Scheduler

En el campo Script, se debe codificar un fragmento de código en Java a través de la cual se puede:

  • Interactuar con la base de datos y realizar operaciones a través de llamadas de mensajes SQL
  • Llamar a alguna API de Finnegans
  • Llamar a una API de un sistema externo
  • Cualquier tipo de operación soportada por el lenguaje Java

Codificación del Script:


String sessionID = params.getSessionID();

DBHelper dbh = params.getDBHelper();

try {

// Código Java

} catch (Exception e) {

throw e;

}

Descripción de instrucciones relevantes:

Se usan para para poner o informar la ejecución del código dentro del contexto de una sesión y base de datos. Ambos siempre deben informarse

String sessionID = params.getSessionID();

DBHelper dbh = params.getDBHelper();

Ejemplo de cómo usar el objeto dbh arriba creado:

dbh.executeCommand("Sentencia SQL”);

El desarrollador debe reemplazar “// Código Java” por el código Java correspondiente, ingresando el código directamente, y/o utilizando la ayuda del selector de fórmulas provisto por la interfaz.

Llamado a una API desde código Java:

El tipo de Bproc Scheduler no cuenta con la posibilidad de llamar/ejecutar de forma directa a una API, aunque se puede resolver usando código java embebido en el script del Bproc.

Ejemplo:

Este código Java se utiliza para realizar una solicitud GET a una URL específica (“https://cat-fact.herokuapp.com/facts”), recibir la respuesta del servidor en forma de datos de texto y luego imprimir esa respuesta en la consola.


URL obj = new URL("https://cat-fact.herokuapp.com/facts");

HttpURLConnection conn;

conn = (HttpURLConnection) obj.openConnection();

conn.setRequestMethod("GET");

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String inputLine;

StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null) {

response.append(inputLine);

}

in.close();

System.out.println(response.toString());

Aquí está el desglose paso a paso del código:

Código requerido para el envío de un request a través del protocolo https


URL obj = new URL("https://cat-fact.herokuapp.com/facts");

En esta línea, se crea un objeto URL llamado obj que representa la dirección URL a la que se realiza una solicitud HTTP GET.
En este caso, la URL es “https://cat-fact.herokuapp.com/facts”.


HttpURLConnection conn;

Se declara una variable conn de tipo HttpURLConnection. Esta variable se utiliza para establecer y gestionar la conexión HTTP con la URL.


conn = (HttpURLConnection) obj.openConnection();

Aquí se establece una conexión HTTP a la URL proporcionada. La conexión se abre utilizando el método openConnection() del objeto URL, y luego se realiza un casting explícito a HttpURLConnection para permitir el uso de métodos específicos de HTTP.


conn.setRequestMethod("GET");

Se establece el método HTTP que se utilizará para la solicitud. En este caso, se utiliza el método GET para recuperar datos de la URL, pero podría usarse un POST si el volumen de la información a enviar es muy grande


BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

Se crea un objeto BufferedReader llamado in para leer la respuesta del servidor. La respuesta se obtiene a través del InputStream de la conexión HTTP conn, que se convierte en un InputStreamReader para facilitar la lectura de caracteres.


String inputLine;

Se declara una variable inputLine para almacenar cada línea de la respuesta recibida del servidor.


StringBuilder response = new StringBuilder();

Se crea un objeto StringBuilder llamado response que se utiliza para construir la respuesta completa del servidor a medida que se leen las líneas.

Código requerido para dar tratamiento al response


while ((inputLine = in.readLine()) != null) { response.append(inputLine); }

El siguiente bloque de código utiliza un bucle while para leer línea por línea la respuesta del servidor y agregarla al StringBuilder response hasta que no haya más datos que leer. El bucle se ejecuta mientras inputLine no sea nulo, lo que significa que se siguen leyendo líneas de la respuesta hasta que se alcance el final de los datos.


in.close();

Una vez que se ha leído toda la respuesta, se cierra el BufferedReader para liberar los recursos.


System.out.println(response.toString());

Finalmente, se imprime la respuesta completa del servidor en la consola. response.toString() se utiliza para convertir el contenido del StringBuilder en una cadena de texto y se muestra en la consola estándar.