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 tanto de Clientes, Partners o personal de servicio de FINNEGANS, desarrollarlas para que se ejecuten automáticamente en un momento específico con una frecuencia determinada.
¿Cómo funciona?
Consiste de una herramienta que pueda ser programada por un usuario cualquiera para que ejecute una funcionalidad propia o de tercero 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. 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 de scheduler, lo que facilita la solución de problemas y la generación de informes.
Configuración de un Bproc Scheduler
Cómo crear un Bprocs de Scheduler
-
Ir a Menú→ Configuración →Diseño de espacio de trabajo → DICCIONARIOS → Bproc
-
Muestra la grilla con todos los Bprocs creados separados por “Tipo”. Para crear uno seleccionar en “Nuevo”.
- Al ingresar, por default muestra el Bproc de Viewer, ya que en el campo “Tipo” está seleccionado Viewer. Cambiarlo por Scheduler y así mostrará todas las secciones con sus campos para completar el Bproc de Scheduler.
Sus secciones son: General, Programación e Informe Alerta y Errores.
- Sección General:
Se deben completar los campos:
- Nombre: el nombre que le asignamos a nuestro Bprocs de Scheduler
- Código: Identificador único del Bprocs de Scheduler.
- Activo: Se puede activar en el caso de seleccionar el círculo o desactivar en el caso de dejarlo vacío.
- Tipo: en este campo elegimos el tipo de bproc que estamos creando, en este caso seleccionamos el de “Scheduler”.
- Aplicación: Identificar a qué aplicación standar o a que app custom pertenece.
- Descripción: una breve descripción de la acción que realiza este bproc de Scheduler.
- Script: en este campo un usuario desarrollador puede codificar con lenguaje Java el proceso de negocio que debe ejecutarse.
Script:
En el campo Script, se debe codificar un fragmento de código en Java a través del cual se puede:
- Interactuar con la base de datos y realizar operaciones a través de llamadas a consultas 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:
Estructura del código:
String sessionID = params.getSessionID();
DBHelper dbh = params.getDBHelper();
try {
// Agregar código Java
} catch (Exception e) {
throw e;
}
Descripción de instrucciones relevantes:
String sessionID = params.getSessionID();
(Identificador de la sesión del usuario)
DBHelper dbh = params.getDBHelper();
(Conexión a la base de datos)
Ejemplo de cómo usar el objeto dbh(base de datos) arriba creado:
dbh.executeCommand("Sentencia SQL”);
El desarrollador debe reemplazar “// Agregar código Java” por el código Java correspondiente, ingresando el código directamente, y/o utilizando la ayuda de las plantillas de código provisto por la interfaz.
Para utilizar las plantillas de código seguir estos pasos:
- En el campo Script, debajo aparecen 3 botones. Seleccionar el botón “Incorporar función…”
- Seleccionar la plantilla de código que se necesita. En este caso utilizamos “Imprimir y enviar por mail un reporte”. Luego hacer click en “Aceptar” y listo.
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.
- Sección Programación:
Permite establecer cuándo y con qué frecuencia debe ejecutarse el proceso.
- Días: Permite seleccionar qué días de la semana debe ejecutarse.
- Estado: podes elegir “Activo” o “Suspendido”.
- Inicio
- Hora: el horario en que comienza a ejecutarse la tarea.
- De finalización
- Tipo: podes elegir ”Por hora final” o por “Duración”.
- Por hora final: si eliges esta opción tienes que indicar la hora en que finaliza la ejecución.
- Por duración: si eliges esta opción tienes que indicar los minutos que va a durar la ejecución.
- Frecuencia
- Repetir ejecución: seleccionar en caso que quieras que se repita la ejecución dentro del horario mencionado anteriormente.
- Frecuencia (En Minutos): si seleccionaste en “Repetir ejecución” indicar los minutos de espera entre ejecución y ejecución.
- Sección Informe 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. Se puede agregar 1 o más usuarios.
- Por último seleccionar en “Guardar” y listo, ya tenemos nuestro Bproc de Scheduler.